IdentityServer 的本地验证

Local validation of IdentityServer

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

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

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

效果很好!在这种情况下,在我的控制器方法中,如您所见,我有

{role: consumer}

但如果我改变

ValidationMode = ValidationMode.Local,

我的请求没有通过授权,因为角色的值有前缀

根据这个,我的请求没有通过授权。万一

怎么办

ValidationMode = ValidationMode.Local

声明角色具有正常价值?

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

JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();

更多信息: