7.2. サービスプロバイダーキーおよびキー要素
IdP で、クライアントアプリケーション (または SP) がすべての要求に署名するか、IdP がアサーションを暗号化する場合は、これを実行するために使用するキーを定義する必要があります。クライアント署名のドキュメントでは、ドキュメントの署名に使用される秘密鍵、および公開鍵または証明書の両方を定義する必要があります。暗号化の場合は、復号に使用する秘密鍵のみを定義する必要があります。
キーを記述する方法は 2 つあります。キーは Java KeyStore 内に格納することも、PEM 形式の keycloak-saml.xml にキーを直接コピー/貼り付けることもできます。
<Keys>
<Key signing="true" >
...
</Key>
</Keys>
Key 要素には、2 つの任意の属性の signing および encryption があります。true に設定すると、これらはアダプターにキーの使用目的を通知します。両方の属性が true に設定されていると、キーはドキュメントの署名と暗号化されたアサーションの復号の両方に使用されます。少なくとも 1 つの属性を true に設定する必要があります。
7.2.1. KeyStore 要素 リンクのコピーリンクがクリップボードにコピーされました!
Key 要素内で、Java Keystore から鍵と証明書を読み込みます。これは KeyStore 要素内で宣言されます。
<Keys>
<Key signing="true" >
<KeyStore resource="/WEB-INF/keystore.jks" password="store123">
<PrivateKey alias="myPrivate" password="test123"/>
<Certificate alias="myCertAlias"/>
</KeyStore>
</Key>
</Keys>
以下は、KeyStore 要素で定義されている XML 設定属性です。
- file
- キーストアへのファイルパス。このオプションは 任意 です。file または resource 属性を設定する必要があります。
- resource
- KeyStore への WAR リソースパス。これは、ServletContext.getResourceAsStream() へのメソッド呼び出しで使用されるパスです。このオプションは 任意 です。file または resource 属性を設定する必要があります。
- password
- KeyStore のパスワード。このオプションは 必須 です。
SP がドキュメントの署名に使用するキーを定義する場合は、Java KeyStore 内の秘密鍵および証明書への参照も指定する必要があります。上記の例の PrivateKey および Certificate 要素は、キーストア内のキーまたは証明書を参照する エイリアス を定義します。キーストアには、秘密鍵にアクセスするために追加のパスワードが必要です。PrivateKey 要素で、password 属性内にこのパスワードを定義する必要があります。
7.2.2. キーの PEMS リンクのコピーリンクがクリップボードにコピーされました!
Key 要素内で、PrivateKeyPem、PublicKeyPem および CertificatePem のサブ要素を使用して、キーと証明書を直接宣言します。これらの要素に含まれる値は PEM キー形式に準拠する必要があります。通常、openssl または同様のコマンドラインツールを使用してキーを生成する場合は、このオプションを使用します。
<Keys>
<Key signing="true">
<PrivateKeyPem>
2341251234AB31234==231BB998311222423522334
</PrivateKeyPem>
<CertificatePem>
211111341251234AB31234==231BB998311222423522334
</CertificatePem>
</Key>
</Keys>