如何从应用程序而不是 Azure AD 中注销?
Posted
技术标签:
【中文标题】如何从应用程序而不是 Azure AD 中注销?【英文标题】:How to log out from application but not from Azure AD? 【发布时间】:2022-01-09 02:28:21 【问题描述】:在我的 Asp.Net MVC 应用程序中,我最近集成了 Azure AD 身份验证。登录工作正常,但我无法正确注销。我只想从我的应用程序中注销用户,而不是“单点注销”。我读过的所有内容都是关于单点注销的。这是我尝试过的:
放弃会话并重定向到登录页面。在 html.AntiForgeryToken() 语句的登录页面上抛出与缺少声明相关的错误
Session.Abandon();
return RedirectToAction("Index", "Login");
这与 #1 有相同的错误
FederatedAuthentication.SessionAuthenticationModule.SignOut();
FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();
return RedirectToAction("Index", "Login");
这需要用户单点退出
HttpContext.GetOwinContext().Authentication.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType);
【问题讨论】:
你好@Apeksha,有什么更新吗?!?如果提供的解决方案有效,您能否接受它作为帮助其他社区成员解决类似问题的答案。 【参考方案1】:以下是@Jan Hajek here 建议的一些解决方法
确保 Azure AD 在您的 .NET 应用程序中列为连接服务。 这将防止单次注销。
我们可以在controller
中创建单点注销端点,如下例所示
return SignOut(
new AuthenticationProperties
RedirectUri = callbackUrl,
,
CookieAuthenticationDefaults.AuthenticationScheme
);
注意:-当我们点击注销时,它会清除正确的 cookie,因为用户会话(在 Razor 页面和 MVC 的情况下)存储在 Cookies 中。
我们还可以将redirect logout url
(例如-“<your-doman>/.auth/logout
”)设置为应用程序本身的主页,在该主页上要求再次登录。
更多信息请参考以下链接
微软博客:Expanding App Service Authentication/Authorization
SO THREAD
MS 医生:Customize sign-in and sign-out in Azure App Service authentication
【讨论】:
以上是关于如何从应用程序而不是 Azure AD 中注销?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure AD 作为身份提供者的 Azure ADB2C 单点注销
当存在要注销的多个帐户时,使用 SimpleSAMLphp 注销到 Azure AD 中的指定网站后不会发生重定向
更改 Azure AD B2C 注销 URL(将 AzureADB2C/Account/SignedOut 更改为自定义 URL)