我正在尝试签署HTTP-Redirect绑定AuthenRequest,以便将其发送给Idp。签署请求的逻辑是什么?我使用我的x509和私钥签名吗?我是否使用我的私钥和Idp的x509证书进行签名?此外,Idp需要签名查询参数。我签名后,是否只是从请求中提取签名值?
我在c#.net
中开发由于
答案 0 :(得分:1)
您始终使用私钥进行签名。收件人将使用您的公钥验证签名。
在这种情况下,您使用私钥对SAML authn请求进行签名,身份提供商将使用您的公钥验证签名。
通常,您为身份提供商提供公钥作为证书文件或SAML元数据的一部分。
如果IdP要求签名作为查询字符串的一部分,这意味着他们希望您使用HTTP-Redirect绑定来发送authn请求。您需要查看SAML v2.0绑定规范以了解如何实现它。签名不是请求的一部分,因此不会从中提取。
答案 1 :(得分:0)
在HTTP-Redirect帖子中获取正确的Signature值的最佳和最简单的解决方案是使用名为ComponentPro的c#的第三方库。以下是我以前的工作:
NameValueCollection queryString = RedirectUtil.CreateQueryString("SAMLRequest", authnRequest.GetXml(), relayState, key, signatureAlgorithm);
密钥是私钥。