鍵情報
SOAP メッセージの Security ヘッダー内で <ds:KeyInfo> エレメントを使用して、 メッセージの 1 つ以上のパートを処理するために鍵または証明書が置かれている場所を記述します。 デジタル署名の <ds:KeyInfo> エレメントはパブリック証明書を記述し、 暗号化の <ds:KeyInfo> エレメントは秘密鍵を記述します。
WS-Security バインディング内の鍵情報タイプは、<ds:KeyInfo> エレメント内の <wsse:SecurityTokenReference> エレメントを使用することによって、
セキュリティー・トークンを参照するためのさまざまなメカニズムを指定します。WS-Security バインディング内で使用可能な鍵情報タイプは次のとおりです。
- セキュリティー・トークン参照
- 鍵 ID
- X509 発行者名および発行者シリアル番号
- 組み込みトークン
- サムプリント (JAX-WS のみ)
- 鍵名 (JAX-RPC のみ)
デジタル署名と関連付けられた鍵情報のデフォルト値は、セキュリティー・トークン参照です。暗号化と関連付けられた鍵情報のデフォルト値は、鍵 ID です。
セキュリティー・トークン参照および組み込みトークンを選択した場合のみ、 X.509 証明書がメッセージに直接入れられます。これら以外を選択した場合は、メッセージには ID が入れられます。 その ID は鍵または証明書に固有であり、メッセージ受信者はそれを使用して環境から鍵または証明書を選択して、メッセージを評価します。
鍵情報タイプごとに、WS-Security ランタイムが発行する <ds:KeyInfo> エレメントの例を以下に示します。
- セキュリティー・トークン参照
- メッセージ中のどこか他の場所にあるセキュリティー・トークンが、URI を使用して直接参照されます。以下の XML フラグメントは、
鍵情報タイプがセキュリティー・トークン参照である、X.509v3 トークン用の SOAP メッセージ内に生成された <KeyInfo> エレメントの例です。
<wsse:BinarySecurityToken EncodingType="...#Base64Binary" ValueType="...#X509v3" wsu:Id="SomeCert"> .... </wsse:BinarySecurityToken>... <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI='#SomeCert' ValueType="...#X509v3" /> </wsse:SecurityTokenReference> </ds:KeyInfo>
重要: 「Web services Interoperability Organization (WS-I) Basic Security Profile Version 1 draft」に記載され、前述の例に示されるように、SECURE_ENVELOPE の wsse:Reference 要素には ValueType 属性が必要です。 - 鍵 ID
- このセキュリティー・トークンは、一意的にトークンを識別する隠された値を使用して参照されます。<KeyIdentifier> エレメント値を生成するために使用されるアルゴリズムは、トークン・タイプに依存します。
例えば、「Internet Engineering Task Force (IETF) Request for Comment
(RFC) 3280」で定義されている公開鍵の ID を使用できます。
この鍵情報タイプでは、SOAP メッセージ内に以下の <KeyInfo> エレメントが生成されます。
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <wsse:SecurityTokenReference> <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/2004/01 /oasis-200401-wss-x509-token-profile-1.0#X509v3SubjectKeyIdentifier"> /62wXO... </wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- X509 発行者名および発行者シリアル番号
- セキュリティー・トークンは X.509 証明書の発行者名およびシリアル番号によって参照されます。この鍵情報タイプでは、SOAP メッセージ内に以下の <KeyInfo> エレメントが生成されます。
<ds:KeyInfo> <wsse:SecurityTokenReference> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>CN=Jones, O=IBM, C=US</ds:X509IssuerName> <ds:X509SerialNumber>1040152879</ds:X509SerialNumber> </ds:X509IssuerSerial> </ds:X509Data> </wsse:SecurityTokenReference> </ds:KeyInfo>
- 組み込みトークン
- セキュリティー・トークンは <SecurityTokenReference> エレメント内に直接組み込まれています。
この鍵情報タイプでは、SOAP メッセージ内に以下の <KeyInfo> エレメントが生成されます。
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Embedded wsu:Id=”tok1” /> … </wsse:Embedded> </wsse:SecurityTokenReference> </ds:KeyInfo>
- サムプリント
- サムプリントが選択された場合、#ThumbPrintSHA1 ValueType を伴う KeyIdentifier エレメントが使用されます。この鍵情報タイプは、
X.509 トークンで使用されるためのタイプです。X.509 鍵または証明書が、
証明書の Base64 エンコードのサムプリントによって参照されます。
以下の XML フラグメントは、 この鍵情報タイプの場合に SOAP メッセージ内に生成される <KeyInfo> エレメントの例です。
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/oasis-wss480soap-message-security-1.1#ThumbPrintSHA1" >B5o2elsan6IhbxxYgZ62pPFnUIc=</wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- 鍵名
- このセキュリティー・トークンは、トークン内の ID アサーションと一致する名前を使用して参照されます。指定された名前と一致するセキュリティー・トークンが複数になることがあるため、この鍵タイプを使用しないことをお勧めします。この鍵情報タイプでは、SOAP メッセージ内に以下の <KeyInfo> エレメントが生成されます。
<ds:KeyInfo> <ds:KeyName>CN=Group1</ds:KeyName> </ds:KeyInfo>
一般に、XML Signature のスキーマのような Key-Hashing Message Authentication Code (HMAC) デジタル署名アルゴリズムを使用する場合には、鍵の名前を使用します。
鍵情報の各タイプについては、Web Services Security: SOAP Message Security 1.0 (WS-Security 2004) OASIS standard の「Web Services Security」セクションで説明されています。