jose4j の HTTP プロキシ経由のリモート JWK ダウンロード
プロキシ対応の Get インスタンスを HttpsJwks に接続し、設定済みのキーセットインスタンスをキャッシュと後続の更新のために保持します。
jose4j のリモートキーセットローダーには独自の HTTP 取得オブジェクトがあります。アプリケーションが API を呼び出せても発行者の JSON Web Keys をダウンロードできない場合は、そのオブジェクトを設定します。
jose4j 0.9.6 の API は Get.setHttpProxy と HttpsJwks.setSimpleHttpGet を公開しています:
org.jose4j.http.Get downloader = new org.jose4j.http.Get();
downloader.setHttpProxy(new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example", 8080)));
downloader.setConnectTimeout(5000);
downloader.setReadTimeout(15000);
org.jose4j.jwk.HttpsJwks jwks = new org.jose4j.jwk.HttpsJwks(
"https://issuer.example/keys");
jwks.setSimpleHttpGet(downloader);この設定済みの jwks オブジェクトをアプリケーションのキー解決の構成で使用します。既存のリゾルバーの隣に作成しても、そのリゾルバーの別のインスタンスは変わりません。
Get は URL と HttpsURLConnection を使用します。明示的な Proxy は URL.openConnection(Proxy) に渡されます。これにより、JVM 全体の新しいプロキシポリシーを必要とせず、経路をこのローダーに限定できます。プロキシ認証が必要な場合は、追加のトランスポート上の課題です。承認された一般公開の発行者 URL は、公的な仲介者が許可され、プロキシアカウントが設定されていない場合、HTTP プロキシ一覧の HTTP アドレスを使用できます。
HttpsJwks はキャッシュヘッダーと既定のキャッシュ期間の設定に基づいて、インスタンスごとにキーをキャッシュします。その利点を得るにはインスタンスを保持してください。すでにキャッシュされたキーはネットワークを使わずに検証を続行させることができますが、後続の取得や更新は依然として設定された経路に依存します。
これはキーの取得を設定するものです。トークンの検証には、署名、発行者、対象者などの通常の検証ポリシーが引き続き必要です。JSON キーセットを取得するだけでは、これらの確認は行われません。