0

我正在前端使用 Shibboleth 身份验证的应用程序。如何检索经过身份验证的用户名以便在我的应用程序中显示它?

4

3 回答 3

1

您需要将该属性发布给您。通常,它将作为标头添加到本地 SP 的请求中,至少这是它在具有 ISAPI 扩展的 IIS 上的工作方式。

于 2011-12-09T21:56:56.327 回答
1

您可以以特定于应用程序语言和环境的方式访问属性。首选方法是使用环境变量,但您也可以使用 HTTP 请求标头,这可能会带来一些安全问题,因为客户端可以“伪造”他们想要的任何标头(但是,某些 HTTP 前端(例如 nginx)会丢弃带有下划线的标头在它们中,这是 Shibboleth Native SP 通常使用的)。

例如,如果您在 Tomcat 上使用 Java,您将mod_proxy_ajp在 Apache HTTP 上使用mod_shib2,并且您将配置 SP 以将“AJP_”添加到标头/变量中,以便 mod_proxy_ajp 代码将它们作为属性放在请求中的标题。

无论如何,一旦您知道用户名(可能是主体/主题)正在传递给您的应用程序,您就可以通过上面链接中提到的编程语言的典型属性访问方法简单地访问它。

于 2011-12-15T05:32:19.670 回答
0

eduPerson 对象类规范 (200806)

2.2.8。eduPersonPrincipalName(在 eduPerson 1.0 中定义);OID:1.3.6.1.4.1.5923.1.1.1.6


RFC 4512 定义(1.3.6.1.4.1.5923.1.1.1.6

      NAME 'eduPersonPrincipalName'

      DESC 'eduPerson per Internet2 and EDUCAUSE'

      EQUALITY caseIgnoreMatch

      SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE )

应用实用类:标准;# 个值:单个

定义

用于机构间身份验证的人员的“NetID”。它应该以“user@scope”的形式表示,其中范围定义了一个本地安全域。不建议使用多个“@”符号,但无论如何,从左侧开始的第一个“@”符号将作为组件之间的分隔符。因此,用户标识符在左边,安全域在第一个“@”的右边。该解析规则符合正则表达式处理中的POSIX“贪婪”消歧方法。范围为注册域名时,以相应的注册机构为范围。例如,francis@trinity.edu 将暗示 ePPN 背后的身份具有“NetID”“francis” 在以“trinity.edu”域名注册的高等教育机构中。如果使用其他值样式,则必须由相关各方对其语义进行分析。scope 的每个值都定义了一个命名空间,其中分配的主体名称是唯一的。鉴于此规则,没有一对 eduPersonPrincipalName 值应该发生冲突。如果它们相同,则它们指的是同一管理域中的同一主体。

笔记

如果填充,用户应该能够使用本地操作的服务使用此标识符进行身份验证。本地身份验证系统应该能够充分确认(对本地和远程应用程序)经过身份验证的主体是该标识符的颁发对象。

最初的意图是在 Shibboleth 项目http://shibboleth.internet2.edu/中使用此属性。然而,很明显,许多其他应用程序也可以很好地利用此属性(例如 H.323 视频、聊天软件等)。eduPersonPrincipalName (EPPN) 将按如下方式使用:资源所有者 A 将查看 B 的目录条目以发现 B 的 EPPN。然后 A 会告诉本地授权系统 B 的 EPPN 被允许使用该资源。当 B 尝试访问资源时,应用程序(或访问控制基础设施)将验证 B 的身份,与本地授权系统核对以确保 B 已被授予适当的访问权限,然后授予或拒绝访问。

EPPN 看起来像一个 Kerberos 标识符 (principal@realm)。站点可能会选择在本地实施 EPPN 作为 Kerberos 主体。但是,这不是必需的。站点可以选择以本地可接受的任何方式进行身份验证。

同样,EPPN 不应与用户发布的电子邮件地址混淆,尽管这两个值可能相同。一些站点选择将电子邮件地址的用户部分和安全主体设置为相同的字符串;其他网站选择不这样做。即使它们看起来相同,但它们用于不同的子系统并用于不同的目的,并且不要求它们必须保持相同。

本地白页目录中用户对象的 uid 属性还可能包含登录 id、安全主体;某些系统(例如 NDS)可能会将登录 ID 放在 cn 属性中。这些属性在通用的对象类中定义。不幸的是,它们的使用没有以足够精确和一致的方式规定用于跨域授权。各种系统已经对这些属性进行了相互冲突的使用。因此,我们定义了这个新属性。

一个假设是 EPPN 由 univ.edu 的大学在企业基础上进行管理。特定的 EPPN 仅分配给相关用户;它不是一个多人共享的安全主体标识符。最后,每个 EPPN 在本地安全域中都是唯一的。

将以前分配的 EPPN 重新分配给不同的个人需要多长时间(如果有的话)是一个机构决定。一些机构将选择永不重新分配 EPPN。其他人可能会在重新分配之前选择相对较短的中断。虽然这使依赖方的工作复杂化,但鉴于机构自主权,这是不可避免的。有关这些问题的进一步讨论,请参阅有关标识符的 MACE 最佳实践文档。

在创建一些基于当前部署的技术和当前不使用 LDAP 或需要 PKI 的代码的应用程序时,该属性应该证明是有用的。该属性应有助于创建一个框架,以促进使用不同技术的站点之间有趣的机构间合作。简而言之,这个属性为另一个抽象层提供了基础。

此属性可用于控制对资源的访问的示例应用程序

示例(LDIF 片段)eduPersonPrincipalName:hputter@hsww.wiz

语法:目录字符串;索引:pres,eq,sub


参考资料: http: //middleware.internet2.edu/eduperson/docs/internet2-mace-dir-eduperson-200806.html#eduPersonPrincipalName

于 2011-12-21T16:06:40.033 回答