使用CAS登录页面(CAS接口)
页面跳转登录方式为推荐方式,同等条件下建议使用该方式进行集成。用户在多个应用系统中,只需要登录一次就可以访问所有相互信任的应用系统,可为用户登录提供单点登录的使用效果。
登录场景
页面跳转集成兼容 CAS 2.0、CAS 3.0 协议标准,流程包含三种场景下的登录流程:首次登录、登录后第二次访问同一个第三方应用、登录后首次访问第二个第三方应用。
首次登录流程为:
- 用户通过浏览器打开第三方应用,第三方应用验证用户登录状态(如通过 session cookie 判断),判断用户未登录后,将用户重定向到认证服务器;
- 认证服务器验证用户登录状态,判断用户未登录后,向用户展示登录页面;
- 用户完成登录操作;
- 认证服务器设置用户浏览器 cookie 的 CASTGC 内容,并重定向用户到第三方应用;
- 第三方应用从用户请求中获取 ticket,并使用 ticket 调用认证服务器验证接口, 获取用户信息;
- 第三方应用使用获取到的信息(如人员编号、姓名)完成系统内登录逻辑(如设置 session)。
登录后第二次访问同一个第三方应用流程为: - 用户通过浏览器打开第三方应用,第三方应用验证用户登录状态(如通过 session cookie 判断);
- 第三方应用判断用户已登录,向用户展示内容页面。
登录后首次访问第二个第三方应用流程为: - 用户通过浏览器打开第三方应用,第三方应用验证用户登录状态(如通过 session cookie 判断),判断用户未登录后,将用户重定向到认证服务器;
- 认证服务器通过 CASTGC 验证用户登录状态,判断内容有效后,重定向用户到第三方应用;
- 第三方应用从用户请求中获取 ticket,并使用 ticket 调用票据验证接口, 获取用户信息;
- 第三方应用使用获取到的信息(如人员编号、姓名)完成系统内登录逻辑(如设置 session)。
登录接口
地址 http://cas.xxx.com/login
调用方式 GET
参数 service 必填 第三方应用接口地址,用户在 /login 接口完成登录后,系统会将其重定向到的该地址,此接口由第三方应用提供,要在服务管理的白名单内,接口需要完成的操作:
- 从请求中获取 ticket 参数;
- 使用ticket 调用票据验证接口 /serviceValidate 获取用户信息( ticket 一次生效);
- 完成用户登录(如写 session )。
调用场景 第三方应用在判断用户未登录后,将用户重定向到该地址。
示例 https://cas.xxx.com/login?service=http://jjgl.xxx.com 用户完成登录后,将重定向到:http://jjgl.xxx.com?ticket=ST-123456
登出接口
地址 http://cas.xxx.com/logout
调用方式 GET
参数 service 必填 同1.1.2登录接口/login 的 service 参数
调用场景 用户在第三方应用点击注销/登出按钮后,第三方应用:
- 调用后台接口,使用户 session 失效;
- 重定向用户到该地址,使统一认证登录状态失效。
示例 http://cas.xxx.com/logout?service=http://jjgl.xxx.com 用户完成登出后,将跳转至登录页面
票据验证接口
1. 调用方式 GET
协议 | URL |
---|---|
CAS 2.0 协议接口 | http://cas.xxx.com/serviceValidate |
CAS 3.0 协议接口 | http://cas.xxx.com/p3/serviceValidate |
2. 参数说明:
参数 | 是否为空 | 说明 |
---|---|---|
service | 必填 | 同登录接口/login 的 service 参数 |
ticket | 必填 | 第三方应用获取到的 ticket ,如 ST-123456 |
3. 返回值示例
示例 https://cas.xxx.com/serviceValidate?service=http://jjgl.xxx.com&ticket=ST-123456 验证成功后,将返回:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>admin</cas:user>
<cas:attributes>
<cas:userNO>admin</cas: userNO>
<cas:realName>管理员</cas:realName>
<cas:accountID>admin</cas:accountID>
…
</cas:attributes>
</cas:authenticationSuccess>
</cas:serviceResponse>
验证失败后,将返回:
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas' >
<cas:authenticationFailure code="INVALID_TICKET" >
Ticket ST-123456 not recognized
</cas:authenticationFailure>
</cas:serviceResponse>
4. 错误码说明:
返回值 XML 格式编码的调用结果,如果 ticket 验证通过,将返回用户信息,否则返回错误信息,错误码包含:
错误码 | 错误信息 |
---|---|
INVALID_REQUEST | 请求参数错误 |
INVALID_TICKET | ticket 验证失败 |
INVALID_SERVICE | ticket 验证成功,但是 service 不在白名单中 |
INTERNAL_ERROR | 认证服务内部错误 |