带 ARR 的反向代理的 SSO ADFS 重定向问题
SSO ADFS redirection issue with reverse proxy with ARR
我使用 ARR 和 URL 在 IIS 8.5 上重写
public 暴露的站点是 http://publicsite
http:/public站点充当内部站点 http:/internalsite
的反向代理
在我们为内部站点实施 SSO 之前,一切都运行良好。
实施 sso 后,内部站点将重定向到 http:/ssosite 以进行身份验证
由于在 ARR 中我们启用了选项 "Reverse rewrite host in response headers",所以重定向到 sso 站点是不正确的。
为了让它工作 "Reverse rewrite host in response headers" 被禁用。并且 sso 重定向开始工作。
但现在发生的问题是在成功登录后 ADFS 尝试重定向到 http:/public 站点。反向代理以 302 响应,响应中的位置是 http:/internalsite,客户端计算机无权访问。
在同一浏览器中,如果我再次尝试访问站点 http:/publicsite,一切都按预期工作,因为它已经过身份验证,不需要重定向到 sso 站点并返回到应用程序。
我的理解是响应 header 不会被重写,因为我们禁用了 "Reverse rewrite host in response headers" 选项。
在反向代理服务器的applicationhost.config中设置preserveHostHeader="true"。这解决了这个问题。
我使用 ARR 和 URL 在 IIS 8.5 上重写
public 暴露的站点是 http://publicsite
http:/public站点充当内部站点 http:/internalsite
的反向代理在我们为内部站点实施 SSO 之前,一切都运行良好。 实施 sso 后,内部站点将重定向到 http:/ssosite 以进行身份验证
由于在 ARR 中我们启用了选项 "Reverse rewrite host in response headers",所以重定向到 sso 站点是不正确的。 为了让它工作 "Reverse rewrite host in response headers" 被禁用。并且 sso 重定向开始工作。
但现在发生的问题是在成功登录后 ADFS 尝试重定向到 http:/public 站点。反向代理以 302 响应,响应中的位置是 http:/internalsite,客户端计算机无权访问。
在同一浏览器中,如果我再次尝试访问站点 http:/publicsite,一切都按预期工作,因为它已经过身份验证,不需要重定向到 sso 站点并返回到应用程序。
我的理解是响应 header 不会被重写,因为我们禁用了 "Reverse rewrite host in response headers" 选项。
在反向代理服务器的applicationhost.config中设置preserveHostHeader="true"。这解决了这个问题。