单点登录_尚学堂CAS讲义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.SSO (Single Sign-on)原理
SSO 分为Web-SSO和桌面SSO。桌面SSO 体现在操作系统级别上。Web-SSO体现在客户端,主要特点是:SSO 应用之间使用Web 协议( 如HTTPS) ,并且只有一个登录入口。我们所讲的SSO,指Web SSO 。
SSO 的体系中,有下面三种角色:
✧User(多个)
✧Web应用(多个)
✧SSO认证中心(一个)
SSO 实现模式千奇百怪,但万变不离其宗,包含以下三个原则:
●所有的登录都在 SSO 认证中心进行。
●SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的
用户。
●SSO 认证中心和所有的 Web 应用建立一种信任关系。
二.CAS 的基本原理
CAS(Central Authentication Service) 是Yale 大学发起的构建Web SSO 的Java开源项目。
1.CAS 的结构体系
◆CAS Server
CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名/ 密码等凭证(Credentials) 。
◆CAS Client
CAS Client部署在客户端,当有对本地Web 应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到CAS Server 进行认证。
2.CAS 协议
基础协议
上图是一个基础的CAS 协议,CAS Client 以过滤器的方式保护Web 应用的受保护资源,过滤从客户端过来的每一个Web 请求,同时,CAS Client 会分析HTTP 请求中是否包请求Service Ticket( 上图中的Ticket) ,如果没有,则说明该用户是没有经过认证的,CAS Client 会重定向用户请求到CAS Server (Step 2 )。Step 3 是用户认证过程,如果用户提供了正确的认证信息,CAS Server 会产生一个随机的Service Ticket ,会向User 发送一个Ticket granting cookie (TGC) 给User 的浏览器,并且重定向用户到CAS Client (附带刚才产生的Service Ticket),Step 5 和Step6 是CAS Client 和CAS Server 之间完成了一个对用户的身份核实,用Ticket 查到Username ,认证通过。
3.CAS 如何实现SSO
当用户访问Helloservice2再次被重定向到CAS Server 的时候,CAS Server 会主动获到这个TGC cookie ,然后做下面的事情:
1)如果User 的持有TGC 且其还没失效,那么就走基础协议图的Step4 ,达到了
SSO 的效果。
2)如果TGC 失效,那么用户还是要重新认证( 走基础协议图的Step3) 。
三.实践配置
下面我们以tomcat 5.5 为例进行说明(这里,我将Server和Client同时放在了同一个Tomcat服务器下)。
软件环境:tomcat 5.5 ant-1.6.5, jdk1.5.0_06
下载cas-server-3.0.4.zip和cas-client和cas-server-jdbc-3.0.5-rc2.jar和mysql 5.0.16和tomcat 5.5.15
/downloads/cas/cas-server-3.0.4.zip
/tp/cas/cas-client-2.0.11.zip
/maven/cas/jars/cas-server-jdbc-3.0.5-rc2.jar
/
(一) 将一个或者一些页面进行支持HTTPS传输协议(意义:对某些页面进行了安全传输)
(重点掌握)
1. 产生SERVER的证书库文件
keytool -genkey -alias tomcat -keyalg RSA [-keystore keystore-file]
并将证书文件放在web容器的目录下。
2.(在server端)配置tomcat使用HTTPS
$CATALINA_HOME/conf/server.xml里
keystorePass="changeit" keystoreFile="\conf\.keystore" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> 注意:keystorePass="changeit"(这个问证书库文件的密码,也就是上面配置产生的一个密码)keystoreFile="/.keystore"(这是证书库文件的存放路径,其中根目录“/” 为tomcat的安装路径) 3. 在WEB-INF\web.xml文件中增加 解释:transport-guarantee元素指定了客户端和服务端的通信关系,有NONE,INTEGRAL,CONFIDENTIAL。NONE表示着应用不需要任何传输保障。INTEGRAL表示着在数据在客户端到服务端的过程中不能有任何改变。CONFIDENTIAL表示在传输过程中防止其他传输内容的干扰。在使用SSl时常用的就INTEGRAL或CONFIDENTIL。 4. 进行访问测试 (二) 实现CAS系统 1. 产生SERVER的证书库文件 keytool -genkey -alias tomcat -keyalg RSA [-keystore keystore-file]