Asp.Net Core:执行IAuthorizationFilter和Authentication Service的顺序

问题描述 投票:1回答:1

我正在Asp.Net Core Web Api应用程序中实现身份验证和授权机制。

我使用JWT进行用户身份验证配置:

ConfigureServices(IServiceCollection services)
{
...
services.AddAuthentication(...).AddJwtBearer(...)
...
}

(类似于https://stackoverflow.com/a/45901894/1544054

此服务还根据JWT数据填充HttpContext.User。

对于授权,我使用基于的自定义RBAC实现

class AccessControlFilter :  IAuthorizationFilter
{
    public AccessControlFilter(string permission) {...}
    public void OnAuthorization (AuthorizationFilterContext context){...}
}

(类似于https://stackoverflow.com/a/41348219的好答案)

我需要确定我的AccessControlFilter将在JWT身份验证服务之后运行,以便已经填充了context.HttpContext.User。

(我猜订单是正确的,过滤器将在服务后运行,但我找不到合适的文档。)

asp.net-core asp.net-authorization
1个回答
0
投票

来自ASP.NET Core Security Overview(强调我的):

身份验证与授权

身份验证是用户提供凭据然后与存储在操作系统,数据库,应用程序或资源中的凭据进行比较的过程。如果它们匹配,则用户成功进行身份验证,然后可以在授权过程中执行他们授权的操作。授权是指确定允许用户执行操作的过程。

考虑身份验证的另一种方法是将其视为进入空间的一种方式,例如服务器,数据库,应用程序或资源,而授权是用户可以对该空间内的哪些对象执行的操作(服务器,数据库或应用程序)。

所以回答你的问题:身份验证总是在授权管道之前发生。这是有道理的,因为在知道用户的权限之前,您需要知道用户是谁。

© www.soinside.com 2019 - 2024. All rights reserved.