金字塔多重身份验证
pyramid_multiauth的Python项目详细描述
一个代理皮拉米德的认证策略 身份验证策略。
概述
多认证策略是一种代理认证的金字塔认证策略。 一个otheriaauthenticationpolicy对象的堆栈,用于提供组合身份验证 单个零件的解决方案。只需向它传递一个策略列表 应按顺序尝试:
policies = [ IPAuthenticationPolicy("127.0.*.*", principals=["local"]) IPAuthenticationPolicy("192.168.*.*", principals=["trusted"]) ] authn_policy = MultiAuthenticationPolicy(policies) config.set_authentication_policy(authn_policy)
本例使用金字塔ipauth模块分配有效主体 基于请求的原始IP地址。它结合了两种 使来自“127.0.*.*”的请求具有主体的策略 “本地”,而来自“192.168.*.*”的请求将具有主体 “值得信任”。
通常,叠加身份验证策略的结果是组合的 如下所示:
- authenticated_userid: return userid from first successful policy
- unauthenticated_userid: return userid from first successful policy
- effective_principals: return union of principals from all policies
- remember: return headers from all policies
- forget: return headers from all policies
展开设置
也可以将身份验证策略指定为 粘贴部署设置。考虑以下示例:
[app:pyramidapp] use = egg:mypyramidapp multiauth.policies = ipauth1 ipauth2 pyramid_browserid multiauth.policy.ipauth1.use = pyramid_ipauth.IPAuthentictionPolicy multiauth.policy.ipauth1.ipaddrs = 127.0.*.* multiauth.policy.ipauth1.principals = local multiauth.policy.ipauth2.use = pyramid_ipauth.IPAuthentictionPolicy multiauth.policy.ipauth2.ipaddrs = 192.168.*.* multiauth.policy.ipauth2.principals = trusted
要从这些设置配置身份验证,只需包含multiauth 进入配置程序的模块:
config.include("pyramid_multiauth")
在本例中,您将得到一个具有三个堆栈的多重身份验证策略 验证策略。前两个ipauth1和ipauth2被定义为 与一组关键字参数一起可调用的。第三个定义为 将通过 标准的config.include()机制。
最终的结果将是一个通过browserid对用户进行身份验证的系统,并且 基于原始IP地址分配其他主体标识符 请求的。
如有必要,group finder函数和authorization策略可以 也可从配置中指定:
[app:pyramidapp] use = egg:mypyramidapp multiauth.authorization_policy = mypyramidapp.acl.Custom multiauth.groupfinder = mypyramidapp.acl.groupfinder ...
MultiAuthPolicySelected事件
选择所配置的多个策略之一时触发事件。
from pyramid_multiauth import MultiAuthPolicySelected # Track policy used, for prefixing user_id and for logging. def on_policy_selected(event): print("%s (%s) authenticated %s for request %s" % (event.policy_name, event.policy, event.userid, event.request)) config.add_subscriber(on_policy_selected, MultiAuthPolicySelected)
0.9.0(2016-11-07)
- 放弃对Python2.6的支持
0.8.0(2016-02-11)
- 在MultiAuthPolicySelected事件中提供userid属性。
- 当用户通过身份验证的用户id()标识时,始终通知事件 (即通过effective_principals()和组查找器回调)。
0.7.0(2016-02-09)
- 添加get_policies()方法以检索包含的身份验证列表 政策及其各自的名称。
0.6.0(2016-01-27)
- 提供在^{tt2}中的设置中使用的策略名称$ 事件。
0.5.0-2015年5月19日
- 从设置中读取授权策略(如果存在)。
0.4.0-2014-01-02
- 当groupfinder返回none时,使authenticated_userid为none。
0.3.2-2013年5月29日
- 修复一些合并的半身像;这应该包含 声称包含在0.3.1版本中,但实际上没有。
0.3.1-2013年5月15日
- multiauthPolicySelected事件现在包括请求对象,因此 例如,可以从处理程序函数访问注册表。
- 修正了将有效的原则与输出合并时的一些边缘情况 groupfinder回调的。
0.3.0-2012年11月27日
- 通过源代码级兼容性支持python3。
- 当策略成功时触发multiauthPolicySelected事件 用于身份验证。
0.2.0-2012年10月4日
- add get_policy()方法,可用于查找加载的 运行时的子策略。
0.1.2-2012年1月30日
- 将许可证更新为MPL 2.0。
0.1.1-2011年12月20日
- 与吡拉姆相容性编号1.3。
0.1.0-2011年11月11日
- 初次发布。