Microsoft 欧文注销
本文关键字:注销 文注销 Microsoft | 更新日期: 2023-09-27 18:34:01
我正在使用Microsoft.Owin构建与许多其他应用程序集成的登录应用程序。
总而言之,我为每个尝试登录的应用程序生成一个访问令牌。 应用程序验证访问令牌并成功登录。
代码示例:
var identity = UserService.UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ExternalBearer);
AuthenticationTicket ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
var currentUtc = new SystemClock().UtcNow;
ticket.Properties.AllowRefresh = true;
ticket.Properties.IssuedUtc = currentUtc;
ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(30));
var dataProtectionProvider = new EFileDataProtectionProvider(client.ClientID, client.ClientSecret);
var accessTokenFormat = new TicketDataFormat(dataProtectionProvider);
Startup.OAuthBearerOptions.AccessTokenFormat = accessTokenFormat;
string accessToken = Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket);
return accessToken;
问题是:当用户从一个应用程序注销时,如何强制所有其他应用程序注销???
据
我了解,一旦一台设备登录,您就会尝试注销所有其他设备,因此始终只有一个用户在帐户上。
您需要做的是更新您的用户安全标记,如下所示:
await UserManager.UpdateSecurityStampAsync(user.Id);
然后ASP.Identity验证将负责其余的工作请注意,要使用"OnValidateIdentity"启用验证,如下所示:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromSeconds(60),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
这将每 60 秒检查一次每个设备上的图章验证。