基于saml2的单点登录zope 2/plone扩展:身份、属性和服务提供者

dm.zope.saml2的Python项目详细描述


架构

在saml2体系结构中,一组分布式权限(aka实体) 配合提供全面服务。每个当局都可以接管 一个或多个角色。角色例如"身份提供者"(可以 确定用户),"服务提供商"(提供一些服务)和 "属性提供程序"(可以提供有关用户的信息)。 权限及其角色由元数据描述。元数据 当局之间的交换,以允许他们合作。小精灵 交换消息以实现SSO(和其他)功能。

包当前提供一个saml2权限, 一个简单的身份提供者,一个简单的 服务提供者集成和一个简单的属性提供者。 所有功能都是通过zope管理创建的对象实现的。 接口(ZMI)。

权威

saml authority对象表示本地saml权限和 管理与之合作的外国当局的元数据。 its metadata 方法(可通过url调用)返回元数据 描述地方当局。外国当局 作为所谓的 实体 对象进行管理;它们的元数据是自动的 已更新(基于元数据中的有效性属性),手动更新 特殊情况下支持。

实现saml2角色的对象 作为一个(zope工具包)访问"他们"的权限 "效用"。为了实现这一点,saml权限只能是 在(zope工具包)站点下创建(参见包 5.localsitemanager 了解站点以及如何创建站点)。 (cmf或plone)门户是(在这个意义上)自动的站点。 因此,在一个简单的设置中,您可以在 一个门户(没有关于站点的特殊操作)。

在给定的站点中最多可以有一个saml权限。 但是,嵌套站点可能有自己的权限或使用 父站点的。

身份提供商

一般来说,身份提供者的任务是识别用户和 向服务提供商提供有关用户身份的断言。

提供的简单身份提供程序委托 主机cmf或plone门户的第一个任务(标识用户)。 因此,它使用标准门户功能进行登录和 认证;它没有对 门户管理其用户(及其属性)和 身份验证过程的详细信息。 因此,几乎任何门户都可以成为saml2身份提供者 只需在门户中创建一个"saml simple identity provider"。

在创建时,身份提供者 自动注册为"身份提供程序"角色 使用saml权限实用程序。创建失败,如果此实用程序 找不到或已经知道身份提供程序。

有一个变体身份提供者集成了elemantary 属性提供程序功能(请参阅"属性支持"一节)。

服务提供商

一般来说,saml2服务提供者 向用户提供某种(web)服务并使用saml2获取信息 关于某些用户的身份、属性或访问权限。 提供的服务本身与saml2无关;它可以是 几乎任何东西(使用web技术)。 只有一小部分与saml2有关:获取有关 由其他saml2机构在外部识别和管理的用户。

这里的简单服务提供者功能 包允许单个门户 或共享公共服务提供商描述的门户系列 T从中获取身份验证信息 一个saml2身份提供程序。 它通过miniframework与门户接口 "可插拔身份验证服务",由(例如)Plone门户使用。

在简单的例子中,(真实的)服务是由一个单独的门户实现的 应该从一个或多个saml2获取身份验证信息 身份提供者。这个用例是 支持创建"saml集成简单spsso插件" 在门户的 acl_用户的 和其接口的激活中。

