> <samlp:LogoutRequest ID="_36167d94-d868-4c04-aee3-8bbd4ed91317"
> Version="2.0" IssueInstant="2017-01-05T16:21:55.704Z"
> Destination="https://werain.me/"
> xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"><Issuer
> xmlns="urn:oasis:names:tc:SAML:2.0:assertion">urn:federation:MicrosoftOnline</Issuer><NameID
> Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
> xmlns="urn:oasis:names:tc:SAML:2.0:assertion">4948f6ce-4e3b-4538-b284-1461f9379b48</NameID><samlp:SessionIndex>_eafbb730-b590-0134-a918-00d202739c81</samlp:SessionIndex></samlp:LogoutRequest>
鉴于我的,注销请求看起来像这样。如果我必须验证注销请求,我是否必须构造看起来像这样的字符串(即原始字符串值)
SAMLRequest=<samlp:LogoutRequest ID="_36167d94-d868-4c04-aee3-8bbd4ed91317" ... </samlp:LogoutRequest>&SigAlg=http://www.w3.org/2000/09/xmldsig#rsa-sha1
然后验证上述字符串的签名还是encode
应该SAMLRequest
和SigAlg
值
IE
SAMLRequest=Base64 encode value or raw logout request&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1
这种混淆的原因是 SAML 规范说从这里提取
由构成 SAML 协议消息(不是 base64 编码版本)的原始、未编码 XML 的串联组成的字符串,
但是 OneSAML 使用 Base64 编码版本的请求(注销请求)创建签名。看看这里
不确定我必须用来验证签名的正确实现是什么。
注意:HTTP 重定向绑定。