c# - Asp.Net Core 未找到 DefaultChallengeScheme

标签 c# authentication asp.net-core

我有一个自定义 AuthorizationHandler在我的 Asp.Net Core API 项目中,它根据在 Headers 中传递的 token 授权请求.
Handler工作正常,因为它在运行时调用但是我收到以下错误

InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found.



我已在 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();
}

有什么建议?

最佳答案

该项目的默认属性是启用匿名身份验证和禁用 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更多细节 。

    关于c# - Asp.Net Core 未找到 DefaultChallengeScheme,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56971892/

    相关文章:

    c# - .Net 数值类型初始化标识符列表

    google-app-engine - 使用谷歌登录 : How to customize the requested permissions

    rest - 简单的 REST 身份验证

    azure - 当 HasMoreResults 为 True 时,为什么 CosmosDB FeedResponse 不包含结果

    c# - 使用 StackPanel 包围控件时出现元素名称绑定(bind)错误

    c# - 使用 Entity Framework 在 View 上创建伪外键

    iis - 使用IIS部署asp.net core网站时出现502.5错误

    c# - .NET Core - 读取 JSON 文件的转换日期

    c# - mvc 应用程序中的表单例份验证,使用外部服务进行身份验证

    java - 从Java进行Exchange Web服务身份验证