Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dodać klienta za pomocą JDBC dla ClientDetailsServiceConfigurer w Springu?

Wykonaj następujące kroki:

  1. umieść ten plik schema.sql w folderze zasobów, aby został wykryty przez SpringBoot po uruchomieniu serwera. Jeśli nie używasz spring boot, nie martw się, po prostu zaimportuj ten skrypt z dowolnego klienta aplikacji Mysql (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. Wprowadź swoje DataSource, AuthenticationManager,UserDetailsService do serwera OthorizationServer

    @Autowired private MyUserDetailsService userDetailsService; @Inject private AuthenticationManager authenticationManager; @Autowired private DataSource dataSource;
  3. Będziesz musiał stworzyć te dwie fasole

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

    i nie zapomnij o @Configuration na górze Twojej klasy AuthorizationServer

  4. Skonfiguruj aplikacje klienckie, które mają być tworzone w bazie mysql:clients.jdbc(dataSource).withClient("clientapp") .authorizedGrantTypes("password", "refresh_token") .authorities("USER") .scopes("read", "write") .resourceIds(RESOURCE_ID) .secret("123456");

    już to zrobiłeś.

  5. najważniejszą rzeczą (i myślę, że zapomniałeś o tym ..) jest:skonfigurować swoje punkty końcowe za pomocą AuthorizationServerEndpointsConfigurer:

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

i tyle stary , teraz powinno działać;)

I nie krępuj się prosić o więcej... Chętnie pomogę

Wysłałem Ci wiadomość od tweetera !



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy klucz podstawowy jest również indeksem?

  2. Jak przechowywać słownik Pythona w mysql DB za pomocą Pythona?

  3. Śledzenie w czasie rzeczywistym na mapie google

  4. Jaka jest definicja kardynalności w SQL?

  5. jak ustawić długość kolumny w stanie hibernacji z maksymalną długością