FastAPI OAuth2范围

时间:2020-11-12 21:49:27

标签: python authentication permissions fastapi

我有一个基于角色的访问系统。

调用API时,首先对用户进行身份验证,然后在实际调用端点之前进一步验证用户是否可以访问端点。

以下是系统示例:

WRITE = {"all": "write_access"} # this is used in user access verification method
READ = {"all": "read_access"} # this is used in user access verification method

ACCESS = {
    # Administrator has every access to every endpoint.
    "Administrator": WRITE,

    # Basic User
    # Restricted access to endpoints
    # Can switch ownership.
    # e.g. A basic user has only READ access to endpoint_1.
    "Basic": {
        "endpoint_1": READ,
        "endpoint_2": WRITE,
        ...
        "endpoint_n": READ
    },
    "Premium": {
        ... 
    }

我在这里阅读FastAPI文档:https://fastapi.tiangolo.com/advanced/security/oauth2-scopes/。 FastAPI范围允许使用更细粒度的权限系统,从而限制了对端点的访问。似乎它的工作方式是我们直接将范围提供给每个端点。因此,当API调用到达端点时,我们将检查主叫用户是否具有访问端点的正确范围。我认为这与我当前处理用户访问验证的方式有些不同,在该方法中,我没有为每种方法提供范围,而是将访问直接附加到每种用户类型,并具有专用于检查用户验证的自定义方法。在这种情况下,FastAPI Oauth2范围是否是我理想的选择?我目前不使用FastAPI安全性或相关性来进行JWT身份验证,但拥有自己的内部身份验证工作流程。我想建立一个更细粒度的权限系统,并且在将系统移至FastAPI时,如果我可以受益于这种情况下的内置功能,那将很有帮助。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以使用 Scope 或 FastApi 高级依赖项。

fastapi advance dependencies

并使用调用方法创建一个像RollChecker这样的类,并根据要求限制角色。