基于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

CAS具有以下的特点:
- 开源的企业级单点登录解决方案
- CAS Server为需要独立部署的web应用
- CAS Client支持非常多的客户端(这里指单点登录系统中的各个web应用),包括 Java、.Net 、ISAPI、Php、Perl、uPortal、Acegi、Ruby、VBScript等客户端
有了CAS,我们的系统架构就演变成下面这样的:

从架构上可以看出,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包:

2.2. 服务器端的基本部署和测试
将war包放到tomcat的webapp中,然后启动tomcat
访问地址:http://localhost:8080/cas 或者 http://localhost:8080/cas/login

默认用户名和密码在webappscasWEB-INFclassesapplication.properties里面 用户名:casuser 密码:Mellon
CAS服务端启动成功
2.3. CAS Server服务器配置
2.3.1 去除https认证
CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的机构申请和购买)。如果对安全要求不高或是在开发测试阶段,可使用HTTP协议。我们这里讲解通过修改配置,让CAS使用HTTP协议。
修改CAS服务端配置文件:
casWEB-INFclassesapplication.properties里添加如下内容:
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
casWEB-INFclassesservices目录下的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
项目中新建一个测试类
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("/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

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

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

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

以上就是单点登录的测试。
基于CAS实现SSO单点登录的更多相关文章
- 基于CAS的SSO(单点登录)实例
第一步 部署CAS-Server(服务端) 1.从CAS官方网站(http://developer.jasig.org/cas/)下载最新版本的CAS-Server(当前最新版本cas-server- ...
- 基于CAS的SSO单点登录-实现ajax跨域访问的自动登录(也相当于超时重连)
先补课,以下网址可以把CAS环境搭起来. [JA-SIG CAS服务环境搭建]http://linliangyi2007.iteye.com/blog/165307 [JA-SIG CAS业务架构介绍 ...
- 一篇文章彻底弄懂CAS实现SSO单点登录原理
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web ...
- CAS实现SSO单点登录
环境 cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72 CAS Server 安装 点此进入 CAS 下载列表,选择下载 c ...
- 学习CAS实现SSO单点登录
学习CAS实现SSO单点登录 网上找了几篇比较详细的教程,在这记录一下: 原理: CAS实现SSO单点登录原理 教程: 1.CAS实现单点登录(SSO)经典完整教程 2.SSO之CAS单点登录实例演示 ...
- 前后端分离基于Oauth2的SSO单点登录怎样做?
一.说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼:本文主要介绍跨域间的 前后端分离 项目怎样实现单点登录,并且与 非前后端分离 的差 ...
- CAS实现SSO单点登录原理
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...
- CAS实现SSO单点登录原理(转)
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...
- 转 CAS实现SSO单点登录原理
原文链接 http://m.blog.csdn.net/hxpjava1/article/details/74019017 CAS 简介 1. 1.1. What is CAS ? CAS ( ...
随机推荐
- 整理一波Go工程化目录结构~
在Go语言领域遨游了几个月后,发现自己对Go语言相关的工程目录结构有些不了解,按照原来的习惯在Go工程中建立的目录结构显得比较奇怪,好的目录结构绝对是可以加强工程效率的,所以接下来会参考煎鱼.毛大等大 ...
- 基于C#的多边形冲突检测
之前在项目上碰到了一个多边形冲突检测的问题,经百度.bing.google,发现目前已有的方案,要么是场景覆盖不全,要么是通过第三方类库实现(而这些第三方类库几乎是无法逆向反编译的),而项目中禁止使用 ...
- 乘风破浪,下载安装体验Adobe XD流程,全新的引导和安装体验设计
简介 Adobe XD是一款适用于网站和应用程序等的快速且功能强大的UI/UX设计解决方案.可实现设计.线框.动画制作.原型创建.协作和共享等,功能一应俱全. https://www.adobe.co ...
- nginx服务跳转
1.什么是页面跳转 将URL信息做改变 将URI信息做改变 完成伪静态配置 2.实现页面跳转的方法 http://nginx.org/en/docs/http/ngx_http_rewrite_mod ...
- 7、openstack安装
1.openstack配置架构图: 2.主机设置: (1)两台主机名分别是controller和compute1: hostnamectl set-hostname controller hostna ...
- Java:Java中static关键字作用
static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static修饰的方法属于类方法,可以通过类名.方法名直接引用 ...
- mysql某建表语句
CREATE TABLE `product_info`( `product_id` VARCHAR(32) NOT NULL COMMENT '主键', `product_name` VARCHAR( ...
- 各种电子书、pdf
剑指offer第二版: 链接:https://pan.baidu.com/s/1ABn3p9wY_kiQUzDRefZUqA 提取码:d30v 网络是怎样连接的: 链接:https://pan. ...
- 「AGC020D」 Min Max Repetition
「AGC020D」 Min Max Repetition 传送门 首先这个东西的连续字符个数你可以二分.但事实上没有必要,这是可以直接算出来的. 即 \(k=\max\{\lceil\frac{A}{ ...
- DNS配置【正向解析】
DNS配置.正向解析 一.BIND域名服务基础 1)DNS的定义 2)域名结构 ...