金字塔多重身份验证

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日

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中char的用途   swing修复,以便显示可以同时显示十进制数和整数   java给定一个场景,找到拥有的JFXPanel   java JPA 2标准获取路径导航   java如何用JUnit测试这个类?   JSF中的java请求作用域   Spring云Zuul代理背后的java Spring OAuth授权服务器   java限制聚合返回的存储桶大小   java如何在安卓应用程序中请求超级su权限   防止超级关键字的java Checkstyle规则   java 安卓。应用程序。应用程序无法强制转换到安卓。应用程序。在回收器适配器中使用FragmentManager时的活动   使用Java的Twitter广告API   切换到4.0.1版本后,java“JavaMailSenderImpl无法解析为类型”   java没有getter方法可用于名称下bean的属性   java 0/1背包堆空间   java我无法使用断点进行调试   Jar文件名表单java代码   java调用从扩展活动的MainActivity类扩展片段的类片段