簡體   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