我正在使用以下方法实现Azure Web App的注销功能。
我正在使用URL https://login.microsoftonline.com/ {0}/oauth2/logout?post_logout_redirect_uri={1},其中{0}是Azure AD URL,{1}是Web应用程序URL。
示例URL:https://login.microsoftonline.com/myazuread.onmicrosoft.com/oauth2/logout?post_logout_redirect_uri=http://myazurewebapp.azurewebsites.net
这会给出输出
您已注销帐户
最好关闭所有浏览器窗口。”
但是当我把网站的网址放在浏览器上时,用户没有经过身份验证就可以通过了。我还添加了使cookie过期的代码,但这并没有帮助。在注销后,我希望用户被重定向到登录页面,而且用户必须经过身份验证才能登录。
3条答案
按热度按时间nszi6y051#
根据您的描述,我已经创建了一个新的ASP.NET Web应用程序,它不需要任何用户身份验证,然后我按照这个tutorial配置我的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
),如下所示:总之,请利用fiddler捕获在您的web应用中执行注销时的请求,并尝试查看cookie
AppServiceAuthSession
是否在您注销后被删除。ddrv8njm2#
@布鲁斯。不,我没有使用任何URL验证规则。让我一步一步地告诉你发生了什么。1)我使用了你提供的注销URL。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&scope=openid+profile+email&response_mode=form_post&state=redir%3D%252F%26b2cPolicy%3D&nonce=d74940629d5e434eb6454648d33f371d_20170215104002。看起来它会自动在那里通过身份验证。然后重定向到主页。我也手动删除了cookie。结果还是一样。
bogh5gae3#
@布鲁斯我发现了一些东西。如果我手动删除chrome://settings/cookies中的所有cookie,然后重定向页面,那么它就可以工作了。我可以通过编程来做吗?使用javascript或C#