此查询是对帖子中提出的问题的补充 - HTTP-Redirect Binding SAML Request。
我正在尝试通过HTTP重定向绑定发送SAML身份验证请求来实现dotnet SSO解决方案。 在生成SAML AuthnRequest并使用SP的私有证书计算签名后,我尝试了两种方法在URL中添加签名。
生成SAML AuthnRequest XML。
<?xml version="1.0" encoding="utf-8"?>
<AuthnRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ID="_d726aced-4c62-4562-8237-062f7faf0750"
Version="2.0" IssueInstant="2015-04-03T19:59:58.6709058Z"
Destination="https://idp.client.com/adfs/ls/"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="https://serviceprovider.clientportal.com/samlsso.aspx"
xmlns="urn:oasis:names:tc:SAML:2.0:protocol"
>
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://serviceprovider.clientportal.com</Issuer>
<NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />
</AuthnRequest>
使用SAML AuthnRequest XML计算签名,该XML生成XML签名标记,如下所示
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<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="#_d726aced-4c62-4562-8237-062f7faf0750">
<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>rxoGtdmI...rgY=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XRLdJHIGWClJxp....fTPUfIghl5kTfV4=</SignatureValue>
在查询字符串中添加签名的方法1
使用Base64编码和URL编码对AuthnRequest XML进行编码(无需嵌入签名)
按以下方式构建网址
https://IDP.com/adfs/ls/?SAMLRequest=UrlEncodedBase64AuthnRequest&RelayState=value&SigAlg=value&Signature=UrlEncodedBase64EncodedXMLSignature
在查询字符串中添加签名的方法-2
使用Base64编码和URL编码对AuthnRequest XML进行编码(无需嵌入签名)
按以下方式构建网址
https://IDP.com/adfs/ls/?SAMLRequest=UrlEncodedBase64AuthnRequest&RelayState=value&SigAlg=value&Signature=UrlEncodedValueExtractedFromSignatureValueTag
在这两种情况下,我都在IDP获得签名验证失败。有关如何生成要在URL中发送的签名的任何想法吗?
对此的任何帮助都会有很大的帮助!
谢谢,
Piush
答案 0 :(得分:3)
参见&#34;第3.4.4.1节DEFLATE编码&#34;在SAML 2.0 Bindings文档中,有关如何在使用REDIRECT绑定时包含DSig的具体说明。
答案 1 :(得分:-2)
HTTP-Redirect绑定中使用的签名不是XML签名。我建议再看看SAML v2.0绑定规范,第3.4节。
或者,看看我们的ComponentSpace SAML v2.0组件。这是.NET / ASP.NET的商业产品,完全支持SAML规范。