春・セキュリティのOAuth2設定された認証サービスは、わずか3に設定し、再構成の方法でクラスを継承する必要があります
輸入はjava.util.ArrayList; 輸入java.util.HashMapを; 輸入はjava.util.List; 輸入java.util.Map; 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.context.annotation.Bean。 輸入org.springframework.context.annotation.Configuration。 輸入org.springframework.data.redis.connection.RedisConnectionFactory; 輸入org.springframework.security.authentication.AuthenticationManager。 輸入org.springframework.security.core.userdetails.UserDetailsService。 インポートorg.springframework.security.oauth2.config.annotation.builders.InMemoryClientDetailsServiceBuilder; 輸入org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer。 輸入org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter。 輸入org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; 輸入org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer。 輸入org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer。 インポートorg.springframework.security.oauth2.provider.token.TokenStore; 輸入org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore; @Configuration @EnableAuthorizationServer パブリック クラス MyAuthenticationServerConfigは延びAuthorizationServerConfigurerAdapter { @Autowired プライベートRedisConnectionFactory redisConnectionFactoryと、 @Autowired プライベートUserDetailsService userDetailsService。 @Autowired プライベートAuthenticationManager authenticationManager。 @Autowired プライベートTokenStore redisTokenStore。 @Bean 公衆RedisTokenStore TokenStore(){ 返す 新しい新RedisTokenStore(redisConnectionFactoryを); } / ** アドレスaccess_tokenはアクセス、そのようなアドレスの認証として、*セキュリティ認証サービス構成情報 * / @Override 公共 無効の設定(AuthorizationServerSecurityConfigurerセキュリティ)がスロー例外{ スーパー.configure(セキュリティを); } / ** *設定ClientDetailsServiceConfigurer、 *システムを構成するための設定情報を書き換えた後、デフォルトの設定ファイルは失敗します読み込み * / @Override 公共 ボイドのconfigure(ClientDetailsServiceConfigurerクライアントを)投げる例外{ リスト<地図<文字列、オブジェクト>> oauth2ConfigList = 新しい ArrayListを<> (); 地図 <文字列、オブジェクト> MAP0 = 新しい HashMapの<文字列、オブジェクト> (); map0.put( "のclientId"、 "DJ0" ); map0.put( "clientSecret"、 "DJ0" ); map0.put( "validitySeconds"、7200 ); map0.put( "grantTypes"、新たな文字列[] { "refresh_token"、 "パスワード" })。 map0.put( "スコープ"、新たな文字列[] { "ALL"、 "読み取り"、 "書き込み" })。 oauth2ConfigList.add(MAP0)。 地図<文字列、オブジェクト> MAP1 = 新しいハッシュマップの<string、オブジェクト> (); map1.put( "のclientId"、 "DJ1" )。 map1.put( "clientSecret"、 "DJ1" )。 map1.put( "validitySeconds"、3600 ); map1.put( "grantTypes"、新たな文字列[] { "refresh_token"、 "パスワード"、 "authorization_code" })。 map1.put( "スコープ"、新たな文字列[] { "読み取り"、 "書き込み" })。 oauth2ConfigList.add(MAP1)。 InMemoryClientDetailsServiceBuilder clientDetailsServiceBuilder = clients.inMemory()。 にとって(地図の<string、オブジェクト> マップ:oauth2ConfigList){ clientDetailsServiceBuilder .withClient(String.valueOf(map.get(AS "のclientId"))) // 構成のclientId .secret(String.valueOf(map.getとして( "clientSecret")) ) // clientSecret構成 .accessTokenValiditySeconds(map.get( "validitySeconds"としてInteger.valueOf()のtoString())) // 有効時間access_tokenは構成 map.get( "grantTypes")として.authorizedGrantTypes((文字列[])) / / 構成許可型 .scopes(map.get(「スコープ」)のような(文字列[])); // 範囲の設定後に、このような構成により、要求がスコープパラメータと結合することができない } } / ** *この構成は、非ターミナルサーバのいくつかのセキュリティ機能を設定することができ、 *などトークンストレージ、カスタムトークン、ユーザ情報処理ロジック、など * / @Override 公共 ボイド設定(AuthorizationServerEndpointsConfigurerエンドポイント)スロー例外{ エンドポイント .tokenStore(redisTokenStore) // のRedisに格納されたトークンセット .authenticationManager(authenticationManager) // 認証マネージャセット .userDetailsService(userDetailsServiceを); //は、ユーザ情報を設定ロジックをフェッチ } }