.NET 4.0 WSFed应用认证成功后仅IE持续重定向至ADFS
我来帮你梳理下解决这个问题的几个关键方向,都是针对你遇到的「IIS Express下IE正常,但部署到IIS后IE丢失FedAuth Cookie导致6次重定向循环」的情况:
检查IIS站点的Cookie属性配置
IE对Cookie的兼容性和现代浏览器有差异,尤其是SameSite属性。如果你的站点是HTTPS环境,建议将FedAuth Cookie的SameSite设置为None并开启Secure标记,同时确保HttpOnly属性启用。你可以通过IIS站点配置面板调整,或者在代码生成Cookie时显式指定这些属性,避免IE因Cookie规则限制而无法保存FedAuth。核对ADFS信赖方的配置细节
登录ADFS管理控制台,确认应用信赖方的标识符和回复URL与IIS部署的域名完全匹配,包括HTTP/HTTPS协议(比如是https://yourdomain.com还是http://yourdomain.com)。IE对域名匹配的要求更严格,哪怕是多了个www或者协议不一致,都可能导致Cookie无法正确关联到站点。另外,检查令牌生命周期设置,避免因令牌过期过快引发重复跳转。排查IIS的URL重写规则
如果你的站点配置了URL重写(比如强制HTTPS、域名跳转),一定要确保这些规则排除了ADFS的回调端点(通常是/wsfed这类路径)。如果回调过程中被重写规则干扰,会导致FedAuth Cookie还没写入就触发跳转,自然会丢失Cookie引发循环。临时测试IE客户端安全设置
虽然不推荐修改客户端设置,但可以快速验证问题根源:把你的站点添加到IE的「受信任站点」列表,适当降低该区域的安全级别。IE默认对非受信任站点的Cookie权限限制更严,添加到受信任站点后,Cookie的读写权限会放宽,以此确认是否是客户端安全策略导致的Cookie丢失。调整.NET框架的WSFederation相关配置
在web.config里,确认<wsFederation>节点的realm和reply属性与IIS部署的URL完全一致。同时可以添加以下配置来强制Cookie的传递规则:<system.web> <sessionState cookieSameSite="None" /> <httpCookies httpOnlyCookies="true" requireSSL="true" /> </system.web>
附上你提供的Fiddler抓包截图:
内容的提问来源于stack exchange,提问作者Chinthaka

