1.前言
CAS全称为Central Authentication Service即中央认证服务,是一个企业多语言单点登录的解决方案,并努力去成为一个身份验证和授权需求的综合平台。
CAS是由Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。
CAS协议至少涉及三方:
客户端Web浏览器
应用资源,请求身份验证的Web应用程序
CAS服务器,如赛赋IDaaS
2.主要特征
多种的协议的支持,包括CAS (v1、v2、v3)、SAML(v1、v2)、OAuth、OpenID、OpenID Connect和WS-Federation Passive Requestor
多种认证机制,可以通过JAAS,LDAP,RDBMS,X.509,Radius,SPNEGO,JWT,Remote,Trusted,BASIC,Apache Shiro,MongoDB,Pac4J等进行身份验证
可以通过WS-FED,Facebook,Twitter,SAML IdP,OpenID,OpenID Connect,CAS等代理委派认证
多种形式的授权包括ABAC, Time/Date, REST, Internet2’s Grouper等
同时也支持HAZELCAST、EHCache、JPA、MycCache、Apache IGITE、MangGDB、ReDIS、DimoDoB、Couchbase等实现高可用多个集群部署
各种丰富的客户端,像常见的Java、Python、Node、PHP、C#、Perl等等
3.设计流程
向第三方提供基于CAS协议的单点登录认证接入的方式,认证成功之后跳转到第三方提供的应用内部。
设计流程如下:
4.CAS服务端相关接口说明
以下是赛赋IDaaS中的CAS服务接口说明,该接口完全符合CAS协议标准。
4.1 跳转认证接口
接口说明
第三方跳转认证接口,该接口会判断该应用是否登录,如果登录直接重定向到接收ticket(第三方应用获取应用信息的凭)的接口,如果未登录则将用户重定向到登录界面进行登录认证。
接口调用
(接口地址以最终提供的址为准)
接口方法:GET
请求参数类型:键值对
响应参数:无
请求参数说明
参数必选类型长度说明
service是String-第三方应用接收ticket的地址
返回参数
无
接口调用示例
响应:
重定向到登录页或重定向到第三方应用接收ticket地址
4.2 获取第三方账号信息
接口功能
第三方应用根据ticket获取第三方应用账号的权限信息,如果应用已认证返回应用的账号信息,如果未认证 返回第三方应用认证失败信息。
接口调用
接口方法:GET
请求参数类型:键值对
Content-type:text/html; charset=UTF-8
响应正文:ticket校验失败的响应正文
ticket xxx is null" +
Ticket校验成功返回应用的权限信息的响应正文
12131212
b69ed2d8190b42a58404946ab5107b87
张三
1212313213213
13888888888
总经理办公室
http://cipherchina.com/赛赋科技/总经理办公室
XML返回值属性解释:user用户子账号
uuid赛赋账号的唯一标识,根据uuid获取应用列表
userName 姓名
jonNo 工号
email 邮箱
phone 手机
job 职位
groups 部门
请求参数说明
参数必选类型长度说明
ticket是String-用来换取应用账号信息的票据
返回参数
无
调用示例:
请求:
响应:
以cas标准格式响应应用的账号信息
4.3 单点登出接口
接口说明
第三方单点登录登出接口,该接口会注销该应用在cas服务端的会话信息并且重定向到浏览器第一次输入地址的页面
接口调用
接口方法:GET
请求参数类型:form表单类型
响应参数:无
请求参数说明
参数必选类型长度说明
返回参数
302
接口调用示例
响应:
重定向到浏览器第一次输入的地址,cas-server将其重定向到认证界面。
5.应用的CAS接口实现方法
若应用不支持CAS协议,则需按参照以下功能开发实现CAS客户端
5.1认证跳转地址
接口功能:
当浏览器输入第三方应用的地址时,第三方应携带第三方应用接收ticket的地址重定向到认证中心。
接口:第三方提供
接口方法:GET
请求参数:
无
返回参数:
无
调用示例
参数:无
5.2 认证成功返回ticket接口
接口功能:
认证中心认证成功签发ticket票据返回给第三方应用,第三方应用根据得到的票据获取第三方应用的账号信息。然后根据权限信息进入第三方应用内部。
接口调用:
接口:第三方提供
接口方法:GET
请求参数说明:
参数必选类型长度说明
ticket是String 应用换取应用权限信息的票据
返回参数:无
调用示例:
请求:http://xxx.xxx.xx:/xx/xx?ticket=xxxxxxx
响应:无
6. 相关实现
赛赋IDaaS git项目
产品技术交流
公众号