身份验证/授权中间件是否应该返回403以查找丢失的api路由?

时间:2018-05-16 16:56:27

标签: authentication asp.net-core asp.net-core-mvc asp.net-core-webapi asp.net-core-middleware

我正在使用ASP.NET Core 2.0并进入Startup.cs文件的设置。我知道从阅读中看,中间件的顺序很重要。

从此链接:https://docs.microsoft.com/en-us/aspnet/core/migration/http-modules?view=aspnetcore-2.0

有以下图表:enter image description here

它表示如果提供的身份验证中间件设置正确,然后验证失败,则无论路由是否存在,都会发送未经授权的响应(HTTP 401 - 未授权)。

在我的场景中,我收到了HTTP 404(Not Found)对不存在的路由的响应。在我发布一些代码之前,我的理解是正确的中间件应该如何表现吗?

感谢。

1 个答案:

答案 0 :(得分:0)

除了强调身份验证和授权之间区别的注释外,该引号还非常有用(摘自https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware):

  

身份验证不会短路未经身份验证的请求。   尽管身份验证中间件对请求进行身份验证,   授权(和拒绝)仅在MVC选择之后   Razor Page或MVC控制器和操作。

如果没有Razor Page或MVC控制器可供选择,这将导致HTTP 404(未找到),然后授权检查将产生HTTP 401(未授权)。

请记住,可以在操作级别指定授权属性,这意味着在选择页面或控制器/操作之前,授权检查将没有足够的信息来接受或拒绝请求(例如,可以修饰控制器)具有[Authorize]属性,而其中的特定动作则由[AllowAnonymous]属性修饰。