向声明添加权限 - Microsoft.Identity.Web 和 B2C

问题描述

我想就如何向用户身份添加自定义声明的任何文章/文档寻求建议或指导。我正在从事的项目是将 Azure B2C 与 Microsoft.Identity.Web 结合使用。

我正在寻找一种在 Web 应用程序中的 Web 请求期间添加自定义声明的可靠方法。该声明将包含从应用程序数据库获得的权限。因此,我还需要一种在请求之间存储该声明的方法,这样我就不会在每次请求时都访问数据库

存储在数据库中的角色和权限模型非常复杂和动态(由管理员管理),因此可以选择通过图形 API 在 B2C 中简单地存储自定义声明。

我正在考虑使用中间件进行声明转换:

  • 这是否适用于 Microsoft.Identity.Web 还是我不应该做的事情?

  • 仍然不确定如何在请求之间保持声明 - 在使用 Microsoft.Identity.Web 时是否有任何可靠的方法

解决方法

如果您想在令牌中拥有权限,并且我认为这是最佳方式,那么我会选择将这些权限保存在用户对象中,例如 Base64 编码的 JSON。您可以拥有非常复杂的结构,AAD B2C 只会在用户的令牌中返回。然后,一旦它命中您的 API,您就可以使用此值执行您想要的操作。它位于令牌中,因此已正确签名,并且您在每个请求中都会获得令牌,因此您无需考虑访问任何数据库。