如何为自定义用户服务向 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
来指示身份验证结果。如果成功,则使用接受 subject
和 name
值的 ctor 重载。还有一个可选的 claims
集合。如果您传递 claims
的值,那么您将向 IdentityServer 的身份验证 cookie 添加您自己的自定义声明。然后,这些声明是 GetProfile
API 的 Subject
的一部分(假设对这些 API 的请求是通过浏览器完成的,例如来自授权请求)。然后您可以检查这些声明并以任何您想要的方式使用它们。
如果请求不是通过浏览器发出的,那么您对 Subject
的唯一声明就是用户的唯一 ID(即 sub
声明)。
我正在实施一个 user service 将用户信息存储在 Azure Table 存储中。我想将租户 ID 的值用作我的分区键的一部分,但是,GetProfileDataAsync 和 IsActiveAsync 中可用的声明只是 5 个内置声明(sub、name、amr、idp、auth_time)。
我从我的身份提供者那里获得了租户 ID,它作为声明包含在我的访问令牌和身份令牌中。我怎样才能让这些方法可用?
当调用 AuthenticateLocal
时,您 return 一个 AuthenticateResult
来指示身份验证结果。如果成功,则使用接受 subject
和 name
值的 ctor 重载。还有一个可选的 claims
集合。如果您传递 claims
的值,那么您将向 IdentityServer 的身份验证 cookie 添加您自己的自定义声明。然后,这些声明是 GetProfile
API 的 Subject
的一部分(假设对这些 API 的请求是通过浏览器完成的,例如来自授权请求)。然后您可以检查这些声明并以任何您想要的方式使用它们。
如果请求不是通过浏览器发出的,那么您对 Subject
的唯一声明就是用户的唯一 ID(即 sub
声明)。