Shibboleth的嵌入式发现服务(EDS)和Plone的认证集成层
项目描述
简介
此包为Plone用户提供了通过Shibboleth登录站点的功能,利用Shibboleth的嵌入式发现服务(EDS)。这使得Plone可以成为Shibboleth服务提供者(SP)并在Plone登录页面上自托管发现服务。需要一个配置为提供JSON发现信息(DiscoFeed处理程序)的运行Shibboleth响应者来填充EDS列表。
实战
集体.shibboleth的EDS小部件在实际使用中,与澳大利亚和新西兰访问联盟一起使用。如果SAML元数据中提供了组织标志,则显示的图标将自动显示组织的标志。目前,这两个示例联盟都不支持相关的元数据扩展,并默认显示无标志。
功能
提供完全可配置的Shibboleth EDS登录小部件
在Plone内部托管Shibboleth EDS资源
将Shibboleth EDS样式与Plone的默认Sunburst主题集成
将Plone的登录页面更改为通过collective.pluggablelogin可插入。
将默认的Shibboleth EDS登录小部件分配给可插入的登录页面。
修改登录链接以防止登录表单在浮层中显示,因为小部件需要JavaScript。
将Shibboleth Authenticated角色添加到Plone中。
将Shibboleth Authenticated角色分配给所有使用此方法登录的用户。
在首次登录时提醒用户其本地账户的密码。Plone的PAS要求用户必须有密码,这允许Shibboleth用户通过WebDAV、FTP和其他非联盟方法访问Plone。
安装
使用Plone进行安装时,应按照以下标准做法修改您的Buildout配置,将此包添加到您的egg列表中
[instance] recipe = plone.recipe.zope2instance ... eggs += collective.shibboleth
重新运行Buildout,重启Plone并激活插件。这将在您的登录页面上配置默认的Shibboleth小部件。您现在需要确保您的Shibboleth响应器已相应配置,请参阅技术细节。
您可以使用Plone的GenericSetup基础设施在另一个包或站点策略产品中重新配置此默认小部件或创建您自己的小部件。
技术细节
您的网络服务器和Shibboleth服务提供程序(SP)必须以两种方式配置
为EDS提供发现源。请参阅配置Shibboleth以供EDS使用;
处理登录过程并将用户属性传递给Plone。请参阅Shibboleth身份验证配置
配置Shibboleth以用于EDS
按照Shibboleth Wiki上https://wiki.shibboleth.net/confluence/display/EDS10/3.+Configuration下配置服务提供程序的说明进行操作。您的配置可能与提供的说明不同。一个强制性的配置步骤是设置DiscoveryFeed处理程序。
您的EDS配置选项(在idpselect_config.js中设置)在创建Shibboleth EDS小部件时在Plone中进行配置。
Shibboleth认证配置
您可以使用Shibboleth对您的站点进行两种用户身份验证:一种是主动的,通过为某些资源强制创建会话,另一种是被动的,仅在存在会话的情况下传递身份验证信息。有关Shibboleth的更多信息,请参阅https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPProtectContent。
在Plone环境中使用collective.shibboleth,您有两个选择
配置Shibboleth和您的前端网络服务器以被动地了解您的应用程序。在创建认证会话后,会话细节将自动添加到传入请求中,以便Plone接受;或
配置 Shibboleth 和您的前端 Web 服务器,以要求对所有或部分网站 URL 进行会话。当用户访问相关 URL 或路径时,将请求身份验证并将用户重定向到相关的发现服务。
Plone如何处理此认证
上述第一个选项可以更加无缝,因为您可以在 Plone 中使用 EDS 登录插件,而不是跳转到发现服务或 WAYF 页面。
默认情况下,监听 Shibboleth 标头的底层 PAS 插件(Products.AutoUserMakerPASPlugin)配置为接受任何网站 URL。对于默认的 Plone 安装,已配置 plone.session PAS 插件(通常处理身份验证),它将创建会话并在用户登录期间接管身份验证。
为了最有效地管理此过程,建议配置 Shibboleth 仅保护 Plone 的 logged_in 视图,并将此 URL 配置为返回点(通过 EDS 插件或 URL 参数)。EDS 插件将默认使用此设置(但可以自定义)。这样,您可以确保只有在用户访问此特定路径时才会将 Shibboleth 属性传递到 Plone。由于此路径通常仅在登录期间使用,因此可以减少用户会话其他部分的加载时间和处理需求。
建议的流程如下
配置 Shibd 发现处理程序并使用 Shibboleth 保护 /logged_in 路径。
在 Plone 中安装此软件包,并配置插件登录页面的 Shibboleth EDS 插件。
现在,当用户来时
用户点击 Plone 中的 登录
用户将看到 EDS 插件,其中包含一系列身份提供者(IdP)
用户选择 IdP 并被带到 IdP 登录页面,或者如果用户已经通过 IdP 进行了身份验证,则透明地重定向。
用户将被重定向回 Plone 并自动登录。幕后,Shibboleth 将将属性注入到用户的 logged_in 请求中,而 Products.AutoUserMakerPASPlugin 为该用户创建了账户。
现在用户的会话已创建,他们可以准备使用 Plone 而不依赖于 Shibboleth 属性。
关于包含的嵌入式发现服务(EDS)
本软件包使用由 Shibboleth 项目提供的主 Shibboleth 项目的 Shibboleth EDS。EDS 的分发可在 http://download.opensuse.org/repositories/security:/shibboleth/ 获取,源代码可在 http://git.shibboleth.net/view/?p=js-embedded-discovery.git;a=summary 获取。
EDS 可以配置为 Shibboleth 登录插件。此插件可以添加到任何页面,但最适用于本软件包配置的可插入登录页面。
包含的 EDS 分发已使用以下方式通过包含的补丁文件(src/collective/shibboleth/browser/shibboleth-ds-plone.patch)进行自定义
允许通过DOM元素上的data-options属性配置EDS。通常,配置函数需要手动编辑。
调整或删除与Plone默认设置冲突的某些样式。
此补丁主要需要因为idpselect_config.js文件硬编码了一个大型的语言信息结构。我们正在与Shibboleth项目合作改进JavaScript并回滚补丁到上游。
目前,要将补丁重新应用到EDS的新版本,请执行以下操作
cd src/collective/shibboleth/browser/ patch -p5 < shibboleth-ds-plone.patch # Commit the result once patch is checked
更新本包中的EDS
为了更新EDS JavaScript小部件,请更新./src/collective/shibboleth/browser/js-embedded-discovery中的子模块,并将更改提交到该存储库的跟踪版本。
然后,您需要构建EDS并将编译的文件放置到该包的相关位置。
cd src/collective/shibboleth/browser/js-embedded-discovery make kit cp -R shibboleth-embedded-ds-*/*{nonminimised,gif,js,css} ../shibboleth-ds/ make clean
现在,更新collective.shibboleth的更改日志,并提交结果。
David Beitey,作者
变更日志
1.3 (2018-12-05)
将zope.formlib添加到Plone 5.x的依赖项。[timo]
1.2 (2016-01-21)
进一步修复EDS中的查询字符串解析。[davidjb]
将EDS(现在托管在Git中)作为子模块进行跟踪。[davidjb]
将多个导入步骤更改为ZCML配置。[davidjb]
1.1.2 (2015-06-19)
修复了当用户被提示登录时无法返回到came_from URL的问题。此修复将很快集成到EDS上游。[davidjb]
1.1.1 (2015-05-20)
对readme和包描述进行了少量更改。[davidjb]
1.1 (2015-05-20)
尚未更改。
1.0 (2015-05-20)
将EDS升级到r157以修复最近的一些错误。[davidjb]
在安装时将小部件分配到可插入登录页面。[davidjb]
从嵌入式WAYF更改为Shibboleth的EDS。[davidjb]
从本包中删除旧的collective.aaf代码;该包现在依赖于本包。[davidjb]
从collective.aaf重构,并将collective.aaf转换为本包顶部的特定于AAF的层。[davidjb]
项目详细信息
collective.shibboleth-1.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fa74ec9311c76865bb72dbb794f6a844d624195707063c60c34400d4217164f3 |
|
MD5 | 42db7c2e92cd8156ec140c92a4b907b5 |
|
BLAKE2b-256 | b56c319556fae84839af648ed2cf9265f7c49a3aa2b506f555cbdbe0d3a50374 |