私は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に新しいです、私にこれを達成する方法を提案してください。これに追加できるフィルターやインターセプターはありますか?