CAS单点登录原理及CAS v5.2.4环境搭建

转载 2018年04月17日 18:19:59

SSO 单点登录:

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。

CAS 认证服务中心
CAS(Central Authentication Service)单点登录,包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

下图是 CAS 最基本的协议过程:
这里写图片描述

SSO单点登录访问流程

1. 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。

2. 定向认证:SSO客户端会重定向用户请求到SSO服务器。

3. 用户认证:用户身份认证。

4. 发放票据:SSO服务器会产生一个随机的Service Ticket。

5. 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。

6. 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

通俗理解

Center:CAS 认证中心
A:某应用服务
B:另一个应用服务

Ticket Granted Ticket ( TGT ):全局票
Ticket Granted Cookie ( TGC ): 存放 TGT id 的 cookie
Service Ticket ( ST ):某个服务的票据

用户访问 A
A:登录了吗(cookie 中的 SessionId),没有,有票吗(ST),没有,那去 Center 吧(携带了的url,一会还得回来呢)
Center:有全局票吗(TGC 中的 TGT id,不是 SessionId),没有,那你登录吧。。。
Center:登录成功,创建TGT,并将 TGT 的 id 写到用户的 cookie(TGC)中,同时生成一个随机的 ST 让用户重定向到 A 的 url
A:登录了吗(cookie 中的 SessionId),没有,有票吗(ST),有,A去 Center 验证 ST 有效性,有效,创建 Session,并将 SessionId 写到用户 cookie 里,用户以后就用该 SessionId 与 A 进行通信

用户访问 B
B:登录了吗(cookie 中的 SessionId),没有,有票吗(ST),没有,那去 Center 吧(携带B的url,一会还得回来呢)
Center:有全局票吗(TGC 中的 TGT id,不是 SessionId),有
Center:生成一个随机的 ST 让用户重定向到 B 的 url
B:登录了吗(cookie 中的 SessionId),没有,有票吗(ST),有,B 去 Center 验证 ST 有效性,有效,创建 Session,并将 SessionId 写到用户 cookie 里,用户以后就用该 SessionId 与 B 进行通信

用户登出 A
A 删除Session 并清除用户的 Cookie 中的 SessionId
A 通知 Center 用户登出了
Center 删除 TGT 并清除用户的 TGC(存放 TGT id 的 cookie)
Center 通知所有该用户访问的应用
各个应用删除Session 并清除用户的 Cookie 中的 SessionId

实战演练 以CAS 5.2.4版本为例

证书 - https必备

生成证书

#生成证书保存到D盘的keystore
keytool -genkey -alias tomcat -keyalg RSA -keystore D:/keystore
#生成证书的时候,记住cas的域名必须保持一致

导出证书

#导出证书tomcat.cer,证书生成在 D盘
keytool -export -trustcacerts -alias tomcat -file D:/tomcat.cer -keystore D:/keystore

导入证书到jdk

keytool -import -trustcacerts -alias tomcat -file D:/tomcat.cer -keystore "C:/Program Files/Java/jdk1.8.0_162/jre/lib/security/cacerts"
# 输入密码报错   keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect
注意 这里不是证书的密码,而是jdk的默认保护密码 :changeit
#信任证书后报错  keytool 错误: java.io.FileNotFoundException: C:\Program Files\Java\jdk1.8.0_162\jre\lib\security\cacerts (拒绝访问。)
注意  这里需要以管理员的方式运行

查看证书

#查看jdk目录下的证书
keytool -list -v -keystore "C:/Program Files/Java/jdk1.8.0_162/jre/lib/security/cacerts"

编译war包

1、官网下载项目
https://github.com/apereo/cas-overlay-template

2、导入maven项目 到myeclipse

3、修改pom.xml
比如 cas版本修改为:<cas.version>5.2.x</cas.version>

离线下载cas-server-webapp-tomcat.war文件
https://oss.sonatype.org/content/repositories/releases/org/apereo/cas/cas-server-webapp-tomcat/

4、编译并查看war包

Run As -> maven install

生成的war包:target->cas.war

