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();
更多信息:
我在某些 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();
更多信息: