Asp.net core API访问未经授权,除非指定了AuthenticationScheme
我正在学习Asp.Net核心标识和Identity Server 4。到目前为止,我已经根据IdS4对我的用户进行了身份验证,然后我可以获得一个令牌来使用access my API,这一切都按照预期工作,但是我始终需要使用指定的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错误而不
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();
});
}