SAML Token Profile 標準で規定されている SAML アサーション
Web Services Security SAML Token Profile OASIS 標準 では、Security Assertion Markup Language (SAML) アサーションの使用方法が Web Services Security SOAP Message Security 仕様で指定されています。
この製品は、Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML) V1.1 および Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0 の 2 つのバージョンの OASIS SAML 標準をサポートしています。
この標準は、WSS: SOAP Message Security 仕様で定義されているよう に、<wsse:Security> ヘッダー内でセキュリティー・トークンとして SAML アサーションを 使用することについて規定しています。SAML アサーション内のサブジェクト およびステートメントを SOAP メッセージにバインドするために、XML Signature を使用できます。
サブジェクト確認方式は、SAML アサーションのサブジェクトとクレーム間の関係の 証拠 (証明) をエンティティーが提供する仕組み を定義します。WSS: SAML Token Profile では、 3 種類のサブジェクト確認方式 (bearer、 holder-of-key、および sender-vouches) の使用法が規定されています。本製品では、3 つの確認方式をすべてサポートします。サブジェクト確認方式として bearer を 使用する場合、サブジェクトとクレーム間の関係の証明は暗黙的 です。関係を確立するために実行される特別なステップは ありません。
bearer トークンには鍵素材は関連付けられていないため、 SOAP メッセージの保護は、必要な場合、 トランスポート・レベル・メカニズムを使用するか、または、メッセージ・レベル保護 用に X.509 や Kerberos トークンなどの他のセキュリティー・トークンを使用して実行される必要があります。holder-of-key サブジェクト 確認方式を使用する場合、サブジェクトとクレーム間の関係の証明 は、SAML アサーション内に指定された鍵を使用して SOAP メッセージの 一部に署名することによって確立されます。holder-of-key トークンには 鍵素材が関連付けられているため、このトークンを使用して、SOAP メッセージの メッセージ・レベル保護 (署名および暗号化) を 提供できます。
- 送信側が、クライアント証明書認証を使用して、受信側との Secure Sockets Layer (SSL) セッションを セットアップします。
- 送信側が、セキュリティー・トークン参照変換アルゴリズムを使用して、SAML アサーションとそれを含んでいる SOAP メッセージ にデジタル署名します。送信側は、機密性を保護するため、 SSL または SOAP メッセージ暗号化のどちらかを使用できます。
bearer アサーション
OASIS Web Services Security 仕様に規定されているように、SAML アサーション に bearer <saml:ConfirmationMethod> エレメントが含まれている場合、それは bearer アサーション です。詳しくは、仕様に関する資料を参照してください。<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:bearer
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
</saml2:SubjectConfirmation>
holder-of-key アサーション
SAML アサーションに SubjectConfirmation エレメント が含まれていて、その中の saml:ConfirmationMethod エレメントの 値が holder-of-key であり、さらに ds:KeyInfo エレメントが含まれていれば、それは holder-of-key アサーションです。 詳しくは、仕様に関する資料を参照してください。SubjectConfirmation エレメント の中にある ds:KeyInfo 情報は、 サブジェクトの ID を確認するために使用される、公開鍵または秘密鍵を指定 します。holder-of-key アサーションには、ds:Signature エレメントも 含まれます。このエレメントは、アサーション権限によって確立された確認 ds:KeyInfo エレメント の整合性を保護します。
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm: holder-of-key
</saml:ConfirmationMethod>
<ds:KeyInfo>
<ds:KeyValue>. . .</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:holder-of-key">
<saml2:SubjectConfirmationData>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
......
</ds:KeyInfo>
</saml2:SubjectConfirmationData>
</saml2:SubjectConfirmation>
sender-vouches アサーション
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:sender-vouches
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches">
</saml2:SubjectConfirmation>
holder-of-key アサーションにおける対称鍵
SAML holder-of-key アサーションは、 保護トークンとして使用されます。このタイプの保護トークン は、証明鍵として対称鍵を使用できます。クライアントは証明鍵を 使用して、発行された SAML トークンをクライアントが実際に 所有していることを、依存側に示します。セキュリティー・トークン・サービス (STS) が 発行した SAML トークンが対称的な証明鍵を使用している場合、そのトークンは、 ターゲット・サービス用に暗号化された鍵を含んでいます。STS は、 RequestSecurityTokenResponse (RSTR) の一部として、同じ証明鍵を <RequestedProofToken> エレメントに入れて要求側に も送信します。Web サービス・クライアントは、その後、ターゲット・サービス (「依存側」とも呼ばれる) に SAML トークンを提示し、受け取った証明鍵を使用してアプリケーション・メッセージに署名します。<t:KeyType> http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
</t:KeyType>
<t:KeySize>256</t:KeySize>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:holder-of-key</saml:ConfirmationMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<enc:EncryptedKey xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
<enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
</enc:EncryptionMethod>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIB3 . . . vO3bdg</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<enc:CipherData>
<enc:CipherValue>P5Kb . . . rOTvII</enc:CipherValue>
</enc:CipherData>
</enc:EncryptedKey>
</ds:KeyInfo>
</saml:SubjectConfirmation>
holder-of-key アサーションにおける公開鍵
SAML holder-of-key アサーションが 保護トークンとして使用される場合、トークン は証明鍵として公開鍵を使用できます。クライアントは証明鍵を 使用して、発行された SAML トークンをクライアントが実際に 所有していることを、依存側に示します。公開証明鍵が対称鍵よりも優れている点は、 クライアントがセキュリティー・トークン・サービス (STS) および依存側と 秘密鍵を共有しないことです。公開証明鍵 は、X509 証明書であるか、または、Rivest Shamir Adleman (RSA) 公開鍵 であることが可能です。<trust:UseKey>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIIGCzCCBPOgAwIBAgIQcSgVwaoQv6dG. . .1GqB
</X509Certificate>
</X509Data>
</KeyInfo>
</trust:UseKey>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:holder-of-key</saml:ConfirmationMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>hYHQm. . . ZnH1S0=</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>