What is ASP.NET Identity's IUserSecurityStampStore<TUser> interface?
在查看ASP.NET标识(ASP.NET中的新成员实现)时,我在实现自己的
1 2 3 4 5 6 7 8 9 10 11 | //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); } } |
在进一步挖掘之后,似乎
除了这一点,我真的无法解释太多,因为我在Reflector中检查这段代码。几乎所有的符号和异步信息都被优化了。
另外,谷歌也没什么帮助。
问题是:- ASP.NET标识中的
SecurityStamp 是什么,它用于什么? - 创建身份验证cookie时,
SecurityStamp 是否扮演任何角色? - 是否需要采取任何安全措施或预防措施?例如,不要将此值发送到下游客户机?
更新(9/16/2014)
此处提供的源代码:
- https://github.com/aspnet/identity网站/
- https://github.com/aspnet/安全/
这是为了表示用户凭据的当前快照。因此,如果没有任何变化,邮票将保持不变。但是,如果用户的密码被更改,或者登录被删除(取消你的google/fb帐户的链接),那么图章就会改变。这是需要的事情,如自动签署用户/拒绝旧的cookie时,发生这种情况,这是一个功能,在2.0。
标识还不是开源的,它目前仍在开发中。
编辑:更新为2.0.0。因此,
在2.0.0中,我们添加了以下配置来钩住
1 2 3 4 5 6 7 8 9 10 11 | 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)) } }); |
如果应用程序想要显式触发此行为,它可以调用:
1 | UserManager.UpdateSecurityStampAsync(userId); |
现在不推荐使用useCookieAuthentication。我设法用
2从答复移动到按请求答复。
我观察到令牌验证需要SecurityStamp。
回购:在databsae中将securitystamp设置为空生成令牌(工作正常)验证令牌(失败)