注销在 Microsoft Azure Web App 中不起作用

Sam*_*uly 5 azure asp.net-web-api azure-active-directory azure-web-app-service

我正在使用以下方法来实现 Azure Web App 的注销功能。

我使用的网址为https://login.microsoftonline.com/ {0}/oauth2/logout?post_logout_redirect_uri={1},其中 {0} 是 Azure AD 网址,{1} 是 Web 应用程序网址。

示例网址:https://login.microsoftonline.com/myazuread.onmicrosoft.com/oauth2/logout ?post_logout_redirect_uri=http://myazurewebapp.azurewebsites.net

这给了我输出说明

您已退出帐户

关闭所有浏览器窗口是个好主意。”

但是,当我将网站网址放在浏览器上时,用户无需经过身份验证即可通过。我还添加了使 cookie 过期的代码,但这没有帮助。注销后,我希望用户被重定向到登录页面,并且用户应该必须经过身份验证才能登录。

Bru*_*hen 1

根据您的描述,我创建了一个不需要任何用户身份验证的新 ASP.NET Web 应用程序,然后我按照本教程将我的 Web 应用程序配置为使用 AAD 登录。

要将对站点的访问限制为仅通过 Azure Active Directory 身份验证的用户,请将请求未经身份验证时采取的操作设置为使用 Azure Active Directory 登录

当用户登录时,您可以找到一个名为AppServiceAuthSession以下的 cookie:

在此输入图像描述

对于注销的简单方法,您只需调用https://{your-webapp-name}.azurewebsites.net/.auth/logout,此内置端点将首先清除您的浏览器 cookie,然后重定向您以在 Azure AD 端处理注销,如下所示:

在此输入图像描述

当 Azure AD 端注销操作完成时,浏览器会将您重定向到post_logout_redirect_uri/.auth/logout/complete默认情况下),如下所示:

在此输入图像描述

综上所述,请在您的Web应用程序中使用fiddler捕获执行注销时的请求,并尝试查看AppServiceAuthSession注销后cookie是否已被删除。