我最近开始使用SAML进行我的网站身份验证,除了1个特定问题外,该身份验证效果很好。
某些用户(如果有帮助,所有用户都在相同的域组策略中)在加载网站时出错:
从客户端
检测到潜在危险的Request.Form值
我知道这个错误并不会因为网站的代码而发生,因为它始终有效并且仍可在95%的用户上正常使用。
我已经在SAML上做了一些阅读,似乎SAML请求是通过编码类似XML的消息通过URL传输的:
<samlp:AuthnRequest>
获取此base64编码的消息:
https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=fZFfa8IwFMXfBb9DyXvaJtZ1BqsURRC2
Mabbw95ivc5Am3TJrXPffmmLY3%2FA15Pzuyf33On8XJXBCaxTRmeEhTEJQBdmr%2FRbRp63K3pL5rPhYOpkVdY
ib%2FCon%2BC9AYfDQRB4WDvRvWWksVoY6ZQTWlbgBBZik9%2FfCR7GorYGTWFK8pu6DknnwKL%2FWEetlxmR8s
BHbHJDWZqOKGdsRJM0kfQAjCUJ43KX8s78ctnIz%2Blp5xpYa4dSo1fjOKGM03i8jSeCMzGevHa2%2FBK5MNo1F
dgN2JMqPLmHc0b6WTmiVbsGoTf5qv66Zq2t60x0wXZ2RKydiCJXh3CWVV1CWJgqanfl0%2Bin8xutxYOvZL18NK
UqPlvZR5el%2BVhYkAgZQdsA6fWVsZXE63W2itrTQ2cVaKV2CjSSqL1v9P%2FAXv4C
现在,如果类似XML的消息被编码,那么通过URL传输几个字符就不会有问题。我怀疑问题在于,类似XML的邮件是在没有编码的情况下发送的,导致URL中出现非法字符(&#39;&lt;&#;;&#39;&gt;&#39;)。
注意:首次打开网站成功后,错误仅在第一次发生后才会发生。如果他们清除了cookie,他们就可以打开网站。 (再次,只有一次,然后错误发生,直到他们再次清除cookie)
有没有人知道可能导致某些用户/计算机无法编码邮件的原因是什么?或者我如何知道哪个URL是SAML生成(因此我可以确定XML是否真的没有被编码)
答案 0 :(得分:0)
问题是页面地址是:
https://ServerName.ServerDomain/AppName
有些用户正在使用此地址:
https://ServerName/AppName