允许外部身份验证信息(通常是来自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插件的管理页面并遵循主页配置 说明。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
linux Java线程创建跟踪   java可以让UNMIDEANER考虑文档过滤吗?   获取元素的java数组   java在ArrayList中搜索字符串并返回另一个关联字符串   java将现有私钥导入BKS密钥库   java proguard死代码分析给出了私有字段的假阳性   Java Web框架,用于新项目   java Gson:指定类或字段的命名策略   递归Java:保存递归本地计数器的值   java jfree图表集在图表中显示范围x值   Java:可以比较一个类吗对象是否具有泛型类型参数?   java JMS单个会话可以有多个MessageProducer吗?   java如何比较100条字符串记录,这些记录应该有3个值,即true、False或null   打开GUI实例的java检查   java如何重构具有多个切换情况的应用程序?   java如何更新Ubuntu上已经安装的IntelliJ IDEA?   java如何避免更改存档中文件的文件属性?