1-2春 - セキュリティのOAuth2認証サービスの設定

春・セキュリティの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.UserDetailsS​​ervice。
インポートorg.springframework.security.oauth2.config.annotation.builders.InMemoryClientDetailsS​​erviceBuilder;
輸入org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsS​​erviceConfigurer。
輸入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 
    プライベートUserDetailsS​​ervice userDetailsS​​ervice。
    
    @Autowired 
    プライベートAuthenticationManager authenticationManager。
    
    @Autowired 
    プライベートTokenStore redisTokenStore。
    
    @Bean 
    公衆RedisTokenStore TokenStore(){
         返す 新しい新RedisTokenStore(redisConnectionFactoryを); 
    } 

    / ** 
     アドレスaccess_tokenはアクセス、そのようなアドレスの認証として、*セキュリティ認証サービス構成情報
     * / 
    @Override 
    公共 無効の設定(AuthorizationServerSecurityConfigurerセキュリティ)がスロー例外{
         スーパー.configure(セキュリティを); 
    } 

    / ** 
     *設定ClientDetailsS​​erviceConfigurer、
     *システムを構成するための設定情報を書き換えた後、デフォルトの設定ファイルは失敗します読み込み
     * / 
    @Override 
    公共 ボイドのconfigure(ClientDetailsS​​erviceConfigurerクライアントを)投げる例外{ 
        リスト<地図<文字列、オブジェクト>> 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)。
        
        InMemoryClientDetailsS​​erviceBuilder clientDetailsS​​erviceBuilder = clients.inMemory()。
        
        にとって(地図の<string、オブジェクト> マップ:oauth2ConfigList){ 
            clientDetailsS​​erviceBuilder 
            .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)     // 認証マネージャセット 
        .userDetailsS​​ervice(userDetailsS​​erviceを);     //は、ユーザ情報を設定ロジックをフェッチ
    }     

}

 

おすすめ

転載: www.cnblogs.com/programmlover/p/11374743.html