【问题标题】:How to enable HTTP endpoints for Redirect Url in AzureAD?如何在 AzureAD 中为重定向 URL 启用 HTTP 端点?
【发布时间】:2020-11-19 16:38:12
【问题描述】:

我已通过反向代理 (NGinx) 托管 Azure ServiceFabric Web 应用程序 (AspNetCore 3)。该应用程序使用 AzureAD(公司内部)身份验证。我已经为 AD 注册了应用程序并在清单中手动设置了重定向 URL。发布 APP 并配置 DNS 和反向代理后,我尝试向我的应用授权,但失败了 AADSTS500117: The reply uri specified in the request isn't using a secure scheme.

是否可以将客户端配置为允许 http 重定向?

附:据我所知,Identity Server 通过配置 DiscoveryPolicy 来允许它。

P.P.S.您可以在我的原始问题中找到更多信息(请参阅。How to change redirect_uri for Azure AD

【问题讨论】:

  • 为什么不能使用安全方案?不,除了 localhost 之外没有其他方法允许它。
  • 另外,看看你的另一个问题,这对你没有帮助。如果用户通过外部 URL 访问应用程序,您不希望将他们重定向到内部端点(特别是因为他们很可能没有本地网络访问权限)。由于您已经有一个面向外部的 HTTPS URL,因此您需要让应用程序的代码在构建重定向 URL 时使用外部主机名,而不是更改 Azure AD 应用程序注册配置。
  • @juunas,首先是在隔离网络中传输数据是多余的,其次,我使用Kestrel,建议仅在反向代理上处理HTTPS。
  • @PhilippeSignoret,你说得对,我需要使用外部主机名,但我找不到手动构建它的方法。
  • 你的意思是用户浏览器和应用程序之间的连接是隔离的?用户的机器使用重定向 URI 来访问应用程序。

标签: asp.net-core azure-active-directory asp.net-identity


【解决方案1】:

会发生什么?

当您使用反向代理部署 Web 应用程序时,例如将应用程序服务用作 Linux 容器的情况,您的应用程序将在 HTTP 地址上调用,而其在应用程序注册中注册的重定向 URI 将是 HTTPS。

这意味着当用户浏览 Web 应用程序时,他们将按预期重定向到 login.microsoftonline.com,但使用 redirect_uri=http://<your app service name>.azurewebsites.net/signin-oidc 而不是 redirect_uri=https://<your app service name>.azurewebsites.net/signin-oidc.

如何解决?

为了获得正确的结果,来自 ASP.NET Core 团队的关于使用代理的指导位于 Configure ASP.NET Core to work with proxy servers and load balancers。您应该通过使用UseForwardedHeaders 来修复请求字段(如方案)来集中解决该问题。

容器场景应该在 .NET Core 3.0 中默认解决。请参阅 .NET Core 3.0 预览版 6 中的转发标头中间件更新。如果您对此有任何问题,请联系 ASP .NET Core 团队https://github.com/dotnet/aspnetcore,因为他们将是帮助解决此问题的合适团队。

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 2015-04-29
    • 2016-04-29
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多