JWTでエンコードされたトークンを返すAzure AD OAuth 2.0のデフォルト設定を使用すると仮定します。このタイプのトークンにはメリットはありません。トークン自体から許可されたスコープなどの情報を抽出することができます。また、トークンの署名を確認して認証サーバーに検証要求を送信することを避けることもできます。
設定JWTトークン検証
あなたはJWTトークンを使用して、リソースサーバ(あなたのWeb API)を設定する必要があります:
@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(ResourceServerSecurityConfigurer config) {
config.tokenServices(tokenServices());
}
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(accessTokenConverter());
}
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setVerifierKey(obtainAzureADPublicKey());
return converter;
}
@Bean
@Primary
public DefaultTokenServices tokenServices() {
DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore());
return defaultTokenServices;
}
}
このコード(小さな変更を加えた)の優れたblog postから取られましたEugen Paraschiv(別名Baeldung)
署名アズールの取得キー
のAzure ADが発行されたトークンに署名し、
obtainAzureADPublicKey
方法からそれを返すために使用していることをあなたは、非対称公開暗号化キーを取得する必要があります。基づいて
documentationあなたが最初に(結果から
"jwks_uri"
プロパティの値を取得することにより)
https://login.microsoftonline.com/common/.well-known/openid-configuration
からJWT署名キーのエンドポイントに関するメタ情報を取得する必要があります。
次に、そのURLから適切なキーを取得する必要があります。
Azure ADはこの情報を時々変更するため、アプリケーションの起動時にこの情報を1回だけ変更することはできません。しかし、少なくとも24時間キャッシュするのは良い考えです。
こんにちは@Oleg、(セキュリティの観点から)それはクッキーに更新トークンとベアラトークンを保存してもよろしいですか? –