Sto utilizzando il middleware OWIN in un Authentication Server esterno che le mie applicazioni autenticano utilizzando il flusso di autorizzazione del codice di autorizzazione OAuth.OWIN SignOut non rimuove i cookie
Posso reindirizzare al server di autenticazione, autenticarsi con un provider esterno (Google) e reindirizzare nuovamente all'applicazione client con un utente registrato e il set di cookie dell'applicazione, ma quando provo ad uscire il cookie rimane dopo Chiamo il metodo AuthenticationManager.SignOut
Opzioni per il mio cookie nel Startup.Auth.cs
sono:
var cookieOptions = new CookieAuthenticationOptions
{
Provider = cookieProvider,
AuthenticationType = "Application",
AuthenticationMode = AuthenticationMode.Passive,
LoginPath = new PathString("/Account/Index"),
LogoutPath = new PathString("/Account/Logout"),
SlidingExpiration = true,
ExpireTimeSpan = TimeSpan.FromMinutes(30),
};
app.UseCookieAuthentication(cookieOptions);
app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ExternalCookie);
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
mio metodo login:
var loginInfo = await AuthManager.GetExternalLoginInfoAsync();
SignInManager.ExternalSignInAsync(loginInfo, true);
var identity = AuthManager.AuthenticateAsync(DefaultAuthenticationTypes.ExternalCookie).Result.Identity;
if (identity != null)
{
AuthManager.SignIn(
new AuthenticationProperties {IsPersistent = true},
new ClaimsIdentity(identity.Claims, "Application", identity.NameClaimType, identity.RoleClaimType));
var ticket = AuthManager.AuthenticateAsync("Application").Result;
var identity = ticket != null ? ticket.Identity : null;
if (identity == null)
{
AuthManager.Challenge("Application");
return new HttpUnauthorizedResult();
}
identity = new ClaimsIdentity(identity.Claims, "Bearer", identity.NameClaimType, identity.RoleClaimType);
AuthManager.SignIn(identity);
}
return Redirect(Request.QueryString["ReturnUrl"]);
Segno fuori Metodo:
var authTypeNames = new List<string>();
authTypeNames.Add("Google");
authTypeNames.Add("Application");
authTypeNames.Add("Bearer");
authTypeNames.Add(DefaultAuthenticationTypes.ExternalCookie);
Request.GetOwinContext().Authentication.SignOut(authTypeNames.ToArray());
ho guardato altre domande come: OWIN authentication, expire current token and remove cookie e OWIN - Authentication.SignOut() doesn't remove cookies
senza fortuna. Sono consapevole che potrei cancellare manualmente il cookie impostando una data di scadenza negativa, ma preferirei usarla nel metodo built se possibile.
Come si rimuove il Cookie dell'applicazione quando si chiude?
bene .. non è la prima volta che questo si precisa http://stackoverflow.com/questions/22571696/mvc5-identity-owin-signout-events – ymz
@ymz, che è una questione diversa. Sto chiedendo di uscire usando un Authentication Server esterno chiamato da un'altra applicazione. – Steve