使用Thinktecture.IdentityServer.v3时如何检查资源服务器中的用户角色

时间:2014-11-16 21:59:05

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

我下载[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来调用服务,并使用具有alice角色的Admin用户。 但它返回UnAuthorized错误。 用户已通过身份验证,但未设置角色。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

JwtSecurityTokenHandler.InboundClaimTypeMap = ClaimMappings.None;