「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[SAML Core]]
--[[XML署名・暗号]]

* 目次 [#b7ff7950]
#contents

*概要 [#od786447]
汎用認証サイトに[[SAML2.0を実装>SAMLを実装する。]]するため仕様を読む。
-ターゲットはSP Initiated な Web Browser SSO Profileに絞る。
-ココに書いた情報は、SAML の Coreの範囲。

*以下、詳細 [#bd4130cf]

*SAML and XML Signature Syntax and Processing [#bb2055db]
SAMLの[[XML署名・暗号]]に関する処理。

-SAMLではデジタル署名は必ずしも必要ではない。
--Message内のAssertionなど署名が継承されている場合。
--仲介者を通過しないBindingで、セキュアチャネルで認証されたメッセージ。

-署名するケース~
仲介者を通過する場合は署名するべき。
--UAなどの仲介者
--IdP以外から取得するAssertion

-署名の方法
--基本は、XMLデジタル署名を使用する。
--S/MIME や signed Java objectsを使用してもイイ。

**Signing Assertions [#e98a4c95]
Assertionの署名ができる。

**Request/Response Signing [#ka26038e]
Request/Responseの署名ができる。

**Signature Inheritance [#x48b34de]
簡単に言って、
-<ds:Signature>要素を持つ親要素からその子要素すべてが署名されている。
-XML 文書のルート要素であってもなくてもかまわない

**XML Signature Profile [#tc3624d9]
XML Signature 仕様[XMLSig]は、~
柔軟性と数多くの選択肢を備えた~
データ署名の一般的な XML 構文を規定する。

***Signing Formats and Algorithms [#z8b6077b]
SAMLでは以下の[[XML署名・暗号]]を行う。
-Enveloped署名を採用する。
-アルゴリズムは以下で識別される
-http://www.w3.org/2000/09/xmldsig#rsa-sha1

***References [#y219f1b4]
署名したルート要素のID属性を<ds:SignedInfo>の<ds:Reference>要素に含める。

***Canonicalization Method [#w050ddac]
オブジェクトに署名する前に使用された標準化アルゴリズム

***Transforms [#bb86899e]
エンベロープドには、

-署名変換以外の変換
-排他的標準化変換

が含まれていてはならない。

***KeyInfo [#bb995ac4]
SAMLでは、<ds:KeyInfo>はオプション。

***Example [#b06d585d]

 <Response
   IssueInstant="2003-04-17T00:46:02Z" Version="2.0"
   ID="_c7055387-af61-4fce-8b98-e2927324b306"
   xmlns="urn:oasis:names:tc:SAML:2.0:protocol"
   xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
 <saml:Issuer>https://www.opensaml.org/IDP"</saml:Issuer>
 <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
   <ds:SignedInfo>
     <ds:CanonicalizationMethod
       Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
     <ds:SignatureMethod
       Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
     <ds:Reference URI="#_c7055387-af61-4fce-8b98-e2927324b306">
       <ds:Transforms>
         <ds:Transform
           Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
         <ds:Transform
           Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
           <InclusiveNamespaces
             PrefixList="#default saml ds xs xsi"
             xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
         </ds:Transform>
       </ds:Transforms>
       <ds:DigestMethod
         Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
       <ds:DigestValue>...</ds:DigestValue>
     </ds:Reference>
   </ds:SignedInfo>
   <ds:SignatureValue>...</ds:SignatureValue>
   <ds:KeyInfo>
     <ds:X509Data>
       <ds:X509Certificate>...</ds:X509Certificate>
     </ds:X509Data>
   </ds:KeyInfo>
 </ds:Signature>
 <Status>
   <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
 </Status>
 <Assertion ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc"
   IssueInstant="2003-04-17T00:46:02Z" Version="2.0"
   xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
   <Issuer>https://www.opensaml.org/IDP</Issuer>
   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
     <ds:SignedInfo>
       <ds:CanonicalizationMethod
         Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
       <ds:SignatureMethod
         Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
       <ds:Reference URI="#_a75adf55-01d7-40cc-929f-dbd8372ebdfc">
         <ds:Transforms>
           <ds:Transform
             Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
           <ds:Transform
             Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
             <InclusiveNamespaces
               PrefixList="#default saml ds xs xsi"
               xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
           </ds:Transform>
         </ds:Transforms>
         <ds:DigestMethod
           Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
         <ds:DigestValue>...</ds:DigestValue>
       </ds:Reference>
     </ds:SignedInfo>
     <ds:SignatureValue>...</ds:SignatureValue>
     <ds:KeyInfo>
       <ds:X509Data>
         <ds:X509Certificate>...</ds:X509Certificate>
       </ds:X509Data>
     </ds:KeyInfo>
   </ds:Signature>
   <Subject>
     <NameID
       Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
       scott@example.org
     </NameID>
     <SubjectConfirmation
       Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/>
   </Subject>
   <Conditions NotBefore="2003-04-17T00:46:02Z"
     NotOnOrAfter="2003-04-17T00:51:02Z">
     <AudienceRestriction>
       <Audience>http://www.opensaml.org/SP</Audience>
     </AudienceRestriction>
   </Conditions>
   <AuthnStatement AuthnInstant="2003-04-17T00:46:00Z">
     <AuthnContext>
       <AuthnContextClassRef>
         urn:oasis:names:tc:SAML:2.0:ac:classes:Password
       </AuthnContextClassRef>
     </AuthnContext>
   </AuthnStatement>
 </Assertion>
 </Response>

-Active Directory 連携 / SAMLを使用したLDAP認証~
ManageEngine Service Desk Plus Cloud~
https://www.manageengine.jp/products/ServiceDesk_Plus/ad-sso-integration.html
 <Assertion ID="_c42ed101-0051-48ad-a678-8cb58dee03f6"...>
   ...
   <ds:Signature xmlns:ds="//www.w3.org/2000/09/xmldsig#">
     <ds:SignedInfo>
       <ds:CanonicalizationMethod Algorithm="//www.w3.org/2001/10/xml-exc-c14n#" />
       <ds:SignatureMethod Algorithm="//www.w3.org/2000/09/xmldsig#rsa-sha1" />
       <ds:Reference URI="#_c42ed101-0051-48ad-a678-8cb58dee03f6">
         <ds:Transforms>
           <ds:Transform Algorithm="//www.w3.org/2000/09/xmldsig#enveloped-signature" />
           <ds:Transform Algorithm="//www.w3.org/2001/10/xml-exc-c14n#" />
         </ds:Transforms>
         <ds:DigestMethod Algorithm="//www.w3.org/2000/09/xmldsig#sha1" />
         <ds:DigestValue>wlE4Jf0Z8Z+2OyWE69RRH81atZ8=</ds:DigestValue>
       </ds:Reference>
     </ds:SignedInfo>
     <ds:SignatureValue>...</ds:SignatureValue>
     <KeyInfo xmlns="//www.w3.org/2000/09/xmldsig#">
     <ds:X509Data>
     <ds:X509Certificate>...</ds:X509Certificate>
     </ds:X509Data>
     </KeyInfo>
   </ds:Signature>

*SAML and XML Encryption Syntax and Processing [#oc8fd513]
-SOAP Bindingは SSL/TLSやSOAP Message Security 機密保護機構の使用をサポート。

-<SubjectconfirmationData>内の<ds:KeyInfo>要素を使用し<SubjectConfirmation>秘密を保護できる。

-その他

--<BaseID>または<NameID>要素を暗号化し、~
&lt;EncryptedID>の<xenc:EncryptedData>・<xenc:EncryptedKey>に追加。

--<Attribute>要素を暗号化し、~
&lt;EncryptedAttribute>の<xenc:EncryptedData>・<xenc:EncryptedKey>に追加。

--<Assertion>要素全体を暗号化し、~
&lt;EncryptedAssertion>の<xenc:EncryptedData>・<xenc:EncryptedKey>に追加。

**General Considerations [#h3d04402]
要素の暗号化は XML Encryption[XMLEnc]の使用により提供される。

**Combining Signatures and Encryption [#ue21b0df]
-XML Encryption と XML Signature の使用を結合することができる(MAY)。

-署名・暗号化の順番
-<Assertion>の場合、署名(<ds:Signature>要素を追加)→暗号化
-<BaseID>/<NameID>/<Attribute>の場合、暗号化→署名
--<Assertion>の場合、署名(<ds:Signature>要素を追加)→暗号化
--<BaseID>/<NameID>/<Attribute>の場合、暗号化→署名

*参考 [#c0a32684]

**[[XML署名・暗号]] [#ufd31e7a]

**oasis-open.org [#gb42b8a1]
https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf

 5 SAML and XML Signature Syntax and Processing
 
 5.1 Signing Assertions
 5.2 Request/Response Signing
 5.3 Signature Inheritance
 
 5.4 XML Signature Profile
 5.4.1 Signing Formats and Algorithms
 5.4.2 References
 5.4.3 Canonicalization Method
 5.4.4 Transforms
 5.4.5 KeyInfo
 5.4.6 Example
 
 6 SAML and XML Encryption Syntax and Processing
 6.1 General Considerations
 6.2 Combining Signatures and Encryption

----
Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:SAML]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS