A-Select认证的PAS插件
项目描述
pas.plugins.aselect的变更日志
1.5 (2012-10-14)
已迁移到https://github.com/zestsoftware/pas.plugins.aselect [maurits]
1.4 (2011-08-22)
当配置默认值更改时(如客户端包中的monkey patch),使测试不太可能失败。[maurits]
1.3 (2011-01-24)
迁移到Plone collective。第一次公开发布。[maurits]
修复了在最近添加了UPDATE_EXISTING_USERS配置选项(默认:False)之后的测试。[maurits]
1.2 (2010-08-30)
添加了一个翻译的本地化。[maurits]
在@@aselect-login页面,如果没有创建用户因为可能属于多个组,显示用户选择加入的组选项。[maurits]
添加了配置选项GROUP_ATTRIBUTE,默认值为‘nlEduPersonHomeOrganizationId’。[maurits]
添加了两个配置选项:MUST_HAVE_GROUP和MUST_HAVE_EXACTLY_ONE_GROUP,默认都为True。使用这些默认设置,我们拒绝在无法从凭证中提取 exactly one group时创建和验证用户。[maurits]
添加配置选项 NOT_ACCEPTED_USERS,并将凭证提供的名称与该黑名单进行比较。我们不对黑名单用户进行认证。[maurits]
将 ALWAYS_UPDATE 配置选项重命名为更清晰的 UPDATE_AUTHENTICATED_USER。[maurits]
将 EXTRACT_ALWAYS 配置选项重命名为更清晰的 EXTRACT_ON_ALL_PATHS。[maurits]
将 config.UPDATE_ALWAYS 设置为 True,因此我们总是更新用户属性和组设置,因为我们默认只是对 aselect-login 页面和 testcookies 页面做出反应。[maurits]
如果我们不知道姓氏,则在已知的情况下将电子邮件地址的前部分添加到全名中。[maurits]
1.1 (2010-08-25)
允许调用 @@aselect-login?noredirect=1 以保持在 @@aselect-login 页面上,而不是被重定向到 Plone 网站根目录。这应该会使检查 cookies 更容易。[maurits]
1.0 (2010-08-19)
不要始终提取和认证凭证,而仅在特定路径上,如 testcookies 和 aselect-login。[maurits]
添加了一个简单的重定向到 Plone 网站根目录的 aselect-login 页面。在 (Apache) A-Select 模块中将此定义为受保护的应用程序,你应该就可以正常使用了。[maurits]
如果 nlEduPersonHomeOrganizationId(可能是 BRIN 码)与组 id 匹配,我们在认证过程中将用户添加到该组。[maurits]
仅处理 aselectattributes cookie,而不处理任何其他 cookie。[maurits]
第一个版本,基于一些旧客户代码。[maurits]
A-Select集成PAS插件
A-Select(仅限荷兰语)与“licentiekantoor”(“许可办公室”)结合使用,是一个完整的认证/授权解决方案。它可以与 openid 相比,增加了授权。[maurits]
基本原理:现有的 apache 配置处理与 aselect 的通信,并确保我们获得的 aselect cookies 是真实的。因此,PAS 插件只需要处理 cookie 内容。[maurits]
PAS功能
此插件执行提取和认证。
从 aselectattributes cookie 中提取凭证:用户 id 和成员数据,如全名、电子邮件地址、组织 id(BRIN 码)。
认证凭证:根据提取的凭证创建或更新成员对象,并认证此用户。
如果组织 id 与现有组的 id 匹配,我们将此用户添加到该组。请注意,组永远不会再次删除。
关于性能和更新的说明
我们可以在每次请求中检查用户属性或组的更改。但每次请求不仅意味着每个页面的请求一次,而且也意味着每个 css、javascript 或图像文件请求一次。这可能会对性能产生负面影响(尽管可能可行)。
因此,我们的解决方案是在某些路径上仅提取 aselect 信息;默认情况下,在 @@aselect-login 路径和 `@@testcookies` 路径上执行此操作。或者,您可以选择永不更新具有来自 plone.session 的认证 cookie (__ac) 的用户的 aselect 信息。注销应该足以重置 plone.session cookie,这将触发自动登录的更新以及获取属性更新,因为 A-Select cookie 应该仍然可用。
这是默认行为。在 config.py 中,您可以更改多个设置(在您自己的包中的补丁中),如果您不喜欢默认设置并且了解对性能和最新性的影响。请注意,config.py 有合理的注释,因此如果您是程序员,您可能想查看该文件。
或者,我们可能想要做一些聪明的操作,比如将 cookiestring 记忆在某个地方,并且仅在字符串有更改时尝试更新。
用法
已在Plone 3.3.5中进行测试。在buildout.cfg的实例部分中添加pas.plugins.aselect到eggs参数。重新运行buildout,启动实例,并通过“添加/删除产品”在站点设置中安装插件。安装代码所做的唯一事情是将插件添加到acl_users,激活所需的插件接口,并确保它是这些接口中列出的第一个插件(实际上顺序可能并不重要,请参见上文)。因此,如果您愿意,可以手动完成此操作。
请注意,在pas/plugins/aselect目录中的README.txt中有一个广泛的doctest。它可能作为测试而不是文档工作得更好,因此它不包括在PyPI页面上。
致谢
Guido Wesdorp
Joris Slob
Maurits van Rees
Reinout van Rees
项目详情
pas.plugins.aselect-1.5.zip 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ce1d69e9f4712920f8eee38839c03892a5e43f7d895492c3ed6ab6007113844b |
|
MD5 | b443de7e220cf0a6d1fb8d8918023312 |
|
BLAKE2b-256 | 1bc3d8fa73a34503fa90ac940cf6fe86d7ea81b2fd7d7d09fa99a4e640a39270 |