2016-04-28 36 views
0

Azure AD B2Cには、アプリケーションが実行時に情報を取得できるようにするOpenID Connectメタデータエンドポイントがあります。このエンドポイントには、トークンの署名キー、トークンの内容、エンドポイントに関する情報があります.jwk_urisを取得するには、このエンドポイントを照会する必要があります。 jwk_uriにはjwtに署名するための鍵のURIがあります。私は24時間以上これらのキーをキャッシュする必要があります。誰も私が春にこれを行う方法を私に示唆することはできますか?これをサポートするAPIはありますか? Springフレームワークを使用して可能な解決策は、スケジューラとキャッシュを組み合わせることであろうjson Webキーをopenidから取得しましたopenidからメタデータエンドポイントに接続

+0

これまでに試したことはありますか? – UditS

+0

私はまだ私の研究をしていますが、キャッシングに使用できるものは何も見つかりませんでした。私は[link](https://bitbucket.org/b_c/jose4j/wiki/Home)を参照しました。私も[リンク](http://www.programcreek.com/java-api-examples/index.php?source_dir=identity-providers-examples-master/OpenID-Connect-MITREid-Java-Spring-Server/openid)を見つけました。 -connect-common/src/main/java/org/miter/jwt/signer/service/impl/JWKSetCacheService.java)を使用する必要があるかどうかを確認します。 – Shiv

+0

org.jose4j.jwk.HttpsJwksはキャッシュします。だから私は自分の問題にjose4jを使うことができると思う?しかし、私はHttpsJwksについての詳細な文書を入手しなかった。誰かが私にこれを助けることができますか?返信ありがとう。 – Shiv

答えて

1

HttpsJwksは、キャッシュ・ディレクティブ・ヘッダーまたはhttpレスポンス、またはsetDefaultCacheDuration(long defaultCacheDuration)に基づいて、レスポンスのキャッシュ・ディレクティブ・ヘッダーが存在しない場合、一定期間キーをキャッシュしますまたはコンテンツがキャッシュされるべきでないことを示します。

アンHttpsJwksオブジェクトがキャッシュされたセットに含まれないJWTでも、それはkid(キーID)発生した場合、jwk_uriに新鮮な呼び出しを行うとキャッシュをreeastablitshますJwtConsumer/JwtConsumerBuilder and HttpsJwksVerificationKeyResolverと組み合わせて使用​​することができますキーの。

+0

私はTwo-pass JWTの消費量を使い、新しいHttpsJwksVerificationKeyResolver(httpsJkws)を使って検証キーを渡します。私は主張を処理することができますが、私は署名の検証について混乱しています。私は署名を検証するためにもっと多くのことを行う必要がありますか、HttpsJwksVerificationKeyResolverは内部的に署名を検証します。 – Shiv

+0

私はクレームの検証と署名の検証の間に混乱しています。これらはどちらもHttpsJwksVerificationKeyResolverによって処理されますか? – Shiv

+0

JwtConsumerクラスは、クレームの検証と署名の検証の両方を行います(もちろん、JwtConsumerBuilderを使用して作成された方法にもよる)。 HttpsJwksVerificationKeyResolverは、jwk_uriのJWKからJWTのヘッダーを見て適切なキーを見つけ、JwtConsumerに提供します.JwtConsumerは、キーを使用して署名を検証します。署名が有効であれば、クレームがチェックされます。 2パスJWT消費量を使用すると、すべての検証が2回目のパスで行われます。また、キャッシュの利点を得るには、HttpsJwksインスタンスを再利用する必要があります。 –

0

を立ち退かせるために使用 spring task scheduler
  • jwksキー検索サービスをキャッシュします
  • 関連する問題