基于CAS实现SSO单点登录

简介: 基于CAS实现SSO单点登录

1. 概述


1.1. 什么是SSO?


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


1.2. 什么是CAS?


随着SSO技术的流行,相关产品也比较多,其中CAS就是一套解决方案,CAS(Central Authentication Service)中文翻译为统一身份认证服务或中央身份服务,它由服务端和客户端组成,实现SSO,并且容易进行企业应用的集成。


CAS是Yale大学(耶鲁)发起的一个开源项目,旨在为web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目。


官网:https://www.apereo.org/projects/cas


image.png



CAS具有以下的特点:


  • 开源的企业级单点登录解决方案


  • CAS Server为需要独立部署的web应用


  • CAS Client支持非常多的客户端(这里指单点登录系统中的各个web应用),包括 Java、.Net 、ISAPI、Php、Perl、uPortal、Acegi、Ruby、VBScript等客户端


有了CAS,我们的系统架构就演变成下面这样的:


image.png


从架构上可以看出,CAS包含两个部分:CAS Server和CAS Client.


  • CAS Server需要独立部署,主要负责对用户的认证工作,CAS Client负责处理


  • 对客户端受保护资源的访问请求,需要登录,重定向到CAS Server。


下面,我们一步步搭建CAS实现SSO.


1.3. 开发环境要求


Jdk1.8+ maven3.6 idea tomcat9.0+ windows10


2. CAS Server服务器端


2.1. CAS服务器端软件包下载


  • 下载版本为5.3


下载服务器的overlay地址: https://github.com/apereo/cas-overlay-template/tree/5.3


压缩包:cas-overlay-template-5.3.zip


解压好后用命令:build.cmd package


然后用编译的目录查看war包:


image.png


2.2. 服务器端的基本部署和测试


将war包放到tomcat的webapp中,然后启动tomcat

访问地址:http://localhost:8080/cas 或者 http://localhost:8080/cas/login


image.png


默认用户名和密码在\webapps\cas\WEB-INF\classes\application.properties里面 用户名:casuser 密码:Mellon


image.png


2.3. CAS Server服务器配置


2.3.1 去除https认证


CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的机构申请和购买)。如果对安全要求不高或是在开发测试阶段,可使用HTTP协议。我们这里讲解通过修改配置,让CAS使用HTTP协议。


修改CAS服务端配置文件:


\cas\WEB-INF\classes\application.properties里添加如下内容:


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


\cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json修改内容如下:


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


3. CAS Client客户端配置(自己项目)


Pom文件的依赖即pom.xml


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


application.yml配置文件


客户端1


server:
  port: 9010
cas:
  server-url-prefix: http://localhost:8080/cas
  server-login-url: http://localhost:8080/cas/login
  client-host-url: http://localhost:9010
  validation-type: cas3


注:启动类追加开启CAS的注解@EnableCasClient


项目中新建一个测试类


iimport io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(description = "SSO-CAS的测试")
public class TestController {
    @GetMapping("/test1")
    public String test1(){
        return "test1....";
    }
}


客户端2


server:
  port: 9011
cas:
  server-url-prefix: http://localhost:8080/cas
  server-login-url: http://localhost:8080/cas/login
  client-host-url: http://localhost:9011
  validation-type: cas3


注:启动类追加开启CAS的注解@EnableCasClient


项目中新建一个测试类


import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(description = "SSO-CAS的测试")
public class TestController {
    @GetMapping("/test2")
    public String test1(){
        return "test2....";
    }
}



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


1.首先启动tomcat服务器中的CAS Server。



2.分别启动客户端1和客户端2,然后在浏览器地址栏输入客户端1的地址http://localhost:9010/test1


image.png


在不登录的状态,在浏览器的地址栏继续输入客户端2的地址:http://localhost:9011/test2


image.png


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


image.png


我们再次在浏览器窗口重新输入客户端1,http://localhost:9010/test1,或者在刚刚输入客户端页面重新刷新,不用登录即可进入页面,如下图:



image.png


以上就是单点登录的测试。

相关文章
|
算法 Java 应用服务中间件
cas5.3:CAS Server搭建
cas5.3:CAS Server搭建
1606 0
|
关系型数据库 MySQL 数据库连接
cas5.3 → 连接mysql数据库
cas5.3 → 连接mysql数据库
393 0
|
应用服务中间件 nginx
|
SQL JSON 安全
Spring Authorization Server OAuth2授权服务器配置详解
Spring Authorization Server OAuth2授权服务器配置详解
4422 0
|
JSON 安全 算法
Spring Security系列教程27--Spring Security实现CAS单点登录--搭建CAS服务端
前言 在上一章节中,一一哥 给各位介绍了单点登录的概念、执行流程原理,并且给大家介绍了CAS单点登录解决方案,在CAS解决方案中,我们需要搭建CAS服务端和CAS客户端,本文就开始给大家介绍如何实现CAS服务端。在这里,我给大家介绍一个开源的CAS服务端模板cas-overlay-template,接下来请跟我一起看看怎么实现吧。 一. 搭建CAS服务器 1. 概述 为了测试我前面讲解的CAS请求执行流程,我们需要搭建一个CAS测试环境,本篇内容主要是带领大家搭建一个CAS Server服务端环境。搭建CAS Server环境,需要依赖如下环境: ● JDK1.8+ ● Maven3.6+
2228 0
|
缓存 自然语言处理 Java
详解FreeMarker Template:在Spring Boot中实现动态内容生成
详解FreeMarker Template:在Spring Boot中实现动态内容生成
2912 13
|
存储 安全 Java
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
1633 0
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
3635 1