如果基于saml2的身份验证替换了本地身份验证,则插件 可能需要删除负责本地身份验证的 接口已停用。一些集成工作是必要的,当本地 身份验证应与基于saml2的身份验证共存(本质上, 登录表单(用于本地身份验证)必须与 身份提供程序选择(用于外部身份验证)。

在更复杂的情况下,(真实的)服务不是由单个 门户,但由整个门户家族(通常提供相同的服务 或针对不同用户组的同一服务的稍微定制的变体) 共享有关saml2的公共服务描述。 在本例中,有一个共享的saml服务提供者 每个门户都有一个 saml simple spsso插件(外部spsso) 与共享服务提供程序一起工作。在这种情况下,服务提供商 插件通过cookies进行通信。因此,他们必须得到相同的饼干。

事实上,简单情况是复杂情况的变体,其中 服务提供商和插件由同一对象实现。

创建服务提供程序对象时(独立的或 与插件集成),它注册为"服务提供者"角色 使用saml权限实用程序。创建失败,如果此实用程序 找不到或已经知道服务提供商。

服务提供商集成可以显示来自 saml2断言作为门户中的用户属性(用户属性 是plone门户的一个标准特性-提供额外的 用户的姓名、电子邮件地址等信息。

属性支持

一般saml2属性支持

本节概述了saml2属性的一般原理 支持。下一节概述了 包装:

关于用户的saml2断言可以包含几乎任意的属性 提供额外的信息(身份之外)。 例如,属性可以用于通知合作 关于姓名、电子邮件地址、组的saml权限 用户的成员资格或特殊特权。

saml2属性由名称格式和 笨拙的)名字。或者,他们可以有一个所谓的"friendlyname" 应该是人类可读的。

saml2允许服务提供者定义零或 更多"attributeconsumingservice"s.每个"attributeconsumingservice" 由索引(整数)标识并包含序列 "requestedattribute"的描述。 当服务提供者请求对用户进行身份验证时, 可以指定它想要哪个"attributeConsumingService" 属性信息。

saml2属性提供程序能够为用户提供属性。 元数据告诉您可以提供哪些属性。

此软件包中的属性支持

此包按对象描述属性,在 "文件夹"和标识(本地唯一) 入侵检测系统。在 saml元数据和作为用户属性名。 属性的saml2名称格式和(正式)名称由 属性(描述)对象的属性。

属性值可以是XML架构基本类型的实例 或列表/序列 但普隆可能不明白其中一些类型)。

服务提供者对象实现为 "attributeConsumingService",每个"attributeConsumingService" 作为"requestedattribute"的"文件夹"。因此,服务提供者 可以定义各种有趣的属性集。然而, 标准身份验证请求仅请求默认设置。 而有一个身份验证方法支持 所需"attributeConsumingService"的规范 很可能此版本中尚未正确处理此in。

服务提供者插件公开了 作为标准(用于plone)用户属性的用户;的id 属性描述用作用户属性名。

当前包版本 没有独立的属性提供程序。但是,有 一种具有集成属性提供程序的身份提供程序变体 功能。它只作为部分提供属性信息 身份验证请求的。 它被实现为"属性"的"文件夹",描述 支持的属性以及如何计算它们的值。 默认情况下,将解释属性描述的id 作为用户属性名及其值(对于当前用户) 用作属性的值。或者,属性定义 可以指定"evaluator"–调用的方法或视图的名称 使用参数 member attr eid 来确定属性 价值。 member 是当前门户成员, attr 属性描述 以及应该获取信息的实体标识符。

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

推荐PyPI第三方库


热门话题
java如何通过弹出消息或警报对话框验证多个edittext字段?   九人莫里斯游戏的java比特板表示法   java处理:如何阻止所有侦听器捕获鼠标事件   selenium我无法单击元素,没有错误WebDriver/Java/Firefox   多线程Java ReentrantLock,无法解锁锁   java将数据发送到Wampserver Android   Java 2D阵列和扫描仪   java在使用apache commons csv读取csv文件时跳过双引号   java Liberty Buildpack在部署War时偶尔暂停/冻结   java JavaFX日期选择器未更新值   java如何获取移动电话的公共IP地址?   java Mockito检查对象上是否调用了任何方法(对象已被访问)   java这个maven认证错误表明了什么?   java如何使用特殊字体(单元格中的文本以粗体、下划线甚至不同的字体颜色)添加到Jtable?   实例化可以是具体类或接口类的Java类   Java准备语句的Oracle错误“SQL命令未正确结束”(ORA0033)