ASP.Net Owin Authentication.SignOut 退出时未通过 RedirectUri 重定向用户
ASP.Net Owin Authentication.SignOut not redirecting user via RedirectUri on sign out
-- 下面做了一个编辑-修改后的问题在最下面:
我有一个多租户应用程序,它使用 Azure AD 对用户进行身份验证。
注销时应用程序似乎忽略了注销过程生命周期中的 .RedirectUri
属性。最初注销时,我可以看到应用程序最初在此处正确重定向:
https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri={REDIRECT URI}(和尾随 QueryString 变量)。
此过程完成后,应用程序将重定向到以下位置,并且不会再重定向回来:
https://login.microsoftonline.com/common/oauth2/v2.0/logoutsession
这为用户提供了标准“用户已注销,最好关闭所有浏览器 windows”。
如何防止最后一次重定向,并确保注销重定向回应用程序?
Dim callbackUrl As String = Request.Url.GetLeftPart(UriPartial.Authority) & Response.ApplyAppPathModifier("~/aservices/logout_response.aspx")
HttpContext.Current.GetOwinContext().Authentication.SignOut(
New AuthenticationProperties() With {.RedirectUri = callbackUrl},
OpenIdConnectAuthenticationDefaults.AuthenticationType,
CookieAuthenticationDefaults.AuthenticationType)
编辑: 看来这确实可以通过将 <asp:LoginStatus>
控件与 LogoutAction="Redirect"
属性 集一起使用来实现。如何在代码隐藏中复制此行为?
移动评论中的答案,
您需要在此 LoginStatus 控件中尝试 Session.Abandon()
。请参考here
-- 下面做了一个编辑-修改后的问题在最下面:
我有一个多租户应用程序,它使用 Azure AD 对用户进行身份验证。
注销时应用程序似乎忽略了注销过程生命周期中的 .RedirectUri
属性。最初注销时,我可以看到应用程序最初在此处正确重定向:
https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri={REDIRECT URI}(和尾随 QueryString 变量)。
此过程完成后,应用程序将重定向到以下位置,并且不会再重定向回来: https://login.microsoftonline.com/common/oauth2/v2.0/logoutsession
这为用户提供了标准“用户已注销,最好关闭所有浏览器 windows”。
如何防止最后一次重定向,并确保注销重定向回应用程序?
Dim callbackUrl As String = Request.Url.GetLeftPart(UriPartial.Authority) & Response.ApplyAppPathModifier("~/aservices/logout_response.aspx")
HttpContext.Current.GetOwinContext().Authentication.SignOut(
New AuthenticationProperties() With {.RedirectUri = callbackUrl},
OpenIdConnectAuthenticationDefaults.AuthenticationType,
CookieAuthenticationDefaults.AuthenticationType)
编辑: 看来这确实可以通过将 <asp:LoginStatus>
控件与 LogoutAction="Redirect"
属性 集一起使用来实现。如何在代码隐藏中复制此行为?
移动评论中的答案,
您需要在此 LoginStatus 控件中尝试 Session.Abandon()
。请参考here