sql >> Database >  >> RDS >> Mysql

Hoe voeg ik in het voorjaar een klant toe met JDBC voor ClientDetailsServiceConfigurer?

Sla deze stappen niet over:

  1. plaats dit schema.sql in uw bronmap om te worden gedetecteerd door SpringBoot zodra u uw server start. Als u Spring Boot niet gebruikt, hoeft u zich geen zorgen te maken, importeer dit script gewoon vanuit een Mysql App Client (phpmyadmin,HeidiSQL,Navicat..)

    drop table if exists oauth_client_details; create table oauth_client_details ( client_id VARCHAR(255) PRIMARY KEY, resource_ids VARCHAR(255), client_secret VARCHAR(255), scope VARCHAR(255), authorized_grant_types VARCHAR(255), web_server_redirect_uri VARCHAR(255), authorities VARCHAR(255), access_token_validity INTEGER, refresh_token_validity INTEGER, additional_information VARCHAR(4096), autoapprove VARCHAR(255) ); drop table if exists oauth_client_token; create table oauth_client_token ( token_id VARCHAR(255), token LONG VARBINARY, authentication_id VARCHAR(255) PRIMARY KEY, user_name VARCHAR(255), client_id VARCHAR(255) ); drop table if exists oauth_access_token; create table oauth_access_token ( token_id VARCHAR(255), token LONG VARBINARY, authentication_id VARCHAR(255) PRIMARY KEY, user_name VARCHAR(255), client_id VARCHAR(255), authentication LONG VARBINARY, refresh_token VARCHAR(255) ); drop table if exists oauth_refresh_token; create table oauth_refresh_token ( token_id VARCHAR(255), token LONG VARBINARY, authentication LONG VARBINARY ); drop table if exists oauth_code; create table oauth_code ( code VARCHAR(255), authentication LONG VARBINARY ); drop table if exists oauth_approvals; create table oauth_approvals ( userId VARCHAR(255), clientId VARCHAR(255), scope VARCHAR(255), status VARCHAR(10), expiresAt TIMESTAMP, lastModifiedAt TIMESTAMP ); drop table if exists ClientDetails; create table ClientDetails ( appId VARCHAR(255) PRIMARY KEY, resourceIds VARCHAR(255), appSecret VARCHAR(255), scope VARCHAR(255), grantTypes VARCHAR(255), redirectUrl VARCHAR(255), authorities VARCHAR(255), access_token_validity INTEGER, refresh_token_validity INTEGER, additionalInformation VARCHAR(4096), autoApproveScopes VARCHAR(255) );
  2. Injecteer uw DataSource, authenticatieManager, UserDetailsService in uw OthorizationServer

    @Autowired private MyUserDetailsService userDetailsService; @Inject private AuthenticationManager authenticationManager; @Autowired private DataSource dataSource;
  3. U moet deze twee bonen maken

    @Bean public JdbcTokenStore tokenStore() { return new JdbcTokenStore(dataSource); } @Bean protected AuthorizationCodeServices authorizationCodeServices() { return new JdbcAuthorizationCodeServices(dataSource); }

    en vergeet alsjeblieft niet de @Configuration bovenop je AuthorizationServer-klasse

  4. Configureer uw client-apps die moeten worden gemaakt in uw mysql-database:clients.jdbc(dataSource).withClient("clientapp") .authorizedGrantTypes("password", "refresh_token") .authorities("USER") .scopes("read", "write") .resourceIds(RESOURCE_ID) .secret("123456");

    je hebt dit al gedaan.

  5. het belangrijkste (en ik denk dat je het vergeten bent ..) is:om je eindpunten te configureren met de AuthorizationServerEndpointsConfigurer:

    endpoints.userDetailsService(userDetailsService) .authorizationCodeServices(authorizationCodeServices()).authenticationManager(this.authenticationManager).tokenStore(tokenStore()).approvalStoreDisabled();

en dat is het man, nu zou het moeten werken;)

En voel je vrij om meer te vragen... Ik help je graag verder

Ik heb je een bericht gestuurd van tweeter!



  1. Decimaal datatype rondt de waarden af

  2. SQL ROWNUM hoe rijen tussen een specifiek bereik te retourneren

  3. Waarom zegt Postgres dat column niet bestaat?

  4. Resultaten beperken in Oracle