13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

手把手教你入门 Spring Boot + CAS 单点登录

 1.什么是 CAS

CAS 全称叫做中央认证服务,英文是 Central Authentication Service。

创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为故城企业提供专业的网站设计制作、成都网站制作,故城网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

这是由耶鲁大学发起的一个开源项目,目的是帮助 Web 应用系统构建一种可靠的单点登录解决方案,从目前企业实际项目来看,CAS 还是非常受欢迎的一种单点登录解决方案。

1.1 CAS 架构

CAS 分为两部分:

我们来看 CAS 的官方给出的一个架构图:

可以看到,用户访问的是 CAS Clients,CAS Clients 和 CAS Server 之间的通信支持多种协议,CAS Server 处理具体的认证事宜,CAS Server 对数据源的支持也非常多样化。

CAS Client 支持的平台有:

CAS 支持的通信协议有:

从图中也可以看出 CAS 支持多种不同的认证机制,具体有:

...

1.2 三个概念

在 CAS 的整个登录过程中,有三个重要的概念,这里我先来和大家捋一捋。

2.CAS 登录流程

接下来我们通过一张官方给出的流程图来看下 CAS 登录过程是什么样子的!

这张图其实画的比较清楚了,我再用文字和大家解释下:

术语:应用1、应用2 分别表示被保护的应用。

在整个登录过程中,浏览器分别和 CAS Server、应用1、应用2 建立了会话,其中,和 CAS Server 建立的会话称之为全局会话,和应用1、应用2 建立的会话称之为局部会话;一旦局部会话成功建立,以后用户再去访问应用1、应用2 就不会经过 CAS Server 了。

3.CAS Server 搭建

说了这么多,来点实际的。

由于整个 CAS 单点登录做起来还比较麻烦,我们一步一步来,今天我先来教大家把 CAS Server 搭建起来。

3.1 版本选择

目前最新的 CAS Server 是 6.x,这个是基于 gradle 来构建的,考虑到很多小伙伴可能不熟悉 gradle 操作,因此这里我选择 5.3 的版本,该版本基于大家熟悉的 maven 来构建。

官方为我们提供了构建 CAS Server 的模版,地址是:https://github.com/apereo/cas-overlay-template。

我们在分支中选择 5.3 版本下载:

或者直接 clone 下来,然后切换到 5.3 这个分支也可以。这个应该就不用我教大家了吧,相信小伙伴们都能自己搞定。

3.2 HTTPS 证书

CAS Server 从版本 4 开始,要使用 HTTPS 通信,所以我们得提前准备 HTTPS 证书。公司里的项目的话,需要购买 HTTPS 证书,自己玩的话也可以从云服务厂商那里申请到免费的 HTTPS 证书。

现在我们在本地测试,直接利用 JDK 自带的 keytool 工具,自己生成一个 HTTPS 证书即可。

生成命令如下:

 
 
 
 
  1. keytool -genkey -alias casserver -keyalg RSA -keystore ./keystore 

证书在执行的时候,需要给一个密钥库口令,这个大家随意给出即可,但是给出了多少要自己记着。另外,在 What is your first and last name? 选项中,需要填入 CAS Server 的域名,这点切记:

如此之后,我们的 HTTPS 证书就有了,虽然这个证书不被各大厂商认可,但是自己做练习够用了。

3.3 配置并启动

接下来进行配置。

我们在下载的 cas-overlay-template 项目中,新建 src/main/resources 目录,并将 overlays/org.apereo.cas.cas-server-webapp-tomcat-5.3.14/WEB-INF/classes/application.properties 文件和刚刚生成的 keystore 文件拷贝进来:

然后修改 application.properties ,主要配置一下 keystore 的位置和密钥,如下:

 
 
 
 
  1. server.ssl.key-store=classpath:keystore 
  2. server.ssl.key-store-password=111111 
  3. server.ssl.key-password=111111 

配置完成后,在项目根目录下执行如下命令启动项目:

./build.sh bootrun

根据个人网速,第一次启动可能会非常漫长,耐心等待即可。

启动过程中,也可能会报错,但是不用管,如果看到 ready 图标,就表示启动成功了:

3.4 测试

启动成功后,浏览器输入 https://cas.javaboy.org:8443/cas/login 就可以进入登录页面了(注意是 https 哦):

默认的用户名是 casuser,密码是 Mellon,输入用户名密码就可以登录了。

默认的用户名/密码也可以在 application.properties 文件中修改,该文件的最后一行:

 
 
 
 
  1. cas.authn.accept.users=casuser::Mellon 

修改完后,重启项目即可生效。

4.小结

今天主要和小伙伴聊一下 CAS 的基本概念,然后我们顺手搭建一个 CAS Server 出来,感兴趣的小伙伴可以动手试一试哦~,下篇文章我们来看如何用 Spring Boot 开发 CAS 客户端~

本文转载自微信公众号「江南一点雨」,可以通过以下二维码关注。转载本文请联系江南一点雨公众号。


本文题目:手把手教你入门 Spring Boot + CAS 单点登录
文章地址:http://cdbrznjsb.com/article/dpggsed.html

其他资讯

让你的专属顾问为你服务