Falcon API的策略中间件
falcon-polic的Python项目详细描述
falcon-policy包提供了一个中间件组件 支持简单的策略控制,如基于角色的路由访问 通过配置。
策略规则的配置方法支持动态授权 需要按需调整策略而不需要新策略的用例 服务部署。
安装
$ pip install falcon-policy
用法
RoleBasedPolicy中间件类检查每个传入的请求 并验证来自请求上下文的roles列表;它应该是 由身份验证中间件填充。如果请求上下文不是 使用roles列表填充,然后中间件将返回 给定请求的相应角色的X-Roles头。 X-Roles头的用法主要用于处理 在中间件堆栈之外进行身份验证或使用 身份验证已禁用。
实施说明:
如果请求上下文类型不是字典,则中间件将假定 该req.context是具有roles属性的对象。
开始:
- 创建策略配置
- 使用配置创建RoleBasedPolicy的实例
- 将实例传递给falcon.API()初始值设定项:
fromfalcon_policyimportRoleBasedPolicypolicy_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的实例。
配置
策略配置分为三个部分:
- roles:是与提供的角色值相对应的名称列表 通过你的认证系统。
- groups:为方便起见,是多个角色名称的别名/分组。
- 路由:包含给定的角色和/或组权限的结构 猎鹰路线和方法。
专业角色:
^{tt1}$ offers two specialty roles types that should be used with care:
- ^{tt13}$: Allows any defined role
- ^{tt14}$: Allows all users (authenticated and unauthenticated)
关于Falcon
Falcon是一个建筑精益和 意味着云api和应用程序后端。它鼓励其他建筑风格, 在保持highly effective的同时尽量少做。