ASP.NET Identity 的 IUserSecurityStampStore 接口是什么?

2024-03-22

查看 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(例如,更改密码)。

我无法真正破译除此之外的更多内容,因为我正在检查此代码反射器。几乎所有符号和异步信息都已被优化。

此外,谷歌也没有提供太多帮助。

问题是:

  • 什么是SecurityStampASP.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(使用前将#替换为@)

ASP.NET Identity 的 IUserSecurityStampStore 接口是什么? 的相关文章

  • 实体框架获取前 10 行

    我在 SQL 数据库中有 3 个表 tbl视频 VideoID int PK Title varchar 100 Decription varchar 100 tblTags TagID int PK TagText varchar 100
  • 在asp.net中自动调用文本框textchange事件

    我有一个表单 从其中导航到我的表单 其中有一个用于数量的文本框 之前我是输入数量的 现在 IO 有一个工作流程 这就是其他形式出现的原因 现在 我已经完成了文本框文本更改事件的大量编码 当我做response redirect在其他形式中
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • jquery/javascript 处理后移至命名锚点

    在进行一些 jquery 处理后 如何将焦点移动到同一页面上的不同部分 名为锚点 函数 ABC 进行一些处理 然后 我需要将用户移动到同一页面上的某个部分 页面下方 您可以使用下面的代码将屏幕滚动到 div 只需更改选择器以匹配您要滚动到的
  • 找到的构造函数都无法使用可用的服务和参数 Autofac 进行调用

    我已阅读并编码以下示例 http timschreiber com 2015 01 14 persistence ignorant asp net identity with patterns part 1 http timschreibe
  • 避免 AngularJS 部分视图在 IE 中缓存

    我正在开发一个 ASP NET MVC 应用程序 它也有一些 angularJS 我有一个主页 其中有不同的选项卡 当您单击它们时 它们会加载角度部分视图 主页是这样的 div class widget div div class widg
  • 为什么 Visual Studio 不移动发布中的某些文件?

    当我尝试发布项目时 Visual Studio 不会将某些文件移动到目标发布文件夹 目前我有这个问题 json文件 我正在使用 Visual Studio 2010 和 MVC4 是否有关于应发布哪些文件或 mime 类型并将其移动到目标文
  • 使用 GUID 作为 ASP.NET MVC 数据库中的 ID

    我正在学习 ASP NET MVC 我正在关注有关的基本教程之一asp net http www asp net mvc whatisaspmvc 由于我并不总是严格遵循教程 因此我决定使用 GUID 作为标识列而不是整数 一切都工作正常
  • 检查Web服务是否存在

    有人可以告诉我确定给定 URL 是否存在 Web 服务 ASP NET 的最佳方法吗 我假设一种方法类似于使用 System Net Webclient 发出请求 但我如何确定它是否是有效的 Web 服务以及我应该发出哪种类型的请求 编辑
  • 反序列化 DateOnly

    我有一条正在尝试反序列化的记录 public record MementoTimeEntry Guid Id Guid ActivityId string UserId string Title TimeOnly StartTime Tim
  • 无法将 iTextSharp 与 ASP.NET 5 Core 一起使用

    我正在尝试将 iTextSharp 与 ASP NET 5 Core 一起使用 但是 当我尝试使用 iTextSharp 5 5 5 构建 ASP NET 应用程序时 出现这些错误 Code using Microsoft AspNet M
  • 如何从 ASP.NET 中的 DetailsView 控件获取值?

    我的页面上有详细信息视图 我设置DefaultMode Edit 现在我想获取用户将在此单元格中编辑的值
  • HTTP 403 Forbidden:访问被拒绝 ASP.NET Web API

    在生产服务器上运行 ASP NET Web API 项目时 我收到以下错误 403 禁止 访问被拒绝 您没有权限查看 使用您提供的凭据访问此目录或页面 查看 IIS 7 0 错误日志 基本错误是 403 14 目录列表被拒绝 我已经配置了生
  • 为什么 GridView Rowupdating 事件不捕获文本框的新值?

    我正在使用网格视图 当我单击编辑按钮时 会出现更新和取消按钮 修改来自 EditItemTemplate 的文本框中的值后 新值不会显示在事件处理程序 rowupdating 中 而是获取渲染页面时出现的值 如何从这些文本框中获取新值并进一
  • 如何将除 Web API 之外的所有内容路由到 /index.html

    我一直在研究一个AngularJS项目 在 ASP NET MVC 内部使用 Web API 除非您尝试直接访问有角度的路由 URL 或刷新页面 否则它效果很好 我认为这将是我可以处理的事情 而不是胡闹服务器配置MVC的路由引擎 当前的We
  • 在网页中编辑Word文档

    我意识到这个问题以前已经被问过很多次了 但现在很多都已经老了 没有答案 我需要用户能够从我的网页编辑Word文档 是否有任何编辑器或组件可以让我执行此操作 一些背景知识 用户将能够将 Word 文档上传到我的网站 然后从那里查看 编辑它 用
  • 如何在 Asp.Net Core 6 中向类型化 HttpClient 添加承载令牌身份验证

    我正在尝试使用 ASP Net Core 6 设置一个 Web api 以便用户可以到达我的端点 然后我使用特权帐户在幕后的 D365 中执行一些工作 我正在使用类型化的 HTTP 客户端 但我不确定如何插入承载身份验证 以便来自该客户端的
  • ASP.NET MVC:DataAnnotations - 显示一条错误消息,指示字段必须是数字

    DataAnnotations 的工作方式似乎存在一些漏洞 因为用户在将进入 int 的字段中输入一些文本将永远不会到达 DataAnnotations 代码 它会引发模型绑定错误并向用户显示错误 值 a 对于 XXXX 字段无效 不管怎样
  • 自动 IIS6 403.4 重定向到 SSL 不起作用

    我的 ASP Net 网站中有一个目录需要启用 SSL 对于所有其他目录 我不希望启用 SSL 使用 IIS 我为我想要需要 SSL 的文件夹选中了 需要安全通道 SS 和 128 位加密复选框 现在 当用户在我的安全目录中输入 http
  • C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

    我正在开发 2 个应用程序 第一个是 C 控制台应用程序 另一个是 Asp net Web 应用程序 我正在使用 SignalR 连接两者 这是我的 C 控制台应用程序 客户端 public class RoboHub public sta

随机推荐

  • 在 SwiftUI (tvOS) 中获取按钮的 onFocusChange 回调

    The onFocusChange关闭于focusable onFocusChange 修饰符允许我在子视图聚焦时为父视图设置属性 如下所示 struct ContentView View State var text String var
  • 如何在 Windows Azure 中为 Blob 存储配置 CORS 设置

    我在天蓝色存储中创建了几个容器 并将一些文件上传到这些容器中 现在我需要授予对容器 blob 的域级别访问权限 所以我从代码级别进行了尝试 如下所示 CloudStorageAccount storageAccount CloudStora
  • 如何在具有美丽汤的div中选择一个div类?

    我在 div 标签内有一堆 div 标签 div class foo div class bar I want this div div class unwanted Not this div div div class bar Don t
  • 如何在 Python 中获取输出的大小(以字节为单位)

    首先 我要感谢所有帮助过我的人 环境 我在 Windows 8 操作系统中使用 Python v2 7 我正在使用 COM4 通过在 Python 代码中发送一些命令来与机器人对话 我发送命令getversion到机器人并假设获得一堆数据
  • 验证 OpenSSL 中证书的域

    我需要使用 C land OpenSSL 验证 X509 证书的域 我的理解是 该库不会为我执行此操作 并且我必须大致实现以下算法 如果 subjectAlternativeName 扩展的 dnsName 字段存在 则设置name到那个值
  • 如何强制关闭新行上的 HTML 标签?

    在 VS Code 中 我广泛使用 Beautify 但让我感到不安的是 关闭标签总是与 浮动 文本或自关闭标签位于同一行 例如 在 Beautify 之前 div class wrap img src wp content uploads
  • 以编程方式缩小网页

    我们构建了一个在 19 英寸屏幕上完美运行的 Web 应用程序 在 Firefox 上作为 KIOSK 运行 它包含大量图像和围绕这些图像放置的内容文本 在我们将设备更改为 18 5 英寸屏幕之前 它运行得很好 现在 它周围有滚动条 内容和
  • python distutils:访问已编译扩展的名称

    我使用 distutils 编译一个基于 swig 的扩展模块 python setup py build ext产生文件 my module ext cpython 32m so 来自一个 c and a i文件 这个名称似乎取决于所使用
  • 在 JavaScript 中使用全局变量

    我该怎么做呢 我的代码是这样的 var number null function playSong artist title song id alert old number was number var number 10 alert n
  • 如何在grails shiro中使用缓存权限

    每次我打电话subject isPermitted 它向数据库发送一条sql 我怎样才能缓存它 有什么例子吗 谢谢 我阅读了 shiro grails 插件的文档 但无法解决它 数据源 hibernate cache use second
  • 删除 Ruby 中的换行符

    我在删除时遇到问题 n and r标签 当我使用双引号时 它工作正常 否则它会离开 With gsub 如果没有双引号 它根本不起作用 为什么 Remove n delete n result Remove Remove n delete
  • 调用 MVC4 Razor DisplayTemplate,生成 HTML,但未渲染到浏览器

    我有一个迭代集合并调用的视图DisplayFor 对于集合中的每个元素 我需要手动迭代 而不是将集合传递给 DisplayFor 以便告诉模板是否应该在列表中绘制中断 列表中的项目只有两种类型 按它们排序 因此我只需要显示此中断一次 我的模
  • 具有高级混合索引的 Numpy 子数组分配

    原问题 当我尝试分配数组的某些元素时 我收到一条非常奇怪的错误消息 我使用切片和一组索引的组合 请参阅以下简单示例 import scipy as sp a sp zeros 3 4 5 b sp ones 4 5 I sp array 0
  • 本地主机和带有 Auth0 的 CORS 不允许我登录

    我正在制作一个 React 应用程序并尝试使用 Auth0 进行身份验证 尝试登录后 它返回 XMLHttpRequest 无法加载https my domain auth0 com 用户名密码 登录 https my domain aut
  • 了解 matplotlib:plt、figure、ax(arr)?

    我并不是很陌生matplotlib我非常羞愧地承认我一直使用它作为尽可能快速 轻松地获得解决方案的工具 所以我知道如何获得基本的情节 子情节和东西 并且有相当多的代码可以不时地重用 但我没有 深入的 呃 知识 matplotlib 最近我想
  • R 中的 Reduce() 对相似变量名导致错误

    我有 19 个由 lapply 和 split 操作生成的嵌套列表 这些列表的形式如下 list1 Var col1 col2 col3 A 2 3 4 B 3 4 5 list2 Var col1 col2 col3 A 5 6 7 B
  • MYSQL 选择一列中的两个值

    我需要从 mysql 表中选择一行 该表中有两行具有相同的值 TABLE articleId keywordId 现在我需要选择一篇文章 其关键字 Id 1 以及关键字 Id 12 每个关键字的链接都有自己的记录 如何执行一个选择查询来知道
  • tomcat 7.0.42 上的 403 访问被拒绝

    我有错误tomcat 7 0 42 上的 403 访问被拒绝访问 Tomcat Manager 应用程序时 这就是我所拥有的tomcat 用户 xml文件 我曾多次尝试更换角色 但没有成功 注意 我从 NetBeans 7 3 1 启动 停
  • 获取 icloud Web 服务端点以获取数据

    我的问题可能看起来很愚蠢 但我在谷歌上进行了太多搜索后才问这个问题 但没有任何线索 我正在使用 iCloud 网络服务 为此 我已将此 Python 代码转换为 PHP https github com picklepete pyiclou
  • ASP.NET Identity 的 IUserSecurityStampStore 接口是什么?

    查看 ASP NET Identity ASP NET 中的新成员身份实现 我在实现自己的接口时遇到了这个接口UserStore Microsoft AspNet Identity Core dll namespace Microsoft