可插拔的Zope身份验证/授权框架
项目描述
产品.可插拔身份验证服务
该产品定义了一个完全可插拔的用户文件夹,旨在用于所有Zope站点。
安装
安装此软件包的常规方法是使用 setuptools,可以通过 pip 在虚拟环境中安装
$ cd /path/to/virtualenv $ bin/pip install Products.PluggableAuthService
或者将包包含在基于 zc.buildout 的部署配置中
$ cd /path/to/buildout $ grep "eggs =" buildout.cfg ... eggs = Products.PluggableAuthService ...
产品还可以作为另一个发行版的依赖项安装。
文档
有关更多信息,请参阅打包软件中的 doc/ 目录下的文件,并参考软件包中 interfaces/ 目录下的 PluggableAuthService 和插件 API 接口文件。
文档也在线提供,网址为 https://productspluggableauthservice.readthedocs.io/。
变更日志
3.0 (2024-01-22)
取消对 Python 2.7、3.5 和 3.6 的支持。
在 setup.py 中删除 zserver 附加组件。因此取消了对 FTP 的支持。
取消对 Zope < 5 的支持。
2.8.1 (2022-12-18)
由于 Zope 的默认内容类型已更改,因此需要在需要的地方显式设置响应 Content-Type 头。有关更改的详细信息,请参阅 Zope#1075。
2.8.0 (2022-12-16)
修复针对 Zope 4 的测试中的隐秘的 buildout 配置错误。
添加对 Python 3.11 的支持。
2.7.1 (2022-10-04)
默认将 Cookie 认证辅助程序的 cookies 的 SameSite 设置为 Lax,并允许管理员从 ZMI 的属性选项卡更改设置以及安全标志。目前尚未设置 SameSite cookie 标志,这可能导致现代浏览器在控制台显示警告。此类 cookies 可能会在未来被拒绝并破坏 Cookie 认证辅助程序。有关 SameSite cookie 属性及其在浏览器中处理方式变更的信息,请参阅 https://hacks.mozilla.ac.cn/2020/08/changes-to-samesite-cookie-behavior/。
2.7.0 (2022-01-04)
2.6.4 (2021-07-28)
2.6.3 (2021-06-08)
2.6.2 (2021-03-12)
加强几个登录字符串转换方法的安全性(#88)
2.6.1 (2021-02-26)
修复剩余的开放重定向来源
2.6.0 (2021-02-23)
修复 ZODB 角色管理器 enumerateRoles 中缺少的访问控制
修复 Cookie 认证辅助程序 重定向处理中的开放重定向问题
添加对 Python 3.9 的支持。
2.5.1 (2020-11-13)
2.5 (2020-10-12)
2.4 (2020-02-09)
不再依赖于ZServer进行任何WebDAV相关功能。(#64)
2.3 (2020-02-02)
替换所有在Python 3下会出错的filter(None...)表达式(#63)
2.2.1 (2020-01-13)
修复了调用updateCredentials的ICredentialsUpdatedEvent事件处理器调用错误(#59)
2.2 (2019-11-23)
添加新事件,以便在主体被添加到或从组中移除时通知。在ZODBGroupManager中,当主体被添加或从组中移除时,通知这些事件(#17)
2.1.1 (2019-10-23)
修复了非PAS用户在getRolesForPrincipal中的错误。
2.1 (2019-08-29)
2.0 (2019-05-10)
删除了未使用的.utils.allTests方法。
2.0b6 (2019-04-17)
修复了 deprecated im_self 的使用(#40)
2.0b5 (2019-04-13)
2.0b4 (2019-04-04)
简化了Travis CI测试配置
添加了更严格的linting配置
在设置中添加了project_urls,以便PyPI显示更多相关链接
在README中添加了项目徽章,这些徽章将在GitHub首页上显示
修复ZMI模板并添加Zope 4的ZMI图标(#36)
2.0b3 (2019-03-29)
2.0b2 (2018-10-16)
添加了对Python 3.7的支持。
不要在HTTPBasicAuthHelper.challenge()中覆盖之前设置的响应体,允许通过Zope >= 4.0b6的异常视图设置响应体。
添加新事件以能够通知组创建。
重构以使覆盖updateCredentials更容易。
2.0b1 (2018-05-18)
现在对 ZServer 的依赖是可选的。要使用需要 ZServer(WebDav、XML-RPC、FTP)的功能,在安装软件包时使用 setuptools 的额外 zserver。
当我们的基本配置已注册时不要失败。如果在测试中我们的 initialize 代码被调用两次,可能会发生这种情况。
增加对 Python 3 的支持。
根据 PEP-8 规范重新格式化代码。
要求最低 Zope 版本为 4.0b5。
1.11.0 (2016-03-01)
添加新事件,以便能够在删除组时通知。
修复了 os.path.split() 的使用。在 Windows 上导入期间可能会引发错误。
1.10.0 (2013-02-19)
允许为 PAS 中的所有插件指定一个转换 / 正规化登录名的策略。
为 PAS 添加了 login_transform 字符串属性。
为 PAS 添加了 applyTransform 方法,该方法在 PAS 中查找名为 login_transform 属性中指定的方法。
为 PAS 添加了两种可能的转换:lower 和 upper。
修改 PAS 的方法,在需要的地方调用 applyTransform。
将 ZODBUserManager 的现有 updateUser 方法添加到 IUserEnumerationPlugin 接口。
为 ZODBUserManager 和 IUserEnumerationPlugin 接口添加了一个新的 updateEveryLoginName 方法。
为 PAS 和 IPluggableAuthService 添加了三个方法:updateLoginName、updateOwnLoginName 和 updateAllLoginNames。这些方法在每一个 IUserEnumerationPlugin 上调用 updateUser 或 updateEveryLoginName。由于这些是插件接口的后续添加,当插件没有这些方法(例如 PlonePAS 的 mutable_properties 插件)时,我们将记录一个警告,但不会失败。当没有插件能够更新用户时,这将引发异常:我们不希望在例如登录名已被其他用户占用的情况下悄悄忽略这一点。
更改 ZMI 中的 login_transform 属性将调用 PAS.updateAllLoginNames,除非 login_transform 与之前相同或已变成空字符串。
新的 login_transform 属性默认为空。在这种情况下,PAS 的行为与之前相同。各种 applyTransform 调用将产生(可能非常小)的性能影响。
Launchpad #1079204:为 ZODBUserManager、ZODBGroupManager、ZODBRoleManger 和 DynamicGroupsPlugin 插件添加了 CSRF 保护。
1.9.0 (2012-08-30)
Launchpad #649596:为插件添加了一个协议,该协议检查非顶级 PAS 实例是否“有资格”验证给定请求;如果不是,实例将推迟到高级实例。感谢 Dieter Maurer 的补丁。
1.8.0 (2012-05-08)
为 ChallengeProtocolChooser 插件的标签 - 协议映射添加了导出 / 导入支持。
1.7.8 (2012-05-08)
在 authenticateCredentials 中,如果没有匹配项,不要回退到使用登录名作为用户 ID,因为这会给成功登录的印象,但实际上失败了。[maurits]
1.7.7 (2012-02-27)
为 GS 显式编码 / 解码数据。
1.7.6 (2011-10-31)
Launchpad #795086:修复了 PropertiesUpdated 事件的创建。
1.7.5 (2011-05-30)
Launchpad #789858:不允许在 'updateUser' 中出现冲突的登录名。
在 CookieAuthHelper 登录重定向上设置适当的缓存头,以防止代理服务器缓存。
1.7.4 (2011-05-13)
添加了对 DateTime 3 的向前兼容性。
1.7.3 (2011-02-10)
在 ZODBRoleManager 中,使添加和删除角色没有多少影响变得更清楚,如果你不在网站根目录(在“安全”选项卡的最下面)这样做。修复了 https://bugs.launchpad.net/zope-pas/+bug/672694
在 _doAddUser 中返回创建的用户,以匹配 AccessControl 2.13.4 中的更改。
修复了CookieAuthHelper中可能出现的binascii.Error错误。这是一个边缘情况,可能在浏览器升级后发生。
1.7.2 (2010-11-11)
允许在CookieAuthHelper的login_path中使用查询字符串。
捕获来自IRoles插件的“可吞咽”异常。感谢Willi Langenburger提供的补丁。修复了https://bugs.launchpad.net/zope-pas/+bug/615474 。
修复了当__ac cookie不是我们的(例如来自plone.session,尽管在这种情况下也只是一种边缘情况)时,CookieAuthHelper中可能出现的TypeError。
修复了chameleon的不兼容性问题
1.7.1 (2010-07-01)
当检测到重复的主实体时,使ZODBRoleManager.assignRoleToPrincipal引发并记录更详细的错误。https://bugs.launchpad.net/zope-pas/+bug/348795
更新了DynamicGroupsPlugin.enumerateGroups,使其在未知组ID时返回空序列,而不是引发KeyError。https://bugs.launchpad.net/zope-pas/+bug/585365
更新了所有代码,以引发新的异常风格。
移除了对zope.app.testing的依赖。
清理了多个旧导入,因为我们现在需要Zope >= 2.12。
更新了setDefaultRoles,使其在可用时使用addPermission API。
1.7.0 (2010-04-08)
允许将CookieAuthHelper的login_path设置为绝对URL,以便与外部身份验证机制集成。
修复了xml模板目录路径的计算,以允许在Products.PluggableAuthService外部重用SimpleXMLExportImport类。
1.7.0b2 (2010-01-31)
修改了ZODBGroupManager以独立更新组标题和描述。
1.7.0b1 (2009-11-16)
本版本要求Zope2 >= 2.12。
简化了buildout,只保留运行测试所需的内容。
在ZODBGroupManager列表页上,不要因用户定义在多个用户源中而失败。
修复了在Zope 2.12中使用Globals时产生的弃用警告。
修复了在Python >= 2.6下使用md5和sha模块时产生的弃用警告。
为HTTPBasicAuthHelper添加了对多个认证头支持的支持测试。
修改了HTTPBasicAuthHelper,使其不依赖于HTTPResponse的一个不为人知的特性。
1.6.2 (2009-11-16)
Launchpad #420319: 修复了Products.PluggableAuthService.plugins.DomainAuthHelper中配置错误的startswith匹配类型过滤器。
修复了使用依赖于DefaultTraversable适配器的页面模板的测试设置。
修复了模板中的损坏标记。
1.6.1 (2008-11-20)
Launchpad #273680: 避免在尝试验证没有真实ID或登录的情况下,进行昂贵的/不正确的enumerateUsers深入。
Launchpad #300321: Products.PluggableAuthService.pluginsZODBGroupManager.enumerateGroups未能找到具有Unicode ID的组。
1.6 (2008-08-05)
修复了当与Five一起使用时,manage_afterAdd发生的另一个弃用问题(这次是针对ZODBRoleManager类)。
确保当主实体的角色或组发生变化时,_findUser缓存被无效化。
Launchpad #15569586: 修复了文档字符串。
将filter逻辑分解为单独的类;添加了startswith测试的过滤器以及(如果存在IPy模块)IP范围测试。请参阅https://bugs.launchpad.net/zope-pas/+bug/173580 。
Zope 2.12兼容性 - 如果存在zope.interface,则移除Interface.Implements导入。
确保ZODBRoleManagerExportImport在尝试添加已存在的角色时不失败(在GS导入器中,幂等性是可取的)。
修复了测试,使其可以在Zope 2.11上运行。
将大型权限测试分割成单独的测试。
修复了与Five一起使用时出现的弃用警告。(manage_afterAdd 已取消弃用。)
添加了buildout。
1.5.3 (2008-02-06)
ZODBUserManager插件:允许enumerateUsers接受Unicode参数。(https://bugs.launchpad.net/zope-pas/+bug/189627)
plugins/ZODBRoleManager:在searchPrincipial返回多个结果时添加了日志记录(这可能在具有不同用户来源中存在重复id的情况下发生)。
1.5.2 (2007-11-28)
DomainAuthHelper插件:修复了从未配置任何“默认”策略的插件中的故障:authenticateCredentials和getRolesForPrincipal会引发ValueError。(http://www.zope.org/Collectors/PAS/59)
1.5.1 (2007-09-11)
PluggableAuthService._verifyUser:更改为使用枚举器的精确匹配,否则在查询login='foo'时,由于枚举器意外地首先在结果中返回‘foobar’,可能会通过_verifyUser返回具有登录foobar的用户。
添加了manage_zmi_logout的测试,并用providedBy替换了isImplementedBy的调用。(http://www.zope.org/Collectors/PAS/58)
1.5 (2006-06-17)
为PropertiedUser添加了对返回IPropertySheet的属性插件的支持,并将addPropertysheet添加到IPropertiedUser。
为IRoleAssignerPlugin添加了一个从主体删除角色的方法,并在ZODBRoleManager上实现了它。(http://www.zope.org/Collectors/PAS/57)
添加了事件基础设施。启用了新的IPrincipalCreatedEvent和ICredentialsUpdatedEvent事件。
添加了对通过ZCML注册插件类型的支持。
在_extractUserIds中实现了身份验证缓存。
将标准用户文件夹测试从AccessControl测试套件中移植过来。
带有“:”字符的密码会破坏身份验证。(http://www.zope.org/Collectors/PAS/51)
更正了文档化的软件依赖关系。
将可发布的敏感方法转换为仅接受POST请求,以防止XSS攻击。请参阅http://www.zope.org/Products/Zope/Hotfix-2007-03-20/announcement和http://dev.plone.org/plone/ticket/6310
修复了在用户搜索过滤器中的问题,其中未识别的关键字参数被忽略,导致重复的搜索条目。(http://dev.plone.org/plone/ticket/6300)
确保Extensions.upgrade脚本不提交完整事务,而只是设置(乐观的)保存点。在此过程中移除了虚假的Zope 2.7兼容性。(http://www.zope.org/Collectors/PAS/55)
使CookieAuthHelper仅在__ac_password也存在时才使用__ac_name字段。这修复了CMF站点中的登录问题,其中登录名在会话之间通过__ac_namecookie被记住。
即使远程主机不可用,也使DomainAuthHelper返回远程地址。(http://www.zope.org/Collectors/PAS/49)
修复了DelegatingMultiPlugin中的错误,该错误尝试直接将提供的密码与用户密码进行验证 - 更新为使用AuthEncoding.pw_validate处理编码问题。
修复了DelegatingMultiPlugin中的严重安全漏洞,该漏洞允许在传递EmergencyUser登录时进行身份验证。添加了使用AuthEncoding.pw_validate的密码验证。
修复了测试中的一系列错误,这些测试测试了从字典计算出的值,并且可能会因为字典没有保证任何排序顺序而中断。
修复了由于在Zope 2.10+中使用Z3 pagetemplates而导致的测试中断。
BasePlugin:listInterfaces方法仅考虑了旧的__implements__机制来确定插件实例提供的接口。
用户数据库管理系统(ZODBUserManager):在addUser和updateUserPassword中,已经加密的密码被再次加密。(http://www.zope.org/Collectors/Zope/1926)
确保紧急用户通过HTTP基本认证始终获胜,无论插件环境多么糟糕。
清理了CookieAuthHelper中的代码,该代码允许表单覆盖已设置的cookie中的登录/密码。
删除了Zope版本小于2.8的BBB代码,因为我们现在需要Zope大于2.8.5。
1.4 (2006-08-28)
扩展了DomainAuthHelper,使其作为自己的提取插件,以允许其他提取器已注册,但不返回任何凭证的情况。(http://www.zope.org/Collectors/PAS/46)
重新措辞了README的部分,以免指向特定或不存在文件 (http://www.zope.org/Collectors/PAS/6 和 http://www.zope.org/Collectors/PAS/47)
1.4-beta (2006-08-07)
在ZMI添加列表中创建了一个“配置好的PAS”条目,允许使用为IPluggableAuthService注册的基础和扩展GenericSetup配置文件创建PAS。这个条目最终应该取代“标准”PAS条目(假设我们使GenericSetup成为“硬”依赖)。
添加了一个“空”的GenericSetup配置文件,该文件创建一个只包含插件注册表和设置工具的PAS。
修复了“简单”的GenericSetup配置文件,使其在应用时不再具有灾难性,而是有用的:现在它创建并注册了一组基于ZODB的用户/组/角色插件,以及一个基本的认证助手。
ZODBUserManager:通过更新User的功能和相应的manage_updateUser方法扩展“假定的IZODBUserManager接口”,以供ZMI使用。从updateUserPassword和manage_updateUserPassword方法中删除了更新用户登录的责任。这解决了下面收集器问题中描述的损坏,并使ZMI更新用户视图以合理的方式工作。(http://www.zope.org/Collectors/PAS/42)
CookieAuthHelper:如果同时调用expireCookie并在同一请求中遇到extractCredentials,CookieAuthHelper会抛出异常 (http://www.zope.org/Collectors/PAS/43)
添加了DEPENDENCIES.txt。(http://www.zope.org/Collectors/PAS/44)
1.3 (2006-06-09)
从版本1.3-beta没有变化
1.3-beta (2006-06-03)
修改CookieAuthHelper,在提取凭证时优先考虑__ac表单变量而不是cookie。(https://dev.plone.org/plone/ticket/5355)
1.2 (2006-05-14)
修复了manage_zmi_logout,该操作在PluggableAuthService产品代码安装后停止正常工作,通过在__init__.py中修复对其的monkeypatch来纠正。(http://www.zope.org/Collectors/PAS/12)
添加了IPropertiedUser接口和测试中缺少的接口 (http://www.zope.org/Collectors/PAS/16)
从README.txt中删除了STX链接,这些链接在从zope.org的README中点击时只会返回404错误。(http://www.zope.org/Collectors/PAS/6)
修复了ZODBRoleManager和ZODBGroupManager插件中listAvailablePrincipals方法的搜索不一致的问题。现在两者都通过ID限制搜索。(http://www.zope.org/Collectors/PAS/11)
从使用zLOG转换为使用Python日志模块。(http://www.zope.org/Collectors/PAS/14)
1.2-beta (2006-02-25)
添加了对通过GenericSetup文件导出框架导出/导入PAS及其内容的支持。
使ZODBRoleManager插件检查授予给主组的权限,以及直接授予主权限的权限。
添加了两个新接口,ICallengeProtocolChooser和IRequestTypeSniffer。这些接口用于根据传入的请求类型选择用于挑战的“授权协议”或“挑战者协议”。
修复了由于安全声明中几个错误拼写导致的Zope 2.8.5中的警告。
修复了由于使用Zope2接口验证导致的弃用警告。
修复了单元测试中断(unittest.TestCase实例具有‘failUnless’/‘failIf’,而不是‘assertTrue’/‘assertFalse’)。
修复了更多使用Zope 2风格的__implements__以标准化使用classImplements的地方。
修复了providedBy和implementedBy的回退实现,使其始终返回一个元组。
确保当现有的PluginRegistry实例尚未将IChallengeProtocolChooser注册为接口时,挑战不会中断。(在PAS版本之间进行某种迁移将是很好的)
不要假设只要可以导入zope.interface,Five就一定存在。
1.1b2(2005-07-14)
修复了接口激活表单中缺少的‘nocall:’。
1.1b1(2005-07-06)
PAS级别的ID混乱已不再。现在所有(可选的)混乱都在每个插件的基础上进行。
PAS使用的接口现在可以在Zope 2.7和2.8(与Five兼容)中同时使用。
1.0.5 (2005-01-31)
使用‘package_home’简化了产品目录的检测。
为PAS的‘login’属性设置默认值,以避免UnboundLocalError。
1.0.4 (2005-01-27)
将“Extensions”设为包,以允许将其脚本作为模块导入。
声明新的“IPluggableAuthService”接口,描述了额外的PAS特定API。
公开PAS的“resetCredentials”和“updateCredentials”作为公共方法。
Monkey-patch ZMI的注销以调用PAS的“resetCredentials”,如果存在的话。
CookieAuth插件现在以与CookieCrumbler相同的格式编码和解码cookie,以提供在运行PAS和CC的站点之间的兼容性。
在PluggableAuthService实例上添加一个公开可调用的“logout”方法,它将调用所有激活的ICredentialsRest插件上的resetCredentials,从而实现注销。
启用使用CookieAuthHelper登录屏幕功能,而不实际使用CookieAuthHelper来维护自己的auth cookie中存储的凭据,确保只有活动的updateCredentials插件会收到成功的登录通知,以便它们可以存储凭据。
在BasePlugin基类中添加一个_getPAS方法,用于从插件中获取PAS实例的标准方式。
组和用户插件现在可以为principal条目的标题指定自己的标题(如果它们不这样做,PAS将不会计算一个)。
PAS和/或插件现在可以利用Zope ZCacheable框架和RAM缓存管理器提供的缓存功能。有关详细信息,请参阅doc/caching.stx。
让‘getUserById’将‘login’传递给‘_findUser’,以便返回的用户对象可以正常回答‘getUserName’。
加强‘logout’以防止缺少HTTP_REFERRER。
避免在添加CookieAuthHelper插件作为该用户时触发“Emergency user cannot own”。
检测并防止在CookieAuthHelper中递归重定向,如果匿名用户无法访问login_form。
使吞没异常时的日志记录不那么嘈杂(它们不一定需要关注)。
明确了IAuthenticationPlugin接口,它应该返回None,而不是在请求对未知主体进行身份验证时引发异常;相应地调整ZODBUserManager。
如果在zodb_user_plugin的authenticateCredentials中没有特定用户名的记录,不要在zodb_user_plugin的authenticateCredentials中记录错误,只返回None。
如果IAuthenticationPlugin从authenticateCredentials返回None而不是元组,不要在PAS本身中记录元组解包错误。
1.0.3 (2004-10-16)
实现了通过IChallengePlugins发布挑战的支持。
特别的三种挑战风格
HTTP基本认证
类似于CookieCrumbler的重定向
内联身份验证表单
使用 cAccessControl 运行时使单元测试通过。
plugins/ZODBRoleManager.py:不要声称对“认证”或“匿名”角色的权限,这些角色由 PAS 管理。
plugins/ZODBRoleManager.py:如果之前分配的受托者消失了,不要惊慌。
plugins/ZODBGroupManager.py:如果之前分配的受托者消失了,不要惊慌。
plugins/ZODBUserManager.py:插件现在使用 AuthEncoding 对其密码加密,这样我们可以更容易地支持迁移现有的 UserFolders。不过,由于 PAS 已经存在一段时间了,我们仍然会对旧凭据进行身份验证。
修复了双列表 ZMI 视图中的箭头图像。
当插件同时支持“enumerateUsers”和“enumerateGroups”时,searchPrincipals 将对精确匹配起作用。
“认证”角色现在由 PluggableAuthService 动态添加,而不是由任何角色管理器添加。
对所有吞没的插件异常添加了 WARNING 级别的日志和回溯,以便您注意到插件存在问题。
当无法进行身份验证时,所有 authenticateCredentials() 都返回单个 None,尽管所有调用都期望一个元组。
现在 extract user 中的用户 ID 调用 _verifyUser 来获取由枚举插件修改的 ID,而不是用身份验证 ID 进行修改,从而允许身份验证和枚举插件是不同的插件。
1.0.2 (2004-07-15)
ZODBRoleManager 和 ZODBGroupManager 需要的“two_lists”视图及其相关图像在它们分离时迁移到了 PluginRegsitry 产品;已恢复。
1.0.1 (2004-05-18)
CookieAuth 插件未能成功设置 Cookie(首先是因为 NameError,然后是由于长行错误)。
大多数模块中缺少 ZPL。
1.0 (2004-04-29)
初始发布
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。
源代码分发
构建分发版
Products.PluggableAuthService-3.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e5a24ea66fedfeb9cff24b2fa1369fa492f28470c22a8ac22126f474b8360a63 |
|
MD5 | c8bef9a04d1ad587e13d6a2173e0cade |
|
BLAKE2b-256 | b934011daf7976ac65798b2289a6d756c9e72dce30b313641ff68e062fcb3f9c |
Products.PluggableAuthService-3.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2aea4cfbc003ab3962a378970333e5588312e29fe710b1c3150708e183bd2d93 |
|
MD5 | fc579263ce64920854d2a0f468310b28 |
|
BLAKE2b-256 | 2b919bd580edd17bd2594008ee0b76dd5c158aa4b125486db0b11c32c29a106a |