CAS6.4 单点登录简单集成

全网最简单、最详细的CAS单点登录集成,你确定不来看看吗?

我有话要说

好的朋友们,今天咱们来玩一玩单点登录。
没接触过的朋友就会问了:“啊什么是单点登录呢?”
单点登录就是。。。emmm。。。我百度了一下,大概是这样的👇
在这里插入图片描述
好的嘛,看起来很简单嘛。表面意思就是我只要集成了这个单点登录,就可以只需登录一次,便能访问我整个微服务中的所有系统。
“哇塞,听起来很酷的样子,那么,怎样才能集成呢?”
咱们废话少说,速度开搞。

项目准备

主流的单点登录有CAS、OAuth、OpenID Connect、SAML,这次我们就玩一下CAS的单点登录。先干到CAS的GitHub去掠夺一下资源。
我们找到这个cas-overlay-template
在这里插入图片描述
这个地方有一个分支选择,点开这么多版本,选择恐惧症的玩家狂喜,但我们要玩肯定玩最新的,无脑6.4就完事儿了
在这里插入图片描述
然后点击这里的链接复制,或者直接下载zip包。那我们这里当场就是复制,回头让git命令来替我们下载(笔者老懒狗了)
在这里插入图片描述
我直接是用IDEA将工程拉下来,在构建的时候我发现:工程构建出错!
好家伙,我还啥都没干呢。正当我暴躁的时候,瞅了一眼报错信息,原来是我JDK版本不对,人家要Java 11。幸亏我早有准备(一个专业的开发,怎么可能只有一个JDK呢),我当场就是修改项目引用JDK
在这里插入图片描述
然后顺便修改了一下项目的Gradle JVM
在这里插入图片描述
保存之后重新构建
在这里插入图片描述
到这里,我们的准备工作就算完成了

CAS服务端配置

现在我们来搞服务端的配置,首先需要在配置文件中加入以下配置

# Application properties that need to be
# embedded within the web application can be included here

cas:
  server:
    # 配置单点登录服务器访问地址
    name: http://127.0.0.1:8443
    prefix: ${cas.server.name}/cas
  authn:
    accept:
      # 设置登录账号和密码,默认为 casuser::Mellon
      users: admin::admin
  service-registry:
    # 设置服务注册为json文件的方式
    init-from-json: true
    json:
      # 服务注册时读取的json文件的位置
      location: classpath:/services


server:
  ssl:
    # 关闭https访问,此处如果已经有了https证书,可以设为true
    enabled: false

因为我们选择的服务注册方式为JSON文件的方式,所以需要在Gradle中添加JSON注册方式的依赖

implementation "org.apereo.cas:cas-server-support-json-service-registry:${project.'cas.version'}"

大概在这个位置👇
在这里插入图片描述
接下来这一步非常关键,就是添加服务注册的JSON文件
根据我们在配置文件中配置的JSON文件读取地址,在resource目录下新建一个services文件夹,创建一个JSON文件,文件命名规则为:name + id, 如:Client-10001.json。内容如下

{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "^(http|imaps)://.*",
  "name" : "client",
  "id" : 10001,
  "bypassApprovalPrompt": false,
  "clientId": "20180901",
  "clientSecret": "123456"
}

这里的serviceId就是需要注册到单点登录服务的项目访问地址的正则表达式,地址不匹配的客户端将无法通过单点登录鉴权访问
现在我们通过Gradle的run命令启动服务
在这里插入图片描述
控制台打印如下,出现READY字样就表示启动成功。右下角表示加载服务注册的JSON文件个数
在这里插入图片描述

CAS客户端配置

CAS客户端的配置相对简单,我这里预先创建了两个演示的Spring Boot项目

在这里插入图片描述
在pom.xml文件中添加以下依赖

<!-- https://mvnrepository.com/artifact/net.unicon.cas/cas-client-autoconfig-support -->
<dependency>
    <groupId>net.unicon.cas</groupId>
    <artifactId>cas-client-autoconfig-support</artifactId>
    <version>2.1.0-GA</version>
</dependency>

之后分别在两个项目的配置文件中添加如下配置

# 配置 cas server 信息
cas:
  # cas服务端的地址
  serverUrlPrefix: http://127.0.0.1:8443/cas/
  # cas服务端的登录地址
  serverLoginUrl: http://127.0.0.1:8443/cas/login
  # 当前服务器的地址(客户端)
  clientHostUrl: http://127.0.0.1:8001
  # Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter
  validationType: CAS3

就像这个样子👇
在这里插入图片描述
然后进入启动类中,加上标识cas单点登录客户端的注解@EnableCasClient
在这里插入图片描述
最后我们写一个模拟接口测试一下是不是会跳转到CAS的登录页
在这里插入图片描述
分别启动两个CAS客户端,在浏览器中访问接口地址
可以看到,请求被重定向到了CAS的登录页面,接下来输入账号密码,登录一下看看会发生什么
在这里插入图片描述
这个地方我们发现,登录成功之后,会将凭证保存到cookie中,然后重定向回最开始请求的地址
在这里插入图片描述
最后,我们试试访问另外一个项目的接口地址,看看是不是真的不用再次登录了
在这里插入图片描述
好的,没有问题,当场就是自动登录成功,并访问接口请求地址。仔细看就会发现,其实还是会重定向到CAS的登录,只不过很快啊,啪的一下就完成登录了,接口拿到ticket之后立马又折回来了。在用户视角,就是一瞬间完成,妙哇~。

以上就是本次CAS单点登录的全部内容,如果伙伴们觉得不错,有帮助的话,不妨点个赞再走啊!

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值