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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ed72cca681cdfaf0530ca87b964f7754d00e736c3bb2b17fe72939dd26e28061 |
|
MD5 | 47a3f6ef400de98a4a7e7e2fb093aa9a |
|
BLAKE2b-256 | 7f403a660d05127c9ba2ed9affae4e33a6031bd2dfdd3564c31dfb2283b9bcfa |
关闭
falcon_policy-0.2.0-py2.py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5c6a541ca5c0bdc2d20932b1238260888c3f203067ec02c9c8ec17040b188328 |
|
MD5 | 98d0493601f62c14690f9f953e5c973b |
|
BLAKE2b-256 | e5f9c62be2b865694b89413297e7ec5273ce17a20687f785393b8fbee301952b |