如何安全解决SAML响应GET方法引发的HTTP 404.15查询字符串过长错误?
解决SAML响应GET方法查询字符串过长导致的HTTP 404.15错误
切换IDP的SAML响应传输方式为POST
这是最安全且彻底的解决方案,SAML规范本身就推荐用POST传输较长的响应。直接在身份提供商(IDP)的配置里,把目标应用的断言消费服务(ACS)绑定方式从HTTP-Redirect(对应GET请求)改成HTTP-POST。这样SAML响应会放在请求体里,既不受URL长度限制,也能避免敏感数据暴露在URL或服务器日志中。临时调整Web服务器的URL长度限制(仅应急用)
如果暂时没法修改IDP配置,可以先放宽服务器的URL长度限制,但这只是权宜之计,会增大潜在安全风险,不建议长期依赖:- 针对IIS服务器,修改
web.config文件:- 在
<system.webServer>节点下添加或调整请求过滤规则:<system.webServer> <security> <requestFiltering> <requestLimits maxQueryString="32768" maxUrl="65536" /> </requestFiltering> </security> </system.webServer> - 在
<system.web>节点下调整HTTP运行时参数:<system.web> <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536" /> </system.web>
- 在
注意:就算调高了限制,GET请求的URL长度仍受浏览器和服务器的固有上限约束,长期来看还是要切换到POST。
- 针对IIS服务器,修改
优化SAML响应体积
检查IDP返回的SAML响应,移除不必要的用户属性声明——很多IDP默认会返回大量属性,但应用可能只需要其中一小部分,跟IDP管理员沟通,只保留业务必需的属性。另外,大部分现代IDP支持SAML断言压缩(比如DEFLATE格式),启用压缩后能大幅减小响应体积,即使暂时用GET也可能避免长度超标,但安全性和可靠性还是不如POST。
内容的提问来源于stack exchange,提问作者Mohak
相关产品推荐
相关产品推荐

