IDおよびアクセスマネージャーとしてKeycloakを使用しています。
機密情報を別の信頼できる関係者に送信する必要があるユース ケースがあります。流れは次のようになります。
- 信頼できるパーティの公開鍵を、そのパーティの JWK エンドポイント経由で取得します
- 信頼できるパーティの公開鍵を使用して機密データを暗号化します
- 次に、自分自身に JWT トークンを発行します。私は自分の秘密鍵でこれに署名します。
- 次に、Authorization ヘッダーの JWT トークンと共に、データを信頼できるパーティに送信します。
- 信頼できるパーティが私のリクエストを受け取ります
- 信頼できるパーティが私の JWK エンドポイントを呼び出して、私の公開鍵を取得します
- 信頼できる当事者が、公開鍵を使用して送信した JWT トークンを検証します
- 次に、信頼できるパーティが秘密鍵を使用して機密データを復号化します
このフローにより、信頼できる側は次のことを確信できます。
- 送信中に機密データが改ざんされていない
彼らが自信を持てないのは、次のことです。
- 私は彼らが私だと思っている人です。私はデータを送信した人です。
彼らが知っている唯一のことは、彼らが私の側で呼び出したエンドポイントが私の会社に属しているように見えるということです. しかし、攻撃者が自分の公開鍵を返し、自分の秘密鍵で署名された独自のトークンを発行できるような方法でリクエストを傍受した場合、信頼できる当事者に必要なデータを送信できます。
ここで x.509 証明書の出番です。信頼できる側には、相手が自分であることを確認する方法が必要です。
Keycloak は、4 日前の時点で 5.0.0-SNAPSHOT で (証明書チェーン)をサポートしているようです。x5c
これは、新しい公開鍵と秘密鍵のペアと証明書を追加/生成することによって構成されます。証明書が構成されている場合、x5c
パラメーターは JWKS エンドポイントを介して使用可能になります。
x5t
ただし、 (拇印) パラメーターを提供する必要もあります。Keycloakはこれに対するサポートを提供していますか、または将来提供する予定ですか?