支持CAS协议的应用

单点登录SSO

如果没有应用列表中找到您的应用,同时您的应用支持CAS标准协议的认证配置,请参考本文的配置说明。

# 应用配置过程

  • 1.IDaaS企业中心-【资源】》【应用】》【自建应用】,添加自建应用。

  • 2.查看应用信息,认证集成选择CAS(目前支持CAS1.0,CAS2.0,CAS3.0)

  • 3.编辑认证配置

认证参数:

映射配置:

CAS3.0除了返回用户名之外,还可以根据配置CAS应用的映射定义返回用户属性< cas:attributes >

映射配置可根据应用的需要来配置返回用户信息里的用户属性

  • 4.应用账号授权

  • 5.获取IDaaS CAS服务配置

  • 6.以上步骤完成后,把您获取到的CAS接口信息配置到您的应用中,就可以进行登录验证了。

# CAS 接口说明

# 请求授权 /login

首先需要请求下面接口来获取票据ST

HTTP接口

GET https://IDaaS企业租户域名/api/v1/cas/login (opens new window)

请求参数

字段 必填 描述
service 回调地址URL

用户访问未登录应用时,应用请求授权获取票据Service Ticket(ST),此时IDaaS会重定向到登录页,登录成功IDaaS会检查 {service} 是否与创建应用的应用回调地址一致,验证成功后通过浏览器携带ticket重定向到如下地址:{service}?ticket=ST-ag6ByveBAejJ7ZJfQTKFW0y2XqSw5npz

请求示例 https://IDaaS企业租户域名/api/v1/cas/login?service=http://www.app.com:28080/login (opens new window)

tikect有效期:默认5分钟,(可选范围3-15分钟,IDaaS企业中心CAS服务配置可进行设置)

# 接口失败错误代码

代码 内容 描述
AMS-0017 {"code": "AMS-0017","data": null,"message": "参数值非法: service"} service参数和应用回调地址不匹配
AMS-0018 {"code" : "AMS-0018", "data" : null,"message" : "参数不存在: service"} service参数不存在

# 获取用户信息

HTTP接口

CAS1.0:

https://IDaaS企业租户域名/api/v1/cas/validate?service=http://www.app.com:28080/login&ticket=ST-ag6ByveBAejJ7ZJfQTKFW0y2XqSw5npz (opens new window)

CAS2.0 :

https://IDaaS企业租户域名/api/v1/cas/serviceValidate?service=http://www.app.com:28080/login&ticket=ST-ag6ByveBAejJ7ZJfQTKFW0y2XqSw5npz&format=XML (opens new window)

CAS3.0 :

https://IDaaS企业租户域名/api/v1/cas/p3/serviceValidate?service=http://www.app.com:28080/login&ticket=ST-ag6ByveBAejJ7ZJfQTKFW0y2XqSw5npz&format=XML (opens new window)

请求参数

参数 必填 描述
service 必填 与请求授权接口中参数一致
ticket 必填 请求授权接口返回票据ST
format 不必填 可选值XML、JSON,默认XML。决定CAS2.0和CAS3.0接口返回内容输出格式

收到获取用户信息接口请求后,IDaaS会判断ST的合法性和有效性,以及service是否和ST匹配,验证通过后会返回给应用用户信息

返回示例

CAS1.0

成功响应

yes
username
1
2

失败响应

no
1

CAS2.0

成功响应

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationSuccess>
        <cas:user>username</cas:user>
    </cas:authenticationSuccess>
</cas:serviceResponse>
1
2
3
4
5
{
    "serviceResponse" : {
        "authenticationSuccess" : {
            "user" : "username"
         }
     }
}
1
2
3
4
5
6
7

失败响应

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationFailure code="INVALID_TICKET">
        Ticket ST-1856339-aA5Yuvrxzpv8Tau1cYQ7 not recognized
    </cas:authenticationFailure>
</cas:serviceResponse>
1
2
3
4
5
{
    "serviceResponse": {
    "authenticationFailure": {
        "code": "INVALID_TICKET",
        "description": "the ticket provided was not valid, ticket is &#39;ST-MKLL1aSQpn8HmZrvjNVq9FWKGiUE0hkd&#39;"
        }
    }
}
1
2
3
4
5
6
7
8

CAS 3.0

CAS3.0除了返回用户名之外,还可以根据配置CAS应用的映射定义返回用户属性cas:attributes,属性可根据应用需要灵活配置

成功响应

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas">
    <cas:authenticationSuccess>
      <cas:user>minghui</cas:user>
      <cas:attributes>
        <cas:authenticationDate>2020-02-11T09:28:14.987Z</cas:authenticationDate>
        <cas:longTermAuthenticationRequestTokenUsed>false</cas:longTermAuthenticationRequestTokenUsed>
        <cas:isFromNewLogin>true</cas:isFromNewLogin>
        <cas:date>2020-02-03T16:00:00.000Z</cas:date>
        <cas:duozhi>test1</cas:duozhi>
        <cas:duozhi>test2</cas:duozhi>
        <cas:duozhi>test3</cas:duozhi>
        <cas:duozhi>test4</cas:duozhi>
        <cas:birthday>2020-02-04T16:00:00.000Z</cas:birthday>
        <cas:createAt>2020-01-10T09:01:04.000Z</cas:createAt>
        <cas:disabledAt>null</cas:disabledAt>
        <cas:disabed>false</cas:disabed>
        <cas:authority>{"roles":["businessManager","userManager","systemManager"]}</cas:disabed>
      </cas:attributes>
    </cas:authenticationSuccess>
</cas:serviceResponse>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
    "serviceResponse": {
        "authenticationSuccess": {
        "attributes": {
            "date": "2020-02-03T16:00:00.000Z",
            "duozhi": ["test1", "test2", "test3", "test4", "test5"],
            "birthday": "2020-02-04T16:00:00.000Z",
            "createAt": "2020-01-10T09:01:04.000Z",
            "disabed": false,
            "authenticationDate": "2020-02-11T06:43:30.588Z",
            "longTermAuthenticationRequestTokenUsed": false,
            "isFromNewLogin": true,
            "authority":{"roles":["businessManager","userManager","systemManager"]}
            },
        "user": "minghui"
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

失败响应

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationFailure code="INVALID_TICKET">
        Ticket ST-1856339-aA5Yuvrxzpv8Tau1cYQ7 not recognized
    </cas:authenticationFailure>
</cas:serviceResponse>
1
2
3
4
5
{
    "serviceResponse": {
    "authenticationFailure": {
        "code": "INVALID_TICKET",
        "description": "the ticket provided was not valid, ticket is &#39;ST-MKLL1aSQpn8HmZrvjNVq9FWKGiUE0hkd&#39;"
        }
    }
}
1
2
3
4
5
6
7
8

CAS2.0 和 CAS3.0 错误码

CAS2.0 和 CAS3.0 接口校验失败,返回值中cas:authenticationFailure的内容区域code展示

错误代码 描述
INVALID_REQUEST 请求参数不全。上面讲到至少必须有“service”和“ticket”两个参数
INVALID_TICKET 提供的ticket无效
INVALID_REQUEST 提供ticket是有效的,但是和ticket关联的service并不匹配,此时ticket再次使用是无效的
INVALID_REQUEST 在ticket验证时发生内部错误,如应用账号未找到

# 注销/logout

HTTP接口

GET https://企业域名/api/v1/cas/logout?url=http://www.app.com:28080/logout (opens new window)

参数 必填 描述
url 非必填 第三方应用的登出地址

注销会破坏第三方应用的单一登录CAS会话。登录cookie被销毁,在用户再次提供主凭据(建立新的单点登录会话)之前,对登录的后续请求将不会获得服务票证ST

Last Updated: 10/18/2021, 4:41:34 PM