sql >> Database teknologi >  >> RDS >> Mysql

Hvordan tilføjer man en klient ved hjælp af JDBC til ClientDetailsServiceConfigurer i foråret?

Udfør venligst disse trin:

  1. læg dette schema.sql i din ressourcemappe for at blive opdaget af SpringBoot, når du starter din server. Hvis du ikke bruger spring boot ingen bekymringer bare importer dette script fra enhver 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. Injicer din DataSource, authenticationManager,UserDetailsService i din OthorizationServer

    @Autowired private MyUserDetailsService userDetailsService; @Inject private AuthenticationManager authenticationManager; @Autowired private DataSource dataSource;
  3. Du skal lave disse to bønner

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

    og glem ikke @Configuration oven på din AuthorizationServer-klasse

  4. Konfigurer dine klienters apps til at blive oprettet i din mysql-database:clients.jdbc(dataSource).withClient("clientapp") .authorizedGrantTypes("password", "refresh_token") .authorities("USER") .scopes("read", "write") .resourceIds(RESOURCE_ID) .secret("123456");

    du har allerede gjort dette.

  5. det vigtigste (og jeg tror, ​​du har glemt det ..) er:at konfigurere dine endepunkter med AuthorizationServerEndpointsConfigurer:

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

og det er det mand , nu skulle det virke;)

Og spørg gerne om mere... Jeg hjælper gerne

Jeg har sendt dig en besked fra tweeter!



  1. Sådan genererer du indsæt-sætninger fra tekstfiler til SQL Server-tabel i SQL Server - SQL Server / TSQL Tutorial Del 106

  2. MS Access-korruption Del 1:Almindelige årsager

  3. Hvad er den bedste måde at samle databaseindsættelser på fra c#?

  4. Forringes SQLite-ydeevnen, hvis databasestørrelsen er større end 2 gigabyte?