2017-09-22 5 views
0

Ich habe 2 Saml-Anwendungen für WordPress und Jira mit Azure AD eingerichtet. Ich werde aufgefordert, die Apps diesen Fluss zu folgen: 1. Benutzer meldet sich von WordPress-Website 2. Benutzer wird von Azure AD abgemeldet 3. Sitzung für alle anderen Anwendungen vernichten, die mit Single Sign-On mit aktiver Benutzersitzung verknüpft sind (in unserem Fall kann es JIRA und andere Anwendungen sein).Azure AD B2C Abmeldung von allen Apps

Ich habe die ersten zwei Schritte erreicht, aber mit dem dritten kämpfen. Azure Technical Support Team sagt, dass sie die Funktion zur Verfügung stellen, Sitzungen aller Anwendungen beim Abmelden zu zerstören, aber ich kann keine Dokumentation darüber finden, wie sie eingerichtet wird.

Jede Hilfe wäre willkommen. Vielen Dank.

+0

Um Desorrying-Sitzungen zu erreichen, benötigen Sie möglicherweise Sitzungsverwaltung. Weitere Informationen finden Sie in diesem Dokument: https: //docs.microsoft.com/en-us/azure/security/azure-security-threat-modeling-tool-session-management –

+0

Ist dies für Azure AD oder Azure AD B2C? – Saca

+0

Wenn Azure AD, haben Sie Folgendes gesehen: https://docs.microsoft.com/azure/active-directory/develop/active-directory-single-sign-out-protocol-reference – Saca

Antwort

0

Wenn Sie die Benutzersitzung aller Anwendungen zerstören möchten, müssen Sie möglicherweise Sitzungsverwaltung verwenden. Es impliziert eine ordnungsgemäße Abmeldung mit ADAL-Methoden. Wenn die Anwendung auf Zugriffstoken von Azure AD angewiesen ist, sollte der Abmeldeereignishandler aufrufen.

Beispiel (C#)

HttpContext.GetOwinContext().Authentication.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType) 

Es sollte auch Benutzersitzung zerstören, indem Session.Abandon() -Methode aufrufen. folgende Methode zeigt sichere Implementierung von Benutzerabmelde:

[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); 
} 

mehr Details über seesion-Management finden Sie in this document.

Weitere Informationen über ADAL in this document.