繁体   English   中英

反向代理背后的Azure App Service身份验证

[英]Azure App Service authentication behind a reverse-proxy

我正在使用Azure应用服务中的身份验证,也称为“轻松身份验证” https://docs.microsoft.com/zh-cn/azure/app-service/app-service-authentication-overview

如果我使用Azure名称浏览我的azure网站,则效果很好:[myid] .azurewebsites.net但是,如果将我的网站放在反向代理后面,则在身份验证之后,我总是会重定向到[myid] .azurewebsites。网络,而不是www。[mydomain] .com。 反向代理已正确配置为服务我的页面,并且无需身份验证即可正常工作。

我认为根本原因是“简易身份验证”如何构建redirect_uri参数。 使用Chrome F12,我注意到在最初重定向到身份验证服务期间,使用[myid] .azurewebsites.net而非www。[mydomain] .com构建了浏览器URL。

https://login.windows.net/034...51/oauth2/authorize?response_type=id_token&redirect_uri=https%3A%2F%2Fmyid.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback& ..... 。

我找不到指示/强制“轻松身份验证”使用www。[mydomain] .com的方法

有什么建议或想法吗?

-更新-
我使用Nginx作为反向代理。 配置文件的相关片段(已编辑):

server {
        server_name www.mydomain.com;
        listen 80;
        listen 443 ssl;
        ...
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-Host $host;
                proxy_pass https://myid.azurewebsites.net/;
        }
}

我们需要包括一个额外的参数,以指示成功认证后该过程应重定向到何处。 我们可以使用“ post_login_redirect_uri”参数来实现。 否则,该过程将重定向到默认的“身份验证成功”页面,并带有一个可返回到该站点的链接。

有关更多详细信息,请参阅此文档: https : //weblogs.asp.net/pglavich/easy-auth-app-service-authentication-using-multiple-providers

根据您的描述,我使用URL重写Azure函数代理作为我的反向代理来测试此问题,我发现我可能遇到与您提到的相同的问题。 我还尝试比较通过反向代理访问和直接访问之间的HeadersServerVariables ,并尝试覆盖相关的Header以缩小此问题,但最终失败了。 我假设由于我们正在使用内置的App Service身份验证/授权,因此无法覆盖redirect_uri参数的生成。

根据我的理解,您可以在反向代理下设置其他头,然后在应用程序中构建身份验证/授权,以选择其他头来生成redirect_uri并将用户重定向到相关的授权端点。 或者,您可以将Traffic Manager用于负载均衡器,然后可以解决此问题 此外,如果您只想自定义Azure Web应用程序域,则可以按照此处进行操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM