2017-09-22 27 views
0

私は、2つのsaml apps for wordpressとJiraをAzure ADでセットアップしました。 1. WordPressサイトからユーザーがサインアウトします。 2.ユーザーがAzure AD からログアウトします。3.アクティブユーザーセッションでシングルサインオンに関連付けられた他のすべてのアプリケーションのセッションを破棄します(私たちの場合、JIRAや他のアプリケーションかもしれません)。すべてのアプリからのAzure AD B2Cログアウト

私は最初の2つのステップを達成しましたが、3番目のステップでは苦労しました。 Azureのテクニカルサポートチームは、ログアウト時にすべてのアプリケーションのセッションを破壊する機能を提供していますが、セットアップ方法に関するドキュメントは見つかりません。

ご協力いただければ幸いです。ありがとう。

+0

destroryingセッションに到達するには、セッション管理が必要な場合があります。このドキュメントの詳細を参照してください:https://docs.microsoft.com/en-us/azure/security/azure-security-threat-modeling-tool-session-management –

+0

これはAzure ADまたはAzure AD B2Cのためのものですか? – Saca

+0

Azure ADの場合は、これを見てください:https://docs.microsoft.com/azure/active-directory/develop/active-directory-single-sign-out-protocol-reference – Saca

答えて

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管理の詳細については、こちらをご覧ください:以下の方法は、ユーザのログアウトの安全な実装を示しています。

詳細については、ADAL this documentをご覧ください。