配置Tomcat

1、拷贝war包到tomcat的webapp目录

注意:tomcat版本低于8.0是启动不起来的

2、配置server.xml 这里配置为8443端口

<Connector port="8443" protocol="HTTP/1.1"  
               minSpareThreads="5" maxSpareThreads="75"    
               enableLookups="true" disableUploadTimeout="true"      
               acceptCount="100"  maxThreads="200"    
               scheme="https" secure="true" SSLEnabled="true"    
               clientAuth="false" sslProtocol="TLS"    
               keystoreFile="D:/keystore"      
               keystorePass="123456"/>

3、启动,并登录web验证

https://127.0.0.1:8443/cas/login

默认账号:casuser默认密码:Mellon 目前的配置仅有这一个用户
这里写图片描述

CAS服务端部署
https://segmentfault.com/a/1190000013844049
官方文档:https://apereo.github.io/cas/5.2.x/index.html
官方下载:https://github.com/apereo
cas war下载:https://oss.sonatype.org/content/repositories/releases/org/apereo/cas/cas-server-webapp-tomcat/

参考文章:
原理解析:https://www.cnblogs.com/lihuidu/p/6495247.html
原理和实现:https://blog.csdn.net/qq_24708791/article/details/78535565
cas系列:http://www.cnblogs.com/zzhuyongxin/tag/cas/
实战:https://blog.csdn.net/zzq900503/article/category/6692471
cas5.2实战:https://blog.csdn.net/yelllowcong/article/category/7347371

CAS单点登录环境搭建

一、开发环境 JDK1.7tomact7cas-server-3.4.6-releasecas-client-java-3.0.0-dist 二、创建证书 1、创建服务端证书   在e盘中新建key...
  • Hchengbowen
  • Hchengbowen
  • 2016-03-23 21:19:15
  • 429

单点登录之CAS原理和实现

1.开源单点登录系统CAS入门1.1 什么是单点登录单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录...
  • qq_24708791
  • qq_24708791
  • 2017-11-14 21:46:44
  • 725

CAS实现单点登录原理与实例解析

上几篇博客介绍了使用cookie实现同域和跨域系统的单点登录,本文将介绍通过CAS实现单点登录实例。 CAS是由耶鲁大学研发的单点登录服务器,主要分为服务端和客户端两个系统模块;本文将通过官网提供的实...
  • Daybreak1209
  • Daybreak1209
  • 2016-04-19 11:24:50
  • 2468

cas单点登录原理

环境篇     一、所需软件 Jdk:jdk1.6.0_13 Apache:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2 Tomcat:ap...
  • u012779758
  • u012779758
  • 2016-01-05 16:45:29
  • 809

CAS实现单点登录SSO执行原理探究(终于明白了)

一、不落俗套的开始1、背景介绍单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS框架:CAS(Central A...
  • javaloveiphone
  • javaloveiphone
  • 2016-09-05 13:56:01
  • 83466

CAS框架单点登录原理解析

单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS框架:CAS(Central Authentication S...
  • sjtu_chenchen
  • sjtu_chenchen
  • 2017-05-16 19:35:33
  • 2902

Yale CAS跨域单点登录实现原理及其基础协议[转]

CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用...
  • hongtaq
  • hongtaq
  • 2012-10-30 21:07:54
  • 2040

CAS单点登录登出原理

http://ttaale.iteye.com/blog/1166674 CAS单点登录原理 利用之前的角色及上面的用例,交互可以表示为如下步骤 1.用户访问application1,app...
  • test_test111
  • test_test111
  • 2013-08-27 09:47:59
  • 1660

CAS Server3.3.1(ZIP)

  • 2010年08月14日 00:47
  • 12.71MB
  • 下载

cas跨域单点登录原理

cas跨域单点登录原理
  • pucao_cug
  • pucao_cug
  • 2017-04-17 21:12:43
  • 3661
收藏助手
不良信息举报
您举报文章:CAS单点登录原理及CAS v5.2.4环境搭建
举报原因:
原因补充:

(最多只允许输入30个字)