pyramid_ipauth
项目描述
基于请求的远程IP地址设置身份和有效主体,适用于Pyramid的认证策略。
概述
要执行基于IP地址的认证,创建一个IPAuthenticationPolicy,并指定目标IP范围、用户ID和有效主体。然后将其设置为配置器中的认证策略。
authn_policy = IPAuthenticationPolicy("127.0.*.*", "myuser", ["locals"]) config.set_authentication_policy(authn_policy)
这将导致所有来自127.0.*.*范围内的IP地址的请求都认证为用户“myuser”,并具有有效主体“locals”。
您还可以在部署文件中指定配置选项。
[app:pyramidapp] use = egg:mypyramidapp ipauth.ipaddrs = 127.0.0.* 127.0.1.* ipauth.principals = locals
然后您只需将pyramid_ipauth包包含到配置器中。
config.include("pyramid_ipauth")
它将检测ipauth设置并构建适当的策略。
请注意,此包仅支持与单一组IP地址进行匹配。如果您需要为不同组IP地址分配不同的凭证,可以使用pyramid_multiauth包与pyramid_ipauth一起使用。
如果您不想在配置时硬编码用户ID或主体,您可以指定一个“get_userid”和/或“get_principals”回调函数。
指定IP地址
IP地址可以以多种形式指定,包括
“all”:所有可能的IPv4和IPv6地址
“local”:机器的所有本地地址
“A.B.C.D”:单个IP地址
“A.B.C.D/N”:网络地址指定
“A.B.C.*”:对所有可能数字的glob匹配
“A.B.C.D-E”:对数字范围的glob匹配
以上任一形式的空格或逗号分隔的字符串
netaddr IPAddress、IPRange、IPGlob、IPNetork的IPSet对象
以上任一形式的列表、元组或可迭代对象
代理
默认情况下,此模块不尊重X-Forwarded-For头部,因为它很容易被恶意客户端欺骗。如果您的服务器位于设置X-Forwarded-For头部的可信代理后面,您应明确声明一组可信代理,如下所示
IPAuthenticationPolicy("127.0.*.*", principals=["local"], proxies = "127.0.0.1")
可信代理地址的集合可以使用与认证IP地址相同的语法指定。
0.3.3 - 2017-02-02
修正了在空白处分割ipset字符串的问题;感谢 @kaleposhobios
0.3.2 - 2017-01-22
解决了某些警告并清理了某些测试;感谢Scott Searcy
0.3.1 - 2016-03-18
针对python3兼容性的修复
0.3.0 - 2016-03-18
添加了对python3的支持
0.2.0 - 2013-10-14
添加了get_userid和get_principals回调函数;感谢mrijken
如果需要,将主体转换为列表;感谢janakj
0.1.1 - 2012-01-30
更新许可证到MPL 2.0
0.1.0 - 2011-11-11
首次发布