2014-12-02 59 views
4

我有一個OWIN中間件進行驗證。我們有兩種類型的身份驗證。 第一類是使用以下配置OWIN驗證,過期當前令牌並刪除co​​okie

var OAuthOptions = new OAuthAuthorizationServerOptions 
    { 
     AuthenticationType = DefaultAuthenticationTypes.ExternalBearer, 
     TokenEndpointPath = new PathString("/Token"), 
     Provider = new ApplicationOAuthProvider(PublicClientId), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
     AllowInsecureHttp = true, 
     AccessTokenFormat = new SecureTokenFormatter(GetMachineKey()) 
    }; 

和第二類使用的身份驗證cookie外部登錄

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ExternalCookie, 
    AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive, 
    CookieHttpOnly = true, 
    CookieSecure = CookieSecureOption.SameAsRequest, 
    CookieName = ".AspNet." + DefaultAuthenticationTypes.ExternalCookie, 
    ExpireTimeSpan = TimeSpan.FromMinutes(5), 
    TicketDataFormat = new SecureTokenFormatter(GetMachineKey()) 
}); 

承載令牌當用戶退出,我們實際上發出兩條註銷

Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); 

並且

Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalBearer); 

隨着第一個,我期待看到.AspNet.ExternalCookie Cookie從瀏覽器中刪除,而不是。 隨着第二個,我期待讓我的令牌無效和User.Current.Identity = null,這不是。

所以我怎麼能 1)物理註銷當前會話的當前身份? 2)從瀏覽器中刪除外部Cookie?

+0

我通過解決相同的問題:Request.GetOwinContext()。Authentication.SignOut(DefaultAuthenticationTypes.ApplicationCookie); FederatedAuthentication.SessionAuthenticationModule.SignOut(); – Alex 2016-08-20 07:46:51

回答

0

我遇到了同樣的問題,經過3天的搜索後,我發現asnwer(有點......)。

在您的註銷中嘗試一個(並且只有一個)這些代碼行。 (他們都爲我工作,但和我使用的是第一位的,但更多的例子越好,右?)

Request.GetOwinContext().Authentication.SignOut(); 

Request.GetOwinContext().Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie); 

HttpContext.Current.GetOwinContext().Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie); 

問題這篇文章中很好的描述,但它不提供(至少對我來說它沒有) http://coding.abel.nu/2014/11/catching-the-system-webowin-cookie-monster/