CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录

  • 1.1 什么是单点登录
  • 1.2 什么是CAS
  • 1.3 CAS服务端部署
    • 1.template下载
  • 1.4 客户端搭建

1.1 什么是单点登录

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

我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。

1.2 什么是CAS

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

【1】开源的企业级单点登录解决方案。

【2】CAS Server 为需要独立部署的 Web 应用。

【3】CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。下图是 CAS 最基本的协议过程:

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

SSO单点登录访问流程主要有以下步骤:

  1. 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。

  2. 定向认证:SSO客户端会重定向用户请求到SSO服务器。

  3. 用户认证:用户身份认证。

  4. 发放票据:SSO服务器会产生一个随机的Service Ticket。

  5. 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。

  6. 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

1.3 CAS服务端部署

1.template下载

下载CAS 模板 Overlay Template,我这里使用 Apereo CAS 5.3.x 版本,JDK需要1.8+

地址:https://github.com/apereo/cas-overlay-template/tree/5.3

  1. 解压下载的zip压缩包

  2. 解压后使用maven命令打包

mvn package
  1. 把target下生成的war包重命名为cas.war放到tomcat下
  2. 启动tomcat
  3. 找到解压的文件

由于CAS默认使用的是基于https协议,需要改为兼容使用http协议
到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes(这是我的目录,去你对应目录下找,不要找错啊,实在不行用everything搜索吧)目录的application,properties添加如下的内容:

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json
修改内容如下,即添加http

"serviceId" : "^(https|http|imaps)://.*",

兼容http修改完毕,由于https协议默认使用的端口为8443,我们修改为tomcat的8080端口
到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes目录的application,properties添加如下的内容

server.port=8080

由于默认的用户名和密码为casuser::Mellon不好记忆,
修改用户名和密码(根据需要修改成自己想要的)
到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes目录的application,properties的最后面修改密码为如下:

cas.authn.accept.users=yyh::123456

CAS服务器搭建完毕,重启tomcat 进行测试,在浏览器中输入http://localhost:8080/cas/login或者http://localhost:8080/cas,

即可跳转到cas服务登录界面,如下图:


输入账号和密码,即可登入,如下图:

在浏览器输入http://localhost:8080/cas/logout即可退出服务,如下图:

1.4 客户端搭建

接下来搭建springboot项目的客户端1

在新建的springboot项目的pom.xml添加如下依赖(匹配对应的版本)

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

在resources下新建application.properties(或者application.yml)

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

如果新建的是application.yml

server:port: 8088
cas:server-url-prefix: http://localhost:8080/casserver-login-url: http://localhost:8080/cas/loginclient-host-url: http://localhost:8088validation-type: cas3

在java下新建一个com.learn包,在包下新建一个Application 类,代码如下:

import net.unicon.cas.client.configuration.EnableCasClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;#启动CAS @EnableCasClient
@EnableCasClient
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

在新建一个测试类CasTest1,代码如下:

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@EnableAutoConfiguration
public class CasTest1 {@RequestMapping("/test1")public String test1(){return "test1....";}
}

接下来搭建springboot项目的客户端2

方式同理,不同的是在resources下新建application.properties(或者application.yml)的server.port的端口号进行修改,如下:

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

客户端1,客户端2和cas服务器搭建好之后,接下来我们进行测试:

  1. 首先启动上面步骤中放置了cas的tomca服务器,进入D:\software\apache-tomcat-8.5.43\bin目录下,找到startup.bat,双击,即可启动。

  2. 启动客户端1和客户端2,在浏览器中输入http://localhost:8088/test1

即跳转到cas登录验证界面,如下图:

在不登录的情况下,在浏览器另一窗口输入客户端2,即在浏览器中输入http://localhost:8090/test2

同样,进入到了cas登录验证界面,如下图:

当我们在其中一个登录界面登录账号后(假设登录客户端2)就会跳转到登陆后的界面,如下图:

我们再次在浏览器窗口重新输入客户端1,http://localhost:8088/test1,或者在刚刚输入客户端页面重新刷新

不用登录即可进入页面,如下图:


至此,整个单点登录的测试就结束。

我的博客园:https://www.cnblogs.com/whu-2017/p/11297447.html

CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录相关推荐

  1. CAS5.3服务器搭建及SpringBoot整合CAS解决分布式系统安全

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

  2. SpringBoot整合Keycloak实现单点登录

    Keycloak是一个开源的身份和权限访问管理工具,轻松为应用程序和安全服务添加身份验证,无需处理储存用户或者验证用户,其提供用户联合.强健的身份验证.用户管理和细粒度授权等功能. 1. 搭建Keyc ...

  3. springboot+shiro+cas实现单点登录之shiro端搭建

    github:https://github.com/peterowang/shiro-cas 本文如有配置问题,请查看之前的springboot集成shiro的文章 1.配置ehcache缓存,在re ...

  4. SpringSecurity3整合CAS实现单点登录

    SpringSecurity本身已经做好了与CAS的集成工作,只需要我们做简单配置就可以了 步骤1 spring-cas.xml配置文件内容如下(完整版) <?xml version=" ...

  5. SpringBoot整合微信扫码登录

    SpringBoot整合微信扫码登录 准备工作 基本思路流程 搭建SpringBoot 引入依赖 加入配置文件 代码实现 工具类 controller层 结果 准备工作 1.登录官网了解到,学习者想本 ...

  6. CAS SSO 单点登录 【完整版】

    什么是单点登录?什么是SSO? SSO就是单点登录!!! SSO即Single Sign On. 可是为什么我们要单点登录呢?为什么不能把所有的系统做成一个war包里呢? 道理很简单啊,如果这个银行这 ...

  7. java php 单点登陆,cas实现单点登录,登出(java跟php客户端)(转)

    cas实现单点登录,登出(java跟php客户端)(转)cas实现单点登录,登出(java和php客户端) (转) 最近项目中需要做单点登录,客户端包含java和php,java有几个应用程序,php ...

  8. Java架构-CAS SSO单点登录框架介绍

    1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: User(多个) Web 应用(多个) SSO ...

  9. cas jwt 单点登录

    单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...

最新文章

  1. JQuery 动态创建表单,并自动提交
  2. bzoj1131[POI2008]Sta*
  3. leetcode 10、Regular Expression Matching
  4. MULE ESB功能介绍
  5. Spring Boot + Shiro 集成
  6. 整数序列(牛客,线段树)
  7. 小白系列之51单片机的入门速成法
  8. 前端学习(3316):connect
  9. 早晚我要把它们都干掉!!!!!!!
  10. LayaAir HttpRequest 网络访问
  11. FPGA——1位全加器的实现
  12. ajax submit 文件上传,ajaxSubmit 文件上传
  13. WPS技巧之稻壳模板掌握结构全面信息
  14. java 加密 —— 对称加密、非对称加密、消息摘要
  15. app登录策略实现(短信+一键登录+微信+微信小程序+抖音+抖音小程序)
  16. 打开注册表regedit
  17. 文献管理工具之Zotero:如何在Zotero中设置webdav连接到坚果云?
  18. 腾讯「文涌 (Effidit)」2.0版发布,打造更懂写作的智能助手
  19. 《宣龙教育》加密网课视频下载
  20. 主键的特点和三种创建方式

热门文章

  1. 基于Linux系统的性能测试
  2. 如何给网站标题添加图标(favicon)
  3. android面试基础知识,小程序FMP优化实录,经典好文
  4. 计算机辅助药物筛选教程,药物筛选之计算机辅助药物设计
  5. 如何使用Python将语音转换为文本,你知道吗?
  6. RS232标准中的RTS与CTS
  7. QuartusII 13.0自带的Modelsim Altera 10.1d破解
  8. 【硬件】电容一端接电源,另一端接地,起什么作用,什么时候才会有这样的接法
  9. 微信小程序:调取数字键盘,没有小数点的解决办法
  10. flink-table-planner-blink