在自定义声明中保留用户安全配置文件数据

FSo*_*ou1 6 asp.net claims-based-identity asp.net-identity asp.net-core

我的应用程序必须使用在用户配置文件/管理中手动提供的外部服务来获取数据api key & api secret.

我想阻止大量的重新审查数据库的必要密钥查询并将其保存在其他地方(假设这些密钥不会过于频繁地更新).

从我的观点来看,它可以通过下一个选项实现:

  1. 使用MemoryCache提供者SlidingExpiration;
  2. 创建自定义Claim并将其附加到现有的Identity声明集合中;

如果我错了,请纠正我,但如果我意识到这一点 - 声明的信息是数据的一部分,用于前端的序列化/反序列化< - >后端交互(我对它不太自信,但是假设它在cookie和令牌中使用).

实际上,这些密钥对于多个后台进程(例如,消息队列使用者或预定作业)也是必需的.

你介意让我知道一种以优化的方式持久保存这些受保护和经常使用的字段的正确方法吗?

先感谢您.

gld*_*ael 3

SignInManager当您使用其中一种登录方法登录时,它会在浏览器上设置一个 cookie,其中包含访问令牌。该 cookie 包含索赔数据。因此,在后续的授权请求中,您可以查询该User.Claims字段以访问所需字段,而无需访问您的数据存储。

现在,您是否选择使用声明完全取决于您需要 API 密钥/秘密的频率。您的声明是访问令牌的一部分。如果在每个请求上发送 API 密钥/秘密是合理的,那么声明是理想的选择。


更新:

与其在前端解密令牌,不如将它们与访问令牌一起发送到前端客户端。

如果您不知道IdentityServer4OpenIddict,请检查它们。它可能拥有您需要的一切。