如何存储/检索大量用户身份声明

How to Store / Retrieve a Large Number of User Identity Claims

我有一个发布到 Web 服务器场的 ASPNET CORE 2.0 网站。我正在使用 Identity Role/User 声明进行授权。我有大量与已登录用户关联的声明,这会增加应用程序 cookie 的大小。我看到了一些处理这种情况的技巧,但不确定该采取什么方法。

当用户有大量声明时,如何跨多个 Web 服务器使用基于声明的身份?

Cookie 大小基本上是反对 "everything as a claim," 的最有力论据,这很不幸,因为该模型运行良好,否则(我一直站在你的立场上)。正如您所怀疑的那样,最好的方法是将您的声明限制在最低限度,并根据需要使用身份(主题 ID)从数据库中检索更详细的 app-specific 信息。

如果数据库 response-time 是一个问题,那么您基本上回到了有状态会话数据。 Microsoft 可能会引导您使用 Redis in-memory 缓存。不确定这是否是亚马逊上的一个选项,我使用 Azure。

我尝试了 ClaimsTransformer 例程,但它变得越来越麻烦,不断解决 "is this really a claim or just something we're treating as a claim?" 与仅分离 persistence/retrieval 真实 IDP 声明与内部 application-level 用户数据。