查看 ASP.NET Identity(ASP.NET 中的新成员身份实现),我在实现自己的接口时遇到了这个接口UserStore
:
//Microsoft.AspNet.Identity.Core.dll
namespace Microsoft.AspNet.Identity
{
public interface IUserSecurityStampStore<TUser> :
{
// Methods
Task<string> GetSecurityStampAsync(TUser user);
Task SetSecurityStampAsync(TUser user, string stamp);
}
}
IUserSecurityStampStore
默认实现EntityFramework.UserStore<TUser>
本质上是获取和设置TUser.SecurityStamp
财产。
经过更多挖掘后,似乎SecurityStamp
is a Guid
是在关键点处新生成的UserManager
(例如,更改密码)。
我无法真正破译除此之外的更多内容,因为我正在检查此代码反射器。几乎所有符号和异步信息都已被优化。
此外,谷歌也没有提供太多帮助。
问题是:
- 什么是
SecurityStamp
ASP.NET Identity 中的内容以及它的用途是什么?
- 是否
SecurityStamp
创建身份验证 cookie 时发挥什么作用?
- 是否有任何安全后果或需要采取预防措施?例如,不将此值发送给下游客户端吗?
更新(2014 年 9 月 16 日)
源代码可在此处获取:
- https://github.com/aspnet/Identity/ https://github.com/aspnet/Identity/
- https://github.com/aspnet/Security/ https://github.com/aspnet/Security/
这意味着您的用户凭据的当前快照。因此,如果没有任何变化,邮票将保持不变。但是,如果用户的密码被更改,或者登录信息被删除(取消链接您的 google/fb 帐户),则标记将会更改。这是在发生这种情况时自动签名用户/拒绝旧 cookie 之类的事情所需要的,这是 2.0 中出现的功能。
身份尚未开源,目前仍在酝酿之中。
编辑:更新为 2.0.0。所以主要目的是SecurityStamp
是在任何地方启用注销。基本思想是,每当用户更改与安全相关的内容(例如密码)时,最好自动使任何现有的登录 cookie 失效,因此,如果您的密码/帐户之前已被泄露,攻击者将不再具有访问权限。
在2.0.0中我们添加了以下配置来挂钩OnValidateIdentity
方法中的CookieMiddleware
看看SecurityStamp
并在 cookie 发生变化时拒绝它。它还会自动从数据库中刷新用户的声明refreshInterval
如果印章未更改(负责处理角色变更等问题)
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.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
如果您的应用程序想要显式触发此行为,它可以调用:
UserManager.UpdateSecurityStampAsync(userId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)