【发布时间】:2018-12-10 16:28:01
【问题描述】:
我的解决方案包括:
- 在 ASP.NET Identity Core 之上运行 IdentityServer4 的 ASP.NET Core 2.1。
- ASP.NET Core 2.1 Web API 设置为使用 IdentityServer 作为身份验证提供程序。
- 使用
oidc-clientjavascript 库的 React SPA Web 应用程序。
当我创建新用户时,我设置了一些保存在 AspNetUserClaims 表中的自定义声明,如下所示:
然后,在我的 API 项目中,我想在控制器内部获取经过身份验证的用户的用户声明。
我原以为 this.User.Claims 会为我提供这些,但它返回的是以下内容,这似乎是与客户端应用程序相关的声明,而不是与用户相关的声明。
如何从 Web API 项目内的控制器访问这些自定义用户声明 (address, location, tenant_role)?
请记住,API 项目无权访问 UserManager 类或与 ASP.NET Identity Core 相关的任何内容。
【问题讨论】:
-
您是否在使用访问令牌?如果是这样,您可以将用户声明编码到令牌中,这应该隐式允许您通过
this.User.Claims访问它们。如果失败,您将需要创建访问 UserManager 的方法。 -
是的,我正在使用访问令牌(通过
Authorization: Bearer xxxx标头)。不确定如何将声明编码到 IdentityServer 中的令牌中。任何解释如何做到这一点的帖子/资源?
标签: c# asp.net identityserver4 claims-based-identity asp.net-identity-3