CAS5.3单点登录服务端搭建与整合springboot

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

使用cas框架实现单点登陆
有多个不同服务器的web层需要登陆。就要使用cas。在一个web层页面登录,其他页面都不需要登录就能访问
www.taobao.com car.taobao.com。 只需要在登陆中心(cas服务端)登录一次就能访问全部不同服务器的页面

image.png

CAS
是开源的企业级单点登陆解决方案
CAS Server是独立部署的web应用,下载下来用包war复制到tomcat启动,CAS项目中配置文件设置了tomcat的端口是8080。自行修改,默认是Https协议,开发时要关闭Https认证协议


image.png

CAS Client(自己的web项目)支持非常多的客户端(这里指单点登录系统中的各个Web应用),包括Java,PHP等

CAS包含两个部分:CAS Server和CAS Client,
CAS Server需要独立部署,主要负责对用户的认证工作;
CAS Client负责处理对客户端受保护资源的访问请求,需要登陆时,重定向到CAS Server

第四步会其实会经过浏览器再跳转到CAS Client

SSO单点登录访问流程:
1.访问服务:SSO客户端发送请求访问应用系统提供的服务资源
2.定向认证:SSO客户端会重定向用户请求到SSO服务器
3.用户认证:用户身份认证
4.发放票据:SSO服务器会产生一个随机的Service Ticket
5.验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务
6.传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端

搭建CSA服务器

Cas服务端其实就是一个war包,
到官方下载https://www.apereo.org/projects/cas/download-cas,这里下载的是war包,但是是2016年的4.x版本,
上面网址给需要直接下载war的人用

我们想找较新的版本,但是新版本已经不提供war,需要自己来打成war包,这里下载5.x的新版本
https://github.com/apereo/cas-overlay-template下载5.3分支

image.png

解压后进行目录,build一下项目 ,过程有点慢,耐心等待

image.png

image.png

image.png

多了一个target文件夹
image.png

点入文件夹
image.png

把cas.war放到tomcat的webapp中,启动tomcat
访问http://localhost:8080/cas
image.png

启动成功
image.png

默认用户名和密码cas\WEB-INF\classes\application.properties
image.png

用户名:casuser 密码:Mellon

image.png

CAS服务端启动成功

去除https认证
CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的机构申请和购买) 。如果对安全要求不高或是在开发测试阶段,可使用HTTP协议。我们这里讲解通过修改配置,让CAS使用HTTP协议。

如果不去除https认证下面整合客户端时会出现未认证授权的服务

image.png

修改CAS服务端配置文件
cas\WEB-INF\classes目录的application,properties添加如下的内容
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json
修改内容如下,即添加http
"serviceId" : "^(https|http|imaps)://.*",

CAS客户端配置(就是自己项目)

pom.xml依赖

<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>2.1.0-GA</version>
</dependency>

application.properties配置文件
客户端1
server.port=8088
#cas服务端的地址
cas.server-url-prefix=http://localhost:8080/cas
#cas服务端的登录地址
cas.server-login-url=http://localhost:8080/cas/login
#当前服务器的地址(客户端)
cas.client-host-url=http://localhost:8088
#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3

每个客户端只要修改当前服务器地址就行了
如客户端2
server.port=8090
#cas服务端的地址
cas.server-url-prefix=http://localhost:8080/cas
#cas服务端的登录地址
cas.server-login-url=http://localhost:8080/cas/login
#当前服务器的地址(客户端)
cas.client-host-url=http://localhost:8090
#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
cas.validation-type=CAS3

配置完成
没有登陆时http://localhost:8088http://localhost:8090访问都会跳到CAS 登陆页
只要客户端1登陆了,登陆端2就能直接访问,反之也能访问

上面是通过CAS默认的用户名和密码进行登录的,实际项目中我们的用户名和密码肯定是从数据库中获取到的
官方文档https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html
接下来我们就看一下怎么通过获取数据库的用户进行验证
配置CAS服务端
G:\google下载\cas-overlay-template-5.3的pox.xml来打开项目
pom.xml文件加上依赖
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc-drivers</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
cmd进入命令 mvn clean package命令的时候会重新生成一个war包
把war放到tomcat中解压
cas\WEB-INF\classes目录的application.properties
首先注释掉默认的用户#cas.authn.accept.users=casuser::Mellon
添加如下的内容
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=utf-8&useSSL=true
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=a1234567
cas.authn.jdbc.query[0].sql=select * from user where username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

需要加上之前去掉https的配置

**注意 mysql6.0以上版本配置有些不同 参考
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=utf-8&useSSL=true&autoReconnect=true&failOverReadOnly=false&autoReconnect=true&serverTimezone=UTC
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=a1234567
cas.authn.jdbc.query[0].sql=select * from user where username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容