为什么验证令牌成功后身份验证失败?

时间:2018-07-18 11:44:39

标签: c# asp.net-core openid-connect

我已经基于OpenIdConnect概念创建了非常简单的IdentityServer。 身份验证后,我的身份服务器返回到我的应用JwtToken。 当我尝试访问授权路由时,有以下日志:

  

Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler [2]

     

成功验证了令牌。

但下面有:

  

Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler [7]   未验证OpenIdConnect。失败消息:未通过认证

,我被重定向到IdentityServer中的身份验证路由。

那是为什么?

这是我的客户端(不是IdentityServer)配置:

    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.IncludeErrorDetails = true;
            options.RequireHttpsMetadata = false;
            options.Audience = "http://localhost:5001";
            options.MetadataAddress = "http://localhost:5000/.well-known/openid-configuration";
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidIssuer = "http://localhost:5000"
            };
        })
        .AddOpenIdConnect(options =>
        {
            options.SignInScheme = JwtBearerDefaults.AuthenticationScheme;
            options.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost;
            options.MetadataAddress = "http://localhost:5000/.well-known/openid-configuration";
            options.RequireHttpsMetadata = false;
            options.ClientId = "user";
            options.ClientSecret = "secret";
            options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
            options.SaveTokens = true;
        });

1 个答案:

答案 0 :(得分:1)

如果您只需要使用IdentityServer对承载令牌进行身份验证,请查看使用IdentityServer4.AccessTokenValidation nuget包。

您的创业公司看起来像这样:

foreach