跳转到主要内容

Pyramid的认证策略,可代理到其他认证策略堆栈

项目描述

pypi ci coverage

Pyramid 的一个认证策略,它代理到其他认证策略堆栈。

概述

MultiAuthenticationPolicy 是一个 Pyramid 认证策略,它代理到一组 其他 IAuthenticationPolicy 对象,以提供从单个部分组合的认证解决方案。只需传递一个应按顺序尝试的策略列表

policies = [
    IPAuthenticationPolicy("127.0.*.*", principals=["local"])
    IPAuthenticationPolicy("192.168.*.*", principals=["trusted"])
]
authn_policy = MultiAuthenticationPolicy(policies)
config.set_authentication_policy(authn_policy)

此示例使用 pyramid_ipauth 模块根据请求的原始 IP 地址分配有效主体。它结合了两种策略,使得来自“127.0.*.*”的请求将具有主体“local”,而来自“192.168.*.*”的请求将具有主体“trusted”。

通常,堆叠的认证策略的结果如下组合

  • authenticated_userid: 返回第一个成功策略的 userid

  • unauthenticated_userid: 返回第一个成功策略的 userid

  • effective_principals: 返回所有策略的主体的并集

  • remember: 返回所有策略的头部

  • forget: 返回所有策略的头部

部署设置

也可以将认证策略作为您的 paste 部署设置的一部分进行指定。考虑以下示例

[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")

在此示例中,您将获得一个具有三个堆叠认证策略的 MultiAuthenticationPolicy。前两个,ipauth1 和 ipauth2,定义为可调用的名称及其一组关键字参数。第三个定义为模块名称,pyramid_browserid,它将通过标准的 config.include() 机制进行处理。

最终结果将是一个通过 BrowserID 认证用户并基于请求的原始 IP 地址分配附加主体标识符的系统。

如果需要,还可以从配置中指定 组查找函数授权策略

[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)

项目详情


下载文件

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

源分布

pyramid_multiauth-1.0.2.tar.gz (31.1 kB 查看哈希值)

上传

构建的分发版

pyramid_multiauth-1.0.2-py3-none-any.whl (18.3 kB 查看哈希值)

上传时间 Python 3

由以下支持