pandaAnthony:spring boot cas 服务端
项目中需要用到CAS做统一认证,在网上查询各种帖子,终于找到一篇非常好的;在参考了该贴的例子结合项目要求终于实现了spring boot下CAS的服务端搭建以及和spring security的客户端整合。github链接:https://github.com/X-rapido/CAS_SSO_Record。
这个系列有3篇文章:
- spring boot cas 服务端和spring security客户端搭建(一):主要介绍怎么用spring boot cas搭建https的服务端
- spring boot cas 服务端和spring security客户端搭建(二):主要介绍怎么用怎么结合数据库用cas提供的动态加密方式登录及相关配置
- spring boot cas 服务端和spring security客户端搭建(三):主要介绍怎么结合spring security客户端进行整合及http方式登录配置
CAS服务端搭建
CAS的官网:https://www.apereo.org/projects/cas
CAS的github官方网站:https://github.com/apereo
CAS服务端安装的官方文档:https://apereo.github.io/cas/5.3.x/installation/Maven-Overlay-Installation.html
服务端搭建要去github官网下载对应的包:
在https://github.com/apereo/cas-overlay-template 下发现最新的已经到jdk11了。。。
而且貌似只支持gradle,对于只会maven不想麻烦去学习gradle的只能换支持maven的版本了。
image.png
很幸运的是找的最近的5.3版本就支持maven,而且还是目前公司用的jdk1.8:
image.png
5.3版本,具体资料可参考https://apereo.github.io/cas/5.3.x/index.html
回到5.3的github,这样的工程结构是不是看起来很困惑,怎么连src都没有呢。简单地过下pom文件,和平常碰到的没什么太大区别,要注意的是pom里单独配置了repository:
image.png
这里需要注意的是本地的maven setting配置文件是否会有影响到需要去repository中配置的地址下载包,如果搭建了maven私服可以去通过添加代理的方式,如果是指向阿里云之类的镜像就需要看下是否配置的:
<mirroOf>*<mirroOf>
那么可以简单地在‘*’后加上!xxx(xxx表示repository的id)来避免无法下载包的情况(忽略我这里指向私服又配了!sonatype-releases,因为懒得去添加代理 了。。。):
image.png
然后运行mvn package看下打包生成什么:
image.png
实际上生成的还是war包,进入target目录查看详情:
image.png
然后进入war查看具体有些什么:
image.png
是不是发现了很熟悉的文件和文件夹,这不就是spring boot的结构吗。直接看最核心的application.properties:
image.png
是不是更加熟悉了,看到了服务的端口和地址,还有ssl的配置。既然是spring boot工程那么就可以直接创建src/main/resources文件夹了,将application.properties和ssl证书复制到resources下:
image.png
将配置文件的ssl配置修改下地址:
image.png
SSL证书生成非常重要,一定要搞对!
SSL证书生成非常重要,一定要搞对!
SSL证书生成非常重要,一定要搞对!
重要的SSL证书生成
证书生成的过程这里就不说了,参考https://github.com/X-rapido/CAS_SSO_Record/blob/master/SSL%E8%AF%81%E4%B9%A6%E7%94%9F%E6%88%90.md;切记一定要按文档的步骤做完(删除不用做,除非你有需要)。
到这里最简单的CAS服务端配置就完成了,默认用静态用户名登录,可以在application.properties中找到:
image.png
最后在工程根目录运行build run,当看到ready时,表示启动成功:
image.png
在浏览器输入 https://cas.server.com:8443/cas/login (参考ssl配置同时进行域名映射cas.server.com,这是配对的,如果ssl的域名改了访问的地址也要响应调整),可以看到登录界面:
用默认账号casuser,密码Mellon登录:
image.png
先到这里了,后续再加上数据库验证的方法及与spring security客户端整合。