在identityserver4和自定义AuthorizationHandler User.Identity.isAuthenticated上使用客户端凭据流=false

在identityserver4和自定义AuthorizationHandler User.Identity.isAuthenticated上使用客户端凭据流=false,identityserver4,Identityserver4,您好,我使用的是identity server 4,我创建了一个使用客户端\u凭据保护的客户端 我能够使用clientid和secret检索令牌,根据jwt.io,访问令牌的过期时间为3600秒或(1小时) 在NetCore2.2API上,我有一个自定义的AuthorizationHandler protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ClientCredentialR

您好,我使用的是identity server 4,我创建了一个使用客户端\u凭据保护的客户端

我能够使用clientid和secret检索令牌,根据jwt.io,访问令牌的过期时间为3600秒或(1小时)

在NetCore2.2API上,我有一个自定义的AuthorizationHandler

protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ClientCredentialRequirement requirement)
        {

            if (requirement.AllowedClients != null && requirement.AllowedClients.Any()) {

                if (context.User.Identity.IsAuthenticated) { // this is false
                     context.Succeed(requirement);
                            return Task.CompletedTask;
                } 
在使用客户端凭据时,是否应返回false?我希望它是真的,因为令牌是有效的,所以我算出了

事实证明,该应用程序是一个功能完整的“idserver”加上“mvcweb站点”,已经配置了cookie身份验证,这一事实给我带来了问题

对api的请求没有声明,因为没有使用承载身份验证方案来处理请求

我必须将其添加到api控制器中,才能使其按预期工作

[Authorize(AuthenticationSchemes = "Bearer")]
public class MixedController : Controller
详细的

现在,即使在使用客户端凭据时,User.Identity声明也会填充来自令牌的声明和作用域,并且用户显示为Authenticated=true