后退 返回首页

中国科学技术大学统一身份认证系统简介

因个人能力有限,本文档难免疏漏错误,勘误请联系 邮件

身份认证,就是判断一个用户是否合法的过程。所谓统一身份认证,就是指在信息化的工作体系中,为各应用系统提供用户统一身份认证和管理的系统。我校统一身份认证采用中央认证服务(Central Authentication Service,下文简称CAS),CAS的官方网站为 https://www.apereo.org/projects/cas

CAS是一套完整的统一身份认证解决方案。CAS包括对应的网络协议(CAS Protocol)、协议的实现(CAS Server)和与CAS服务交互的软件包(CAS Client) 。

考虑到学校的实际情况,以及二次开发的需求,我校 统一身份认证系统 遵循了 CAS Protocol 的相关规范,自主实现了CAS Server的逻辑。我们并未重新实现CAS Client,推荐使用官方的CAS Client接入服务。



更新日志 返回顶部

# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

##
[2019-06-21]
Finish this doc first time.

CAS简介及基本业务流程 返回顶部

CAS涉及至少三方:使用Web应用程序的用户浏览器端(User),接入CAS的Web应用程序(Web Server)和CAS服务器端(CAS Server)。下文简单描述CAS协议实现的过程。

从用户角度(User)来看,当客户端访问需要身份验证的Web应用程序时,Web应用程序会将其重定向到CAS服务器端(CAS Server)。 CAS通常通过检查数据库(例如Kerberos,LDAP或Active Directory)的用户名和密码来验证客户端的真实性,参考下图:

从Web应用程序(Web Server)的角度来看,当User浏览器端拿到票据后,Web应用程序(Web Server)将携带票据去CAS Server校验并获取用户信息:

需要注意的是,此时在Step4 用户端登录成功后,CAS Server会在在用户浏览器端(User)放置Cookie:TGC(Ticket Granting Cookie),该Cookie是用以单点登陆(Single-sign On,简称SSO) Session的键值(Session Key)。

从CAS服务器(CAS Server)的角度来看,除了响应User的登录请求外,还需要响应票据校验:

在完成上述基本流程的同时,使用Web应用程序的用户浏览器端(User),当他需要访问另外一个接入CAS的Web应用程序(Web Server)时,再次涉及到和CAS服务器端(CAS Server)进行身份认证时,将直接使用SSO Session来完成。也就是说,用户只有在与CAS服务器未建立SSO Session时需要提交有效的身份凭证(如username & password)用以建立SSO Session,在建立SSO Session之后,用户不再需要重复提交身份凭证。一般情况下,SSO Session除了会在设定的有效期结束后失效,也会随着浏览器关闭而失效

完整得时序图参考下图:



CAS协议 返回顶部

点击下载CAS协议官方文档(V5.2.x)的中文翻译版: CAS Protocol 3.0 Specification.docx

如需英文文档(V5.2.x),请访问官网 CAS-Protocol-Specification.html

文档详细介绍了每一项协议以及该协议的参数规范,以下介绍我校实现统一身份认证的协议以及相应描述。



校内Web应用程序对接统一身份认证系统流程 返回顶部



CAS Client下载 返回顶部

CAS官方提供了常见的Web应用程序用到的CAS Client,使用这些Clients,可以降低接入难度,提升接入效率。完整的CAS Clients可以 查看官网

我们建议在接入时选择最新的稳定版本CAS Client版本,以降低系统的安全风险。

更多非官方的CAS Client可以查看这里,但是他们可能已经过期或是不再维护了。



接入指南 返回顶部

下文将以php和Java为例,通过详细的配置来描述我校的统一身份认证登录接入过程。

TBC



在企业号内通过CAS获取用户信息 返回顶部

有关中国科学技术大学信息服务微信企业号(以下简称企业号)的介绍,可以 查看这里 。从用户角度来说,用户在关注微信企业号之后需要完成一次身份认证的过程(使用校内邮箱绑定将个人微信信息与校园身份绑定),完成认证之后,用户可以在企业号内查询个人在校内业务系统的数据。从应用/服务角度来说,可以通过企业号获取用户身份信息为用户提供服务。目前已经接入微信企业号的应用和服务包括财务系统、校园百科、个人信息、图书馆、公共信息和服务大厅等。

我校CAS系统与企业号用户身份信息是相通的。对于应用和服务来说,如果业务系统对接了CAS系统,并且业务本身对移动设备做了适配,可以直接通过CAS系统将业务部署在微信企业服务,为校内师生提供更加集中和便捷的服务。我们通过微信Oauth认证于CAS协同工作获取用户身份,以下通过时序图和一个Demo来演示这个过程。

时序图:

值得注意的是,对于接入的应用和服务,仅需要构造Oauth URL即可在微信内获取用户身份信息。

Oauth parameters description
https://open.weixin.qq.com/connect/oauth2/authorize appid 接入时联系管理员索取
redirect_url CAS链接,https://passport.ustc.edu.cn/login,需要urlencode
response_type 配置为'code'
scope 配置为'SCOPE'
agentid 接入时联系管理员索取
state 配置为'fromWeiXin-' + 服务/应用URL
其他 在所有参数后完成后url添加#wechat_redirect

演示:

TBC



日志查看 返回顶部

TBC



注意事项 返回顶部

TBC



常见问题 返回顶部

TBC