可以捕获Shibboleth Authenticated用户名

时间:2011-12-09 21:53:51

标签: username shibboleth

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

感谢。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

例如,如果您在Tomcat上使用Java,那么在Apache HTTP上使用mod_proxy_ajp并使用mod_shib2,您将配置SP以将“AJP_”添加到标头/变量中这样mod_proxy_ajp代码就将这些代码放在Request as Attributes而不是Headers。

无论如何,一旦你知道用户名(可能是Principal / Subject)被传递给你的应用程序,你可以通过你编程语言的典型属性访问方法来访问它,如上面的链接所示。

答案 2 :(得分: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"的形式表示。 scope定义了本地安全域。多个" @"不建议使用标志,但无论如何,第一次出现'" @"从左边开始的符号将被视为组件之间的分隔符。因此,用户标识符位于第一个" @"右侧的左侧安全域。这个解析规则符合POSIX"贪心"正则表达式处理中的消歧方法。当范围是注册域名时,相应的注册人组织将被视为范围。例如,francis@trinity.edu意味着ePPN背后的身份具有" NetID" "弗朗西斯"在高等教育机构注册域名" trinity.edu。"如果使用其他值样式,则必须由相关各方分析其语义。范围的每个值都定义了一个命名空间,在该命根据此规则,任何一对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)可能会在cn属性中放入登录ID。这些属性在通用的对象类中定义。不幸的是,它们的使用没有以足够精确和一致的方式规定用于跨域授权。各种系统已经对这些属性进行了相互矛盾的使用;因此,我们已经定义了这个新属性。

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

在将之前分配的EPPN重新分配给不同的个人之前,有多长时间,这是一个制度性的决定。一些机构将选择永不重新分配EPPN。其他人可能会在重新分配之前选择相对较短的间隙。虽然这使依赖方的工作变得复杂,但鉴于机构自治,这是不可避免的。有关标识符的详细信息,请参阅MACE最佳实践文档。

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

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

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

语法:directoryString;索引:pres,eq,sub


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