1. 程式人生 > >CAS統一登入認證(10): 返回認證使用者多屬性

CAS統一登入認證(10): 返回認證使用者多屬性

在做客戶端認證過程中,有些系統不但需要賬號,還需要如卡號,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地址等設定好,測試結果: