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

时间:2017-02-13 11:20:21

标签: azure asp.net-web-api azure-web-sites azure-active-directory

我使用以下方法为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

这给我输出陈述

  

您已退出帐户

     

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

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

3 个答案:

答案 0 :(得分:1)

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

  

要将您的网站访问限制为仅限Azure Azure目录进行身份验证的用户,请将请求未经过身份验证时采取的操作设置为使用Azure Active Directory登录。< / p>

当用户登录后,您可以找到名为AppServiceAuthSession的Cookie,如下所示:

enter image description here

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

enter image description here

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

enter image description here

总之,请在您的网络应用中执行注销时利用fiddler来捕获请求,并在您注销后尝试查看Cookie AppServiceAuthSession是否已被删除。

答案 1 :(得分: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 /授权RESPONSE_TYPE = id_token&安培; REDIRECT_URI = HTTPS%3A%2F%2Fmywebapp.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback&安培; CLIENT_ID = 1ab2f820-2ca0-4a78-bfea-c849b91d339d&安培; scope = openid + profile + email&amp; response_mode = form_post&amp; state = redir%3D%252F%26b2cPolicy%3D&amp; nonce = d74940629d5e434eb6454648d33f371d_20170215104002。好像它会自动在那里进行身份验证。然后重定向到主页。我也手动删除了cookie。结果仍然相同。

答案 2 :(得分:0)

@Bruce我发现了一些东西。如果我手动删除chrome:// settings / cookies中的所有cookie,然后重定向页面,那么它可以正常工作。我能以编程方式完成吗?使用javascript或C#