Asp.Net Core找不到DefaultChallengeScheme

时间:2019-07-10 13:33:36

标签: c# authentication asp.net-core

我在Asp.Net Core API项目中有一个自定义AuthorizationHandler,它根据在Headers中传递的令牌来授权请求​​。

Handler可以在运行时调用时正常工作,但是出现以下错误

  

InvalidOperationException:未指定authenticationScheme,并且没有   找到DefaultChallengeScheme。

我已经在Startup.cs中注册了我的设置,如下所示:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(IISDefaults.AuthenticationScheme);
    services.AddSingleton<IAuthorizationHandler, TokenAuthorizationHandler>();
}

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

项目的默认属性是启用匿名身份验证和禁用Windows身份验证。

如果要选择 IIS默认身份验证作为您的authenticationScheme,则需要修改项目的属性以启用Windows身份验证并禁用匿名身份验证:

  • 在解决方案资源管理器中右键单击该项目,然后选择属性

  • 选择调试标签。

  • 清除启用匿名身份验证的复选框。

  • 选中启用Windows身份验证的复选框。

  • 保存并关闭属性页。

参考:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-2.2&tabs=visual-studio#iisiis-express

或者您可以添加其他身份验证方案(基于cookie的身份验证,JWT承载身份验证等),有关更多详细信息,请参考Authorize with a specific scheme in ASP.NET Core