2017-06-26 15 views
2

私はOauth2をspring-security-oauthを使用して実装しました。私はパスワードとリフレッシュトークン付与タイプを使用しました。spring-security-oauthに新しいアクセストークンが挿入されるたびにコードを実行する方法は?

フローには、ユーザー名とパスワードが最初に表示されます。確認後、認証サーバーはリフレッシュトークンを提供します。 このリフレッシュトークンを使用して、保護されたリソースにアクセスするために使用できるアクセストークンを取得します。

@Configuration 
    @EnableAuthorizationServer 
    protected static class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter implements EnvironmentAware { 

     private static final String ENV_OAUTH = "authentication.oauth."; 
     private static final String PROP_CLIENTID = "clientid"; 
     private static final String PROP_SECRET = "secret"; 
     private static final String PROP_TOKEN_VALIDITY_SECONDS = "tokenValidityInSeconds"; 

     private RelaxedPropertyResolver propertyResolver; 

     @Autowired 
     private DataSource dataSource; 

     @Bean 
     public TokenStore tokenStore() { 
      return new JdbcTokenStore(dataSource); 
     } 

     @Autowired 
     @Qualifier("authenticationManagerBean") 
     private AuthenticationManager authenticationManager; 

     @Override 
     public void configure(AuthorizationServerEndpointsConfigurer endpoints) 
       throws Exception { 
      endpoints 
        .tokenStore(tokenStore()) 
        .authenticationManager(authenticationManager); 
     } 

     @Override 
     public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
      clients 
        .inMemory() 
        .withClient(propertyResolver.getProperty(PROP_CLIENTID)) 
        .scopes("read", "write") 
        .authorities(Authorities.ROLE_ADMIN.name(), Authorities.ROLE_USER.name()) 
        .authorizedGrantTypes("password", "refresh_token") 
        .secret(propertyResolver.getProperty(PROP_SECRET)) 
        .accessTokenValiditySeconds(propertyResolver.getProperty(PROP_TOKEN_VALIDITY_SECONDS, Integer.class, 60)) 
        .refreshTokenValiditySeconds(propertyResolver.getProperty(PROP_TOKEN_VALIDITY_SECONDS, Integer.class, 120)); 
     } 

     @Override 
     public void setEnvironment(Environment environment) { 
      this.propertyResolver = new RelaxedPropertyResolver(environment, ENV_OAUTH); 
     } 

    } 

} 

注:JdbcTokenStoreを使用しました。上記のコードを確認してください。 新しいアクセストークンが作成/削除されるたびに、メソッドを実行してコードを実行したい。これを行う方法?私は春のセキュリティとoauthに新しいです、私にこれを達成する方法を提案してください。これに追加できるフィルターやインターセプターはありますか?

答えて

5

あなたがあなた自身のTokenStoreまたは拡張し、既存の(InMemoryTokenStore,JdbcTokenStoreJwtTokenStore)を実装し、storeAccessTokenremoveAccessToken

にコードを追加することができます
関連する問題