私の顧客は ping フェデレート インストールを使用しており、互換性のない認証応答ドキュメントを生成しているようです。ドキュメントは整形式で、不正な文字が含まれていません。
大きな問題は、ドキュメントのノードのノード名に「ds:」が含まれていないことです。私の認証ライブラリ ( omniauth-saml ) は検証時に ds 名のみを検索するため、これは残念です。
ライブラリに問題がありますか?Ping Federate SAML ドキュメントに問題がありますか? XPath の「contains」ヘルパーを使用するようにマッチャーにパッチを適用し始めましたが、それでもドキュメントのダイジェストと証明書が正しい値に計算されません。
- ライブラリに問題がありますか?
- Ping Federate SAML ドキュメントに問題がありますか?
- Ping Federate ドキュメントは、正規化された場合でも検証する必要がありますか?
SAML 応答のサンプルを次に示します。
<samlp:Response Destination="http://a/dest" IssueInstant="2012-07-12T18:21:28.011Z" ID="a.valid.rand.id" Version="2.0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://their/issuer</saml:Issuer>
<Signature>
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#vZZQnHjOx1.u8c3uupdxDb_cmRu">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>some_digest_value</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>some_signature_value</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>their_well_formed_x509_cert</X509Certificate>
</X509Data>
<KeyValue>
<RSAKeyValue>
<Modulus>a_modulus</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
</KeyInfo>
</Signature>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion Version="2.0" IssueInstant="2012-07-12T18:21:28.058Z" ID="SOME_ID">
<saml:Issuer>http://their/issuer</saml:Issuer>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">14096079</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData NotOnOrAfter="2012-07-12T18:26:28.058Z" Recipient="http://link/back/to/me"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotOnOrAfter="2012-07-12T18:26:28.058Z" NotBefore="2012-07-12T18:16:28.058Z">
<saml:AudienceRestriction>
<saml:Audience>http://an/audience/restriction</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2012-07-12T18:21:28.058Z" SessionIndex="SOME_ID">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement xmlns:xs="http://www.w3.org/2001/XMLSchema">
<saml:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" Name="uid">
<saml:AttributeValue xsi:type="xs:string">a_uid</saml:AttributeValue>
</saml:Attribute>
<!-- removed all the other attributes -->
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>