如何为自定义用户服务向 GetProfileDataAsync 和 IsActiveAsync 的上下文添加声明?

How can I add claims to the context for GetProfileDataAsync & IsActiveAsync for a custom user service?

我正在实施一个 user service 将用户信息存储在 Azure Table 存储中。我想将租户 ID 的值用作我的分区键的一部分,但是,GetProfileDataAsync 和 IsActiveAsync 中可用的声明只是 5 个内置声明(sub、name、amr、idp、auth_time)。

我从我的身份提供者那里获得了租户 ID,它作为声明包含在我的访问令牌和身份令牌中。我怎样才能让这些方法可用?

当调用 AuthenticateLocal 时,您 return 一个 AuthenticateResult 来指示身份验证结果。如果成功,则使用接受 subjectname 值的 ctor 重载。还有一个可选的 claims 集合。如果您传递 claims 的值,那么您将向 IdentityServer 的身份验证 cookie 添加您自己的自定义声明。然后,这些声明是 GetProfile API 的 Subject 的一部分(假设对这些 API 的请求是通过浏览器完成的,例如来自授权请求)。然后您可以检查这些声明并以任何您想要的方式使用它们。

如果请求不是通过浏览器发出的,那么您对 ​​Subject 的唯一声明就是用户的唯一 ID(即 sub 声明)。