在做客户端认证过程中,有些系统不但需要账号,还需要如卡号,mail等其它信息,默认cas认证后返回的是认证账号,要返回多属性,还要做些设置,记录如下:
环境:cas5.3.2 + ldap
首先,服务端要支持返回多属性:
1. application.properties 在原配置好cas使用ldap认证的基础上,增加如下部分
cas.authn.ldap[0].allowMultiplePrincipalAttributeValues=true //允许返回多属性
cas.authn.ldap[0].allowMissingPrincipalAttributeValue=true //允许有些属性是空值
cas.authn.ldap[0].principalAttributeList=sn,cn,mail,displayName //返回的属性列表
2. services 需要授权允许某个应用返回多属性
可以允许返回所有属性列表的值,也可以只允许返回指定的值
(1)返回所有属性列表的值 修改 或增加如test-100000101.json
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "^http://X.X.X.X.cn.*",
"name" : "cas test",
"id" : 10000101,
"description" : "CAS Login test X.X.X.X",
"evaluationOrder" : 101
"attributeReleasePolicy" : {
"@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy"
}
}
(2) 返回指定值
替换相应部分:
"attributeReleasePolicy" : {
"@class" : "org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy",
"allowedAttributes" : [ "java.util.ArrayList", [ "cn", "sn", "mail" ] ]
}
3.重启服务
客户端即可获取多属性值
4. java客户端
以cas自带的cassample为例
以下是运行获取信息,可见已获取到多个用户信息。
5. php客户端
可以下载phpCAS,目前最新的是:CAS-1.3.5
下载后,按官方下载页面,简单配置即可测试,以下是运行 CAS-1.3.5/exampl_simple.php 的界面
example_simple.php 不用修改,修改config.php 即可,把cas服务器url,本应用url地址等设置好,测试结果: