Asp.Net Core 未找到 DefaultChallengeScheme

KJS*_*JSR 5 c# authentication asp.net-core

我的 Asp.Net Core API 项目中有一个自定义项AuthorizationHandler,它根据 .net 文件中传递的令牌来授权请求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();
}
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

Xue*_*hen 7

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

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

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

  • 选择“调试”选项卡。

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

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

  • 保存并关闭属性页。

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

或者您可以添加其他身份验证方案(基于 cookie 的身份验证、JWT 承载身份验证等),请参阅在 ASP.NET Core 中使用特定方案进行授权以了解更多详细信息。