如何使用 SPNEGO 和 CAS 获取 LDAP 用户属性?



使用 CAS 5.3.x 和 SPNEGO (Kerberos) 身份验证,如何获取除 SAMAccountName 之外的更多用户属性?

当我只使用"标准"LDAP 身份验证处理程序时,我可以放置以下配置:

cas.authn.ldap[0].principalAttributeList=sAMAccountName,displayName,givenName,mail

但是在 SPNEGO 身份验证之后,我没有得到这些额外的属性。

你知道一种方法吗?

自 3.x 时代以来,CAS 中就存在从外部数据存储中获取属性的功能。这个功能过去是,直到今天,都是由一个名为Person Directory的Apereo项目提供的,这是一个Java框架,用于解析来自各种底层来源的人和属性。它由一组组件组成,这些组件从 JDBC、LDAP 等中检索、缓存、解析、聚合和合并人员属性。CAS 尝试通过一个名为PrincipalResolver的概念来利用此框架,该概念的目标是为 CAS 构造一个最终可识别的经过身份验证的主体,该主体内部包含从属性存储库源获取的许多属性。这意味着,例如,可以在一个查询中使用SPNEGO进行身份验证,然后绕过询问LDAP,关系数据库和Groovy脚本来获取解析主体的属性,并将所有结果合并到最终集合中。

请注意,在大多数情况下,例如在直接 LDAP 身份验证的情况下,从 CAS 4.x 开始,身份验证引擎已得到增强,能够从身份验证源检索和解析属性,这将消除配置单独的属性存储库/解析程序的需要,尤其是在身份验证和属性源相同的情况下。仅当源不同或需要处理更高级的属性解析用例(如级联、合并等)时,才需要使用单独的解析器和源。

要将 CAS 配置为对属性存储库使用外部 LDAP,请使用:

cas.authn.attribute-repository.ldap[0].attributes.uid=uid
cas.authn.attribute-repository.ldap[0].attributes.displayName=displayName
cas.authn.attribute-repository.ldap[0].attributes.cn=commonName
cas.authn.attribute-repository.ldap[0].attributes.memberOf=memberOf
cas.authn.attribute-repository.ldap[0].ldapUrl=ldap://...
cas.authn.attribute-repository.ldap[0].useSsl=false
cas.authn.attribute-repository.ldap[0].useStartTls=false
cas.authn.attribute-repository.ldap[0].baseDn=dc=example,dc=edu
cas.authn.attribute-repository.ldap[0].searchFilter=uid={0}
cas.authn.attribute-repository.ldap[0].bindDn=...
cas.authn.attribute-repository.ldap[0].bindCredential=...

相关内容

  • 没有找到相关文章

最新更新