Postupujte podle těchto kroků:
-
vložte toto schema.sql do složky zdrojů, aby je SpringBoot zjistil, jakmile spustíte server. Pokud nepoužíváte jarní spouštění, nebojte se, jednoduše importujte tento skript z libovolného klienta aplikace Mysql (phpmyadmin, HeidiSQL, Navicat..)
přehoďte tabulku, pokud existuje oauth_client_details;vytvořit tabulku oauth_client_details (client_id VARCHAR(255) PRIMARY KEY,resource_ids VARCHAR(255),client_secret VARCHAR(255),scope VARCHAR_grant_VARCHAR5direct),VARCH_authorized VARCHAR_55),webserver_type ,orgány VARCHAR(255),platnost_přístupového_tokenu INTEGER,obnovit_platnost_tokenu INTEGER,další_informace VARCHAR(4096),autoschválit VARCHAR(255));vypustit tabulku, pokud existuje oauth_client_token;vytvořit tabulku AR25id_token5_klient (autor25token NGAR2500_klientů) ) PRIMÁRNÍ KLÍČ,uživatelské_jméno VARCHAR(255),id_klienta VARCHAR(255));zrušte tabulku, pokud existuje oauth_access_token;vytvořte tabulku oauth_access_token (id_tokenu VARCHAR(255),token LONG VARBINARY,KEY,VAR5) PRINCIP_5 název_autentizace(255) ,id_klienta VARCHAR(255),autentizace LONG VARBINARY,refresh_token VARCHAR(255));zrušte tabulku, pokud existuje oauth_refresh_token;vytvořte tabulku oauth_refresh_token (id_tokenu VARCHAR(255),token LONG,BINARY, LONG ověření LONG VARBINARY);vypustit tabulku, pokud existuje oauth_code;vytvořit tabulku oauth_code (kód VARCHAR(255), autentizace LONG VARBINARY);zrušit tabulku, pokud existuje oauth_approvals;vytvořit tabulku oauth_approvals (VARCHARId VARCHAR5),clientscope(255AR5AR5) (255),stav VARCHAR(10),platnost vypršíAt TIMESTAMP,lastModifiedAt TIMESTAMP);zrušit tabulku, pokud existuje ClientDetails;vytvořit tabulku ClientDetails (appId VARCHAR(255) PRIMÁRNÍ KLÍČ,resourceIds VARCHAR(255),appSecret VARCHAR(25CH5VARCHAR) 255),grantTypes VARCHAR(255),redirectUrl VARCHAR(255),autority VARCHAR(255),access_token_validity INTEGER,refresh_token_validity INTEGER,additionalInformation VARCHAR(4096),autoApproveScopes 5VARCH);
-
Vložte svůj DataSource, authenticationManager, UserDetailsService do vašeho OthorizationServer
@Autowiredprivate MyUserDetailsService userDetailsService;@Injectprivate AuthenticationManager authenticationManager;@Autowiredprivate DataSource dataSource;
-
Budete muset vytvořit tyto dvě fazole
@Beanpublic JdbcTokenStore tokenStore() {return new JdbcTokenStore(dataSource);}@Beanprotected AuthorizationCodeServices authorizationCodeServices() {return new JdbcAuthorizationCodeServices(dataSource);}
a nezapomeňte prosím na @Configuration nad vaší třídou AuthorizationServer
- Nakonfigurujte své klientské aplikace tak, aby byly vytvořeny ve vaší databázi mysql:
clients.jdbc(dataSource).withClient("clientapp").authorizedGrantTypes("password", "refresh_token").authorities("USER"). scopes("read", "write").resourceIds(RESOURCE_ID).secret("123456");
už jste to udělali.
-
nejdůležitější věc (a myslím, že jste na to zapomněli ..) je:nakonfigurovat vaše koncové body pomocí AuthorizationServerEndpointsConfigurer:
endpoints.userDetailsService(userDetailsService) .authorizationCodeServices(authorizationCodeServices()).authenticationManager(this.authenticationManager).tokenStore(tokenStore()).approvalStoreDisabled();
a je to, člověče, teď by to mělo fungovat;)
A klidně se ptejte na další... Rád pomůžu
Poslal jsem vám zprávu z tweeteru!