跳转到主要内容

Falcon API的策略中间件

项目描述

falcon-policy 包提供了一种中间件组件,通过配置允许简单的策略控制,如基于角色的访问。

策略规则的配置方法允许动态授权使用案例,当策略需要按需调整而无需新的服务部署时。

安装

$ pip install falcon-policy

使用

RoleBasedPolicy 中间件类检查每个传入请求并验证来自请求上下文的 roles 列表;这应由认证中间件填充。如果请求上下文中没有填充 roles 列表,则中间件将回退到请求所进行的适当的角色 X-Roles 标头。 X-Roles 标头的使用主要是在中间件堆栈之外处理认证或禁用认证进行开发时使用的。

实现注意事项

如果请求上下文类型不是字典,中间件将假定 req.context 是一个具有 roles 属性的对象。

入门指南

  • 创建策略配置

  • 使用配置创建 RoleBasedPolicy 的实例

  • 将实例传递给 falcon.API() 初始化器

from falcon_policy import RoleBasedPolicy

policy_config = {
    'roles': [
        'admin',
        'creator',
        'observer',
    ],
    'groups': {
        'create': ['admin', 'creator'],
        'update': ['admin', 'creator'],
        'read': ['admin', 'creator', 'observer'],
        'delete': ['admin'],
    },
    'routes': {
        '/quote': {
            'GET': ['read'],
            'POST': ['create'],
            'PUT': ['update'],
            'DELETE': ['delete'],
        },
        '/quote/{id}': {
            'GET': ['read'],
            'POST': ['create'],
            'PUT': ['update'],
            'DELETE': ['delete'],
        },
        '/status': {
            'GET': ['@any-role'],
            'HEAD': ['@passthrough'],
        },
    },
}

app = falcon.API(
    middleware=[
        RoleBasedPolicy(policy_config)
    ]
)

如果验证失败,将抛出 falcon.HTTPForbidden 实例。

配置

策略配置分为三个部分

  • 角色:是与您认证系统提供的角色值相对应的名称列表。

  • 组:是多个角色名称的别名/分组,以方便使用。

  • 路由:包含特定 Falcon 路由和方法的角色/组权限的结构。

特殊角色

falcon-policy 提供两种特殊角色类型,应谨慎使用

  • @any-role:允许任何定义的角色

  • @passthrough:允许所有用户(已认证和未认证的用户)

关于 Falcon

Falcon 是一个 裸机 Python Web 框架,用于构建精简高效的云 API 和应用后端。它鼓励使用 REST 架构风格,并试图尽可能少地做事情,同时保持 高度有效

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

falcon-policy-0.2.0.tar.gz (4.1 kB 查看散列)

上传时间

构建分发

falcon_policy-0.2.0-py2.py3-none-any.whl (5.3 kB 查看散列)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面