【问题标题】:How to check user role in a resource server when using Thinktecture.IdentityServer.v3使用 Thinktecture.IdentityServer.v3 时如何检查资源服务器中的用户角色
【发布时间】:2014-11-17 15:17:22
【问题描述】:

我下载[Thinktecture.IdentityServer.v3][1] 和相应的客户项目。我想检查SampleAspNetWebApi 项目中的用户角色。 所以我将示例方法更改如下

 [Authorize(Roles="Admin")]

 public class IdentityController : ApiController
    {
        public dynamic Get()
        {
            var principal = User as ClaimsPrincipal;

            return from c in principal.Identities.First().Claims
                   select new 
                   {
                       c.Type,
                       c.Value
                   };
        }
    }

我使用WPF hybrid client 调用服务并使用具有Admin 角色的alice 用户。 但它返回未经授权的错误。 用户已通过身份验证,但未设置角色。

如何查看 SampleAspNetWebApi 项目中的用户角色?

【问题讨论】:

    标签: c# wpf asp.net-web-api thinktecture-ident-server


    【解决方案1】:

    Authorize 属性查找 Microsoft/.NET 特定的角色声明类型

    http://schemas.microsoft.com/ws/2008/06/identity/claims/role

    我们发出一个简单的“角色”声明。

    您可以将传入的声明映射到 ASP.NET 所期望的内容 - 但这已关闭 - 尝试从 startup.cs 中删除此行:`

    JwtSecurityTokenHandler.InboundClaimTypeMap = ClaimMappings.None;

    【讨论】:

    • webapi 项目中的角色可以映射吗?为什么将access_token发送到webapi项目时id_token中返回的角色?
    • 这取决于您的范围配置。检查 wiki 以获取文档。
    • 正如@leastprivilege 所说,这取决于范围配置。我将 idmgr(这是一个资源类型范围并具有角色 ScopeClaim)添加到我的范围,然后它在没有任何声明映射的情况下工作。谢谢。
    • 我也有同样的问题,但是使用 IdentityManager(不是 IdentityServer)...在这种情况下我将如何映射声明?
    猜你喜欢
    • 2020-11-05
    • 2016-04-20
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多