反向代理后面的 ADFS SSO 上的 .NET 问题

反向代理后面的 ADFS SSO 上的 .NET 问题

我有一个使用 ADFS 进行 SSO 的 .NET 应用程序。当我在本地计算机和测试环境中测试它时,它可以正常工作,但部署到客户端环境时它会失败。

客户端环境如下:HTTPS公网IP:443 -> NAT内网IP -> 加速器:80 -> 负载均衡器:80 -> 反向代理服务器:80 -> APP服务器:80

反向代理将 URL 从 app.url.com 重写为 app-internal.url.com

该应用程序应像这样工作:

  1. 用户将访问 http s://app.url.com/appname。然后,.NET 应用程序在首次加载时会将用户重定向到 ADFS 服务器:http s://adfsurl.domain.com/adfs/ls?

  2. 身份验证成功后,ADFS 将重定向回应用程序 URL。

我的问题是应用程序正在重定向到http://app.url.com/adfs/ls/? 而不是 http s://adfsurl.domain.com/adfs/ls?

我是否需要做其他配置,例如出站规则?

答案1

您可能需要取消选择在响应标头中反向重写主机在 ARR 设置中,并在 applicationhost.config 中另外设置 retainHostHeader="true"

  1. 打开 Internet 信息服务 (IIS) 管理器。
  2. 在里面連接窗格中,选择服务器。
  3. 在服务器窗格中,双击应用程序请求路由缓存
  4. 在里面操作窗格中,单击服务器代理设置
  5. 应用程序请求路由页面,取消选择在响应标头中反向重写主机

要在 applicationhost.config 中设置preserveHostHeader="true":

  1. 以管理员身份运行命令提示符
  2. %WINDIR%\System32\inetsrv\appcmd.exe set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost

看:

https://stackoverflow.com/questions/4243959/iis-reverse-proxy-with-rewrites-cant-handle-a-redirect-from-the-server-we-proxy

https://stackoverflow.com/questions/43433352/sso-adfs-redirection-issue-with-reverse-proxy-with-arr

相关内容