IdentityServer的本地验证

时间:2017-01-10 14:38:18

标签: c# identityserver3

我在某个网址上托管了Auth服务。我的所有微服务都请求验证以对每个请求进行身份验证。在我的每个服务的StartUp.cs中

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = WebConfigurationManager.AppSettings["IdentityServerURL"],
            ValidationMode = ValidationMode.ValidationEndpoint,

            //ValidationMode = ValidationMode.Local,
            RequiredScopes = new[] { "user-api" },
        });

工作正常!在我的控制器方法中,在这种情况下我可以看到

  

{role:consumer}

enter image description here

但如果我改变

  

ValidationMode = ValidationMode.Local,

我的请求未通过授权,因为角色的值具有前缀 enter image description here

根据这一点,我的要求并没有通过自动化。

我该怎么办?
  

ValidationMode = ValidationMode.Local

具有正常的索赔角色值?

1 个答案:

答案 0 :(得分:1)

Microsoft在收到令牌时应用声明映射。要删除此默认映射,请在启动时将其添加到Configuration方法:

JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();

了解更多信息:

How to use InboundClaimTypeMap for claim mapping?

Update of System.IdentityModel.Tokens.Jwt causing breaking change in IdentityServer3 Client