允许外部身份验证信息(通常是来自apache的头文件)创建用户和组的插件。
pas.plugins.external_auth的Python项目详细描述
简介
这个包为zope pas提供了一个插件,不仅用于管理身份验证 从一个外部源,主要是一些sso提供的http头,thing it 以脚本化和高度可配置的方式执行,但也用于管理组 定义、组归属和用户属性。
创建此包的用例是为了集成一个shibboleth sso plone与名为grouper的组管理应用程序相结合,位于 日内瓦大学。在我们的例子中,shibboleth,sso,从 grouper组定义,我们需要它们在plone中管理本地角色 和权限。
已知错误
解决方案的原则依赖于pas拥有多个源的能力 用户和组插件。不幸的是,这个特性中有一个bug zope和plone rewrite中的实现请参见bug #12794。一旦这一点将被毫无疑问地纠正,但是 对于那些没有的plone和pas版本,可以使用 以下是初始化py中的猴子补丁(此补丁用于plone groupstool):
from Products.PlonePAS.tools.groups import GroupsTool from AccessControl.requestmethod import postonly if not hasattr(GroupsTool, '_patched_ea__'): @postonly def removeGroup(self, group_id, keep_workspaces=0, REQUEST=None): """Remove a single group, including group workspace, unless keep_workspaces==true. """ retval = False managers = self._getGroupManagers() if not managers: raise NotSupported, 'No plugins allow for group management' for mid, manager in managers: if manager.getGroupById(group_id): if manager.removeGroup(group_id): retval = True gwf = self.getGroupWorkspacesFolder() if retval and gwf and not keep_workspaces: grouparea = self.getGroupareaFolder(group_id) if grouparea is not None: workspace_id = grouparea.getId() if hasattr(aq_base(gwf), workspace_id): gwf._delObject(workspace_id) self.invalidateGroup(group_id) return retval @postonly def addPrincipalToGroup(self, principal_id, group_id, REQUEST=None): managers = self._getGroupManagers() if not managers: raise NotSupported, 'No plugins allow for group management' for mid, manager in managers: if manager.getGroupById(group_id): if manager.addPrincipalToGroup(principal_id, group_id): return True return False @postonly def removePrincipalFromGroup(self, principal_id, group_id, REQUEST=None): managers = self._getGroupManagers() if not managers: raise NotSupported, 'No plugins allow for group management' for mid, manager in managers: if manager.getGroupById(group_id): if manager.removePrincipalFromGroup(principal_id, group_id): return True return False GroupsTool.removeGroup = removeGroup GroupsTool.addPrincipalToGroup = addPrincipalToGroup GroupsTool.removePrincipalFromGroup = removePrincipalFromGroup GroupsTool._patched_ea__ = True
另外,我们只需要测试我们没有实际使用的代理部分,或者 把它取下来。如果遇到问题,应该使用重定向到 外部URL方案。对于某些版本的python,这也不能工作 使用https(因为旧urllib2中的错误)。
待办事项
- 单元测试
- 更多文档
- 注销URL时重定向不起作用
- 使用一致的剖面图而不使用plone。
复制左
版权所有(c)2012瑞士微笑 有关版权信息,请参阅copying;有关gplv3的副本,请参阅license.txt 源包“docs”目录中的许可证。
更改日志
0.1(β)
- 初始版本
pas.plugins.external_auth软件包安装
我们提供标准的zc.buildout安装说明。
- 将pas.plugins.external_auth添加到要安装的鸡蛋列表:
[buildout] ... eggs = ... pas.plugins.external_auth
- 如果不使用plone和z3c.autoinclude, 告诉plone.recipe.zope2instance recipe安装zcml段塞:
[instance] recipe = plone.recipe.zope2instance ... zcml = pas.plugins.external_auth
- 重新运行构建,例如使用:
$ ./bin/buildout
如果要显式地包含包,可以跳过zcml slug 从另一个包的configure.zcml文件。
在Zope中安装
完成后,您可以使用提供的配置文件填充您的pas。 其中两个是为plone的版本3和4提供的,默认为未配置 例子。cmfquickinstaller使用的一个目标是plone 4 清空配置文件,这样您就可以用plone控制面板安装产品了。
这些概要文件是比实际用例更多的示例。他们的目的是 用作与配置相对应的真实配置文件的基础,除非 您更喜欢使用ttw-zmi配置。 无论如何,通过zope为外部身份验证使用install产品并不多 除了快速评估产品外,感觉良好。
在acl用户中配置了至少一个插件后,进入zmi tyhis插件的管理页面并遵循主页配置 说明。