1

我正在使用以下方法來實現Azure Web App的註銷功能。註銷在Microsoft Azure Web App中不起作用

我正在使用網址https://login.microsoftonline.com/ {0}/oauth2/logout?post_logout_redirect_uri = {1}其中,{0}是Azure AD網址,{1}是網絡應用的網址。

樣品網址:https://login.microsoftonline.com/myazuread.onmicrosoft.com/oauth2/logout?post_logout_redirect_uri=http://myazurewebapp.azurewebsites.net

這使我的輸出指出

你退出帳戶

這是一個好主意,關閉所有瀏覽器窗口的「

但是,當我把網站的網址放在瀏覽器上時,用戶不經過身份驗證,我也添加了過期cookies的代碼,但它沒有幫助。登出後,我希望將用戶重定向到登錄頁面,並且用戶還必須通過身份驗證才能登錄。

+0

您是否正在使用內置的[認證和授權](https://docs.microsoft.com/en-us/azure/app-service-api/app-service-api-authentication) Azure App Service提供的服務?看看這[問題](http://stackoverflow.com/questions/39386633/how-to-signout-from-an-azure-application)和[問題](http://stackoverflow.com/questions/ 32592787/owin認證-signout - 犯規 - 刪除餅乾)。 –

+0

@Bruce ..是的,我們正在使用Azure App Service提供的內置身份驗證和授權服務。我們已經嘗試了這些鏈接。但沒有運氣! –

+0

在這種情況下,將爲登錄用戶設置2個Cookie。一個用於「login.microsoftonline.com」的cookie,另一個用於您的網站。在您的文章中不清楚哪個cookie在再次登錄用戶時出錯。點擊'註銷'網址應該擦除登錄端點的cookie,但是您需要確保您還正在編寫代碼以刪除您的Web應用程序的Cookie。 –

回答

1

根據您的描述,我創建了一個新的ASP.NET Web應用程序,它不需要任何用戶身份驗證,然後我按照此tutorial配置我的Web應用程序使用AAD登錄。

限制訪問您的網站只能通過Azure中的Active Directory身份驗證的用戶,設置採取的措施時,請求未通過身份驗證登錄與Azure中的Active Directory

當用戶登錄後,你會發現一個名爲AppServiceAuthSession餅乾如下:

enter image description here

對於一個簡單的方法來註銷,你可以只調用https://{your-webapp-name}.azurewebsites.net/.auth/logout,這在建造端點會先清除瀏覽器的cookie,然後重定向你的日誌處理了在Azure的廣告結束如下:

enter image description here

當註銷操作在Azure的AD側完成,瀏覽器將您重定向到post_logout_redirect_uri(默認/.auth/logout/complete)如下:

enter image description here

總之,請利用fiddler捕獲時的要求在您的Web應用程序中執行註銷操作,並嘗試查看註銷後是否刪除了Cookie AppServiceAuthSession

+0

我已經嘗試過這種方法。該頁面被重定向到註銷頁面。但如果我再次把網頁的網址,我沒有通過身份驗證重定向到頁面。我在瀏覽器中檢查了Cookie。一旦我打開網址,我的網絡應用程序的Cookies就會顯示爲已刪除。但'login.microsoftonline.com'的cookie仍然存在。 –

+0

你的意思是你已經檢查了'AppServiceAuthSession' cookie在你註銷後從你的瀏覽器中被刪除了嗎?據我所知,如果'AppServiceAuthSession'被刪除,那麼用戶需要登錄。您是否在使用[URL授權規則](https://blogs.msdn.microsoft.com/appserviceteam/2016/11/17/url-authorization -rules /)? –

+0

當請求未通過Web應用程序的「身份驗證/授權」刀片的身份驗證時,您是否設置了**請求未通過身份驗證時採取的操作**至** AD **? –

0

@Bruce。不,我沒有使用任何URL認證規則。讓我告訴你一步一步發生的事情。 1)我已經使用了相同的網址,您提供了註銷網址。 2)頁面正在重定向到https://login.microsoftonline.com/myazuread.onmicrosoft.com/oauth2/logout?post_logout_redirect_uri=https://mywebapp.azurewebsites.net/.auth/login/aad/callback。它沒有被重定向到默認的註銷頁面。

Image of cookies on the page after redirecting to logout url 3)如果我導航到默認的註銷頁面(/。auth/logout/complete),然後點擊「返回到網站」一會兒,它會重定向到azure廣告登錄頁面//login.microsoftonline.com/dcc17943-54b6-4bc7-b284-71d39f03aeb0/oauth2/authorize?response_type= id_token & REDIRECT_URI = HTTPS%3A%2F%2Fmywebapp.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback & CLIENT_ID = 1ab2f820-2ca0-4a78-bfea-c849b91d339d &範圍= +的OpenID輪廓+電子郵件& response_mode = form_post & state = redir%3D%252F%26b2cPolicy%3D & nonce = d74940629d5e434eb6454648d33f371d_20170215104002。似乎它會自動進行身份驗證。然後重定向到主頁。我也手動刪除了Cookie。仍然是同樣的結果。

+0

您的'post_logout_redirect_uri'不正確,'.auth/login/aad/callback'被用作登錄回調。根據你的情況,當你訪問'/ .auth/logout','AppServiceAuthSession'被成功清除時,我認爲Azure AD端的註銷操作沒有正確完成,那麼當你訪問你的站點時,你會重定向到aad登錄頁面並自動進行身份驗證。 –

+0

請嘗試利用https:// {your-webapp-name} .azurewebsites.net/.auth/logout?post_logout_redirect_uri = /。auth/logout/complete或https:// {your-webapp-name} .azurewebsites.net/.auth/logout?post_logout_redirect_uri = {your-custom-page}'作爲註銷網址來測試您的註銷操作。此外,請按照此[教程](https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-how-to-configure-active-directory-authentication?toc =%2fazure%2fapp-service%2ftoc.json)檢查您的註冊申請與AAD。 –

+0

我已經使用完全相同的網址https:// {your-webapp-name} .azurewebsites.net/.auth/logout?po st_logout_redirect_u ri = /。auth/logout/com並且AppServiceAuthSession已成功清除。但是它不能清除https://login.microsoftonline.com/的cookies。這就是問題所在。如果我手動刪除cookie,我會得到登錄屏幕。但是,如果我不主頁網址簡單地通過登錄頁面並使用瀏覽器cookie進行身份驗證,並且不要求用戶進行任何身份驗證。 –

0

@布魯斯我找到了一些東西。如果我手動刪除所有來自chrome:// settings/cookies的cookies,然後重定向頁面,那麼它就可以工作。我可以通過編程方式嗎?使用JavaScript或C#