没有指定authenticationScheme,也没有找到DefaultChallengeScheme

时间:2019-06-19 21:19:58

标签: asp.net-core asp.net-core-webapi

尝试将Google令牌验证添加到asp.Net Core 2.2 API中,但在Controller标记为[Authorize]时出现此错误

目标是通过验证请求标头中的Access_Token来保护某些Web API功能。访问令牌是从客户端的Google OAuth生成的,需要随每个请求传递给API。

Startup.cs

public void ConfigureServices(IServiceCollection services)
    ...
    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddGoogle(options =>
    {
        options.ClientId = "[Client ID]";
        options.ClientSecret = "[Client secret]";
    });
    ...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...
    app.UseAuthentication();

    app.UseMvc();
}

出现以下错误:

  

处理请求时发生未处理的异常。   InvalidOperationException:未指定authenticationScheme,并且   没有找到DefaultChallengeScheme。

1 个答案:

答案 0 :(得分:0)

According to documentation,您无需为Google身份验证指定AuthenticationScheme

services.AddAuthentication().AddGoogle(options  =>  
{  
   ...
}); 

因为OpenIdConnectDefaults.AuthenticationScheme的值为OpenIdConnect,但Google期望Google。您可以使用GoogleDefaults.AuthenticationScheme