「[[マイクロソフト系技術情報 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>要素を暗号化し、~ <EncryptedID>の<xenc:EncryptedData>・<xenc:EncryptedKey>に追加。 --<Attribute>要素を暗号化し、~ <EncryptedAttribute>の<xenc:EncryptedData>・<xenc:EncryptedKey>に追加。 --<Assertion>要素全体を暗号化し、~ <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]]