我已经使用Azure AD为wordpress和Jira设置了2个saml应用程序。我要求设置应用程序以遵循此流程: 1.用户从WordPress网站注销 2.用户从Azure AD注销 3.销毁与活动用户会话单点登录相关的所有其他应用程序的会话(在我们的例子中,它可能是JIRA和其他应用程序)。
我已经取得了前两个步骤但是与第三个步骤挣扎。 Azure技术支持团队表示,他们提供了在注销时销毁所有应用程序会话的功能,但我找不到有关如何设置它的任何文档。
任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
如果要销毁所有应用程序的用户会话,可能需要使用会话管理。这意味着使用ADAL方法正确注销 。如果应用程序依赖Azure AD发出的访问令牌,则注销事件处理程序应调用。
示例(C#)
HttpContext.GetOwinContext().Authentication.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType)
它还应该通过调用Session.Abandon()方法来破坏用户的会话。以下方法显示用户注销的安全实现:
[HttpPost]
[ValidateAntiForgeryToken]
public void LogOff()
{
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Authority + TenantId, new NaiveSessionCache(userObjectID));
authContext.TokenCache.Clear();
Session.Clear();
Session.Abandon();
Response.SetCookie(new HttpCookie("ASP.NET_SessionId", string.Empty));
HttpContext.GetOwinContext().Authentication.SignOut(
OpenIdConnectAuthenticationDefaults.AuthenticationType,
CookieAuthenticationDefaults.AuthenticationType);
}
在this document中查看有关Seesion Management的更多详细信息。
在this document中查看有关ADAL的更多详情。