我有一个通过反向代理(NGinx(托管的Azure ServiceFabric web应用程序(AspNetCore 3(。该应用程序使用AzureAD(公司内部(身份验证。我已经为AD注册了应用程序,并在清单中手动设置了重定向URL。在发布应用程序并配置DNS和反向代理后,我试图授权给我的应用程序,但AADSTS500117: The reply uri specified in the request isn't using a secure scheme.
失败
是否可以将客户端配置为允许http重定向
附言:据我所知,Identity Server通过配置DiscoveryPolicy允许它。
附言:你可以在我的原始问题中找到更多信息(请参阅。如何更改Azure AD的重定向uri(
会发生什么
当您使用反向代理部署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团队关于使用代理的指导是在"配置ASP.NET Core以使用代理服务器和负载均衡器"中。您应该通过使用UseForwardedHeaders
来修复请求字段(如scheme(来集中解决这个问题。
默认情况下,容器场景应该在.NET Core 3.0中得到解决。请参阅.NET Core 3.0预览版6中的转发标头中间件更新。如果您对此有任何问题,请联系ASP.NET核心团队https://github.com/dotnet/aspnetcore,因为他们将是协助这项工作的合适团队。