我在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();
}
有什么建议吗?
答案 0 :(得分:0)
项目的默认属性是启用匿名身份验证和禁用Windows身份验证。
如果要选择 IIS默认身份验证作为您的authenticationScheme,则需要修改项目的属性以启用Windows身份验证并禁用匿名身份验证:
在解决方案资源管理器中右键单击该项目,然后选择属性。
选择调试标签。
清除启用匿名身份验证的复选框。
选中启用Windows身份验证的复选框。
保存并关闭属性页。
或者您可以添加其他身份验证方案(基于cookie的身份验证,JWT承载身份验证等),有关更多详细信息,请参考Authorize with a specific scheme in ASP.NET Core。