【CAS Server】搭建

301 阅读3分钟

 前言

这次从CAS Server搭建到客户端集成中间还是踩了不少坑的,比如跨域携带cookie问题,自定义验证,单点登出。我将整个过程记录下来,来让后人少踩点坑

一、拉取5.3版本的CAS代码

我拉取的是5.3.16版本

GitHub项目网址

git clone https://github.com/apereo/cas-overlay-template.git

二、下载Tomcat

这里我使用的是Tomcat9

Tomcat9官网下载

​编辑

点击这里下载

然后随便放在D盘某个地方解压。

三、配置本地Https

因为http协议跨域无法携带Cookie,会导致后续接入客户端时,无限跳转登录不上,在这里需要本地搞个假https。
我偷个懒,大家可以搜相关的教程,关于怎么配置本地https的,我随便贴几个文章。
基于CAS实现单点登录(1):https的配置

cas5.3 https证书本地安装教程
建议过程中密钥密码都搞成changeit,防止一会要这个密码一会要那个密码搞乱掉。

四、启动CAS SERVER

再偷个懒,这个人写的很好。
从零开始搭建CAS

在后续对服务端进行定制化开发时,很多东西都是参考逆天壁虎的文章,包括自定义验证、Services配置等,可以看看这个作者写的CAS相关文章。
逆天壁虎主页

下面主要就是我在服务端踩的一些坑。

1、上面提到过,要么所有的服务在一个机器上,或者通过nginx代理到一个ip下,不然cas server就必须用https,只有https才能跨域携带cookie,我看有的文章是把登录成功的token放在路径里,我试了一下确实可行,但是安全性很低不建议。
我试过以下排列组合:
①cas用https域名+客户端用ip组合(前后端都在同一ip下)   √

②cas用ip+客户端ip组合 √

③cas用http域名+客户端http域名 ×

不知道cas用https域名+客户端http域名可以不,我感觉应该可以。
2、Services配置了如下之后

  "logoutType" : "BACK_CHANNEL",
  "logoutUrl" : "http://192.168.235.32:9050/TEST/",
  "attributeReleasePolicy": {
    "@class": "org.apereo.cas.services.ReturnAllAttributeReleasePolicy"
  },
  "accessStrategy" : {
    "@class" : "org.apereo.cas.services.DefaultRegisteredServiceAccessStrategy",
    "enabled" : true,
    "ssoEnabled" : true
  }

在B系统退出登录时,A系统会收到CAS携带着当初A系统登录成功用的临时票据信息并调用该URL,一定要加上attributeReleasePolicy和accessStrategy这两部分,我看有的教程里没有,甚至我去官方文档看也没有(5.3的官方文档已经删了,可以看6开头版本的),我也没加,导致一直获取不到票据信息,客户端登出过滤器一直不好用,都快调试自闭了。

下一个文章准备写前后端分离项目(Spring boot+vue)项目的cas集成,会多贴一些代码。

话说CAS的前端登录页也太难搞了吧,各位有没有外接登录页的解决方案给我参考一下,感谢。