Asp.net core API访问未经授权,除非指定了AuthenticationScheme

Asp.net core API访问未经授权,除非指定了AuthenticationScheme,asp.net-core,identityserver4,Asp.net Core,Identityserver4,我正在学习Asp.Net核心标识和Identity Server 4。到目前为止,我已经根据IdS4对我的用户进行了身份验证,然后我可以获得一个令牌来使用access my API,这一切都按照预期工作,但是我始终需要使用指定的AuthenticationScheme参数在我的API控制器上创建我的授权属性,即使我将其指定为我的API的Config.cs(根据我读过的几个来源/指南) 这是我的API的Config.cs,我已经把不同的尝试注释掉了。每个版本都没有任何效果,偶尔会出现500错误而不

我正在学习Asp.Net核心标识和Identity Server 4。到目前为止,我已经根据IdS4对我的用户进行了身份验证,然后我可以获得一个令牌来使用access my API,这一切都按照预期工作,但是我始终需要使用指定的
AuthenticationScheme
参数在我的API控制器上创建我的授权属性,即使我将其指定为我的API的
Config.cs
(根据我读过的几个来源/指南)

这是我的API的
Config.cs
,我已经把不同的尝试注释掉了。每个版本都没有任何效果,偶尔会出现500错误而不是401错误,但这将取决于我做了一些非常错误的事情

Config.cs
问题在于
启动中添加的中间件的顺序。配置
方法。正确的顺序对安全性至关重要。请阅读更多。
在这种情况下,将
app.UseAuthentication()
移动到
app.UseAuthentication()
之后。代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
       app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

问题在于
启动中添加的中间件的顺序。配置
方法。正确的顺序对安全性至关重要。请阅读更多。
在这种情况下,将
app.UseAuthentication()
移动到
app.UseAuthentication()
之后。代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
       app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

谢谢你的回答,我知道这很简单,我知道中间件的顺序很重要,我只是不知道顺序是什么,因为我一直在遵循指南,这些指南并没有真正理解顺序,特别是现在我偏离了指南的流程。我会仔细阅读你发送的链接,这样就不会再发生这种情况了!谢谢你的answer,我知道这很简单,而且我知道中间件的顺序很重要,我只是不知道顺序是什么,因为我一直在遵循指南,这些指南并不真正理解顺序,特别是现在我偏离了指南的流程。我会仔细阅读您发送的链接,这样就不会再发生这种情况!
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
       app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}