1
jwtでスプリングブートoauthをセットアップする方法については、this tutorialを参照してください。 Angularを使用してJWTトークンをデコードする方法について説明しますが、デコードしてResource Serverコントローラ内のカスタム要求にアクセスするにはどうすればよいですか?リソースサーバーコントローラ内でSpring OAuth 2 JWTペイロードにアクセスしますか?
は、例えばJJWTでそれは(Based on this article)のように行うことができます。
String subject = "HACKER";
try {
Jws jwtClaims =
Jwts.parser().setSigningKey(key).parseClaimsJws(jwt);
subject = claims.getBody().getSubject();
//OK, we can trust this JWT
} catch (SignatureException e) {
//don't trust the JWT!
}
そして春にはJWTAccessTokenConverter.decode()方法がありますが、Javadocは不足している、そしてそれが保護されています。
1)を取得春Authentication
にJWTのコンテンツをコピーするには:
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends ResourceServerConfigurerAdapter{
@Override
public void configure(ResourceServerSecurityConfigurer config) {
config.tokenServices(createTokenServices());
}
@Bean
public DefaultTokenServices createTokenServices() {
DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(createTokenStore());
return defaultTokenServices;
}
@Bean
public TokenStore createTokenStore() {
return new JwtTokenStore(createJwtAccessTokenConverter());
}
@Bean
public JwtAccessTokenConverter createJwtAccessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setAccessTokenConverter(new JwtConverter());
return converter;
}
public static class JwtConverter extends DefaultAccessTokenConverter implements JwtAccessTokenConverterConfigurer {
@Override
public void configure(JwtAccessTokenConverter converter) {
converter.setAccessTokenConverter(this);
}
@Override
public OAuth2Authentication extractAuthentication(Map<String, ?> map) {
OAuth2Authentication auth = super.extractAuthentication(map);
auth.setDetails(map); //this will get spring to copy JWT content into Authentication
return auth;
}
}
}
2)アクセストークンのコンテンツをどこでも、あなたのコード内で:ここ