2015-05-29 60 views
0

我跟着this link瞭解WIF應用程序與ADFS 2.0, 其中我安裝了ADFS2.0和示例應用程序(在IIS中)在同一臺機器,現在我可以登錄到我的示例應用程序與Active Directory的用戶名和密碼,但問題是,雖然我從示例應用程序註銷它將我重定向到login.aspx頁面,但是當我點擊返回按鈕在瀏覽器和刷新我仍然可以登錄,這意味着我的會話不是在我的應用程序中過期。我是否需要在ADFS中清除登錄會話?如果有,我該如何做?我使用了「FederatedPassiveSignInStatus」工具,我假設它將從應用程序和ADFS中註銷。退出與WIF應用程序的ADFS2.0

this是我在gif中的演示。

<wif:FederatedPassiveSignInStatus ID="FederatedPassiveSignInStatus1" 
     runat="server" OnSignedOut="OnFederatedPassiveSignInStatusSignedOut" 
     SignInButtonType="link" FederatedPassiveSignOut="true" SignOutAction="FederatedPassiveSignOut" /> 

protected void OnFederatedPassiveSignInStatusSignedOut(object sender, EventArgs e) 
    { 
     WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule; 

     string signoutEndpoint = "https://test-server.test.localhost/ClaimsAwareWebAppWithManagedSTS/Login1.aspx"; // This can be stored in your configuration app settings 
     string signoutUrl = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(signoutEndpoint, authModule.Realm, null); 

     WSFederationAuthenticationModule.FederatedSignOut(new Uri(signoutUrl), new Uri("https://test-server.test.localhost/ClaimsAwareWebAppWithManagedSTS/Default.aspx")); 
    } 

回答

1

它看起來像Cookie從瀏覽器中清除。 但是,由STS創建的cookie不是。您需要確保STS正確接收註銷請求,因爲使用FederatedSignOut時應該如此。

有一個從這個鏈接的好方法signout:Claims Aware MVC4 App using WIF Identity and Access tool in .Net 4.5 Part II

if (HttpContext.Request.IsAuthenticated) 

     { 

      WSFederationAuthenticationModule instance = FederatedAuthentication.WSFederationAuthenticationModule; 

      instance.SignOut(false); 

      SignOutRequestMessage request = new SignOutRequestMessage(new Uri(instance.Issuer), instance.Realm); 

      return new RedirectResult(request.WriteQueryString()); 



     }