您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

SSO的单点登录技术CAS

时间:2021-08-10 10:52:39  来源:  作者:龙哥2020

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具有以下的特点:

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

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

【3】 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-INFclasses application.properties里添加如下内容:

cas.tgc.secure=false

cas.serviceRegistry.initFromJson=true

casWEB-INFclassesservices目录下的


HTTPSandIMAPS-10000001.json修改内容如下:

修改内容如下,即添加http

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

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

n Pom文件的依赖即pom.xml

<dependency>

<groupId>net.unicon.cas</groupId>

<artifactId>cas-client-autoconfig-support</artifactId>

<version>2.1.0-GA</version>

</dependency>

 

n 客户端1

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....";

    }

}

 

n 客户端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,或者在刚刚输入客户端页面重新刷新,不用登录即可进入页面,如下图:

 

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



Tags:SSO   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  Tags: SSO  点击:(8)  评论:(0)  加入收藏
1. 概述1.1. 什么是SSO?单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一次 就可以访问...【详细内容】
2021-08-10  Tags: SSO  点击:(80)  评论:(0)  加入收藏
授权和认证是每个项目中不可或缺的一部分,脆弱的授权、认证流程会在恶意攻击中不堪一击,会在项目运行过程中无法承受高流量的冲击。在这个环节中,OAuth 认证、SSO 单点登录、CA...【详细内容】
2021-05-26  Tags: SSO  点击:(252)  评论:(0)  加入收藏
通过前面几篇文章我们详细的介绍了SpringSecurity的使用,本文我们来看下,结合JWT来实现单点登录操作。一、什么是单点登陆&emsp;&emsp;单点登录(Single Sign On),简称为 SSO,是目...【详细内容】
2020-12-14  Tags: SSO  点击:(16880)  评论:(0)  加入收藏
写这篇的时候,相信有很多朋友还在用Jedis作为Redis的客户端,我不禁有很多问号,Jedis还香吗?如果你早些年说它香我信,但是都2020年了,它真的不那么香了。那为什么还继续使用它呢?大...【详细内容】
2020-10-12  Tags: SSO  点击:(136)  评论:(0)  加入收藏
Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官网地址:https://redisson.org/redisson git项目地址:https://githu...【详细内容】
2019-11-11  Tags: SSO  点击:(522)  评论:(0)  加入收藏
Jansson概述Jansson是一个C语言库,用于编码,解码和处理JSON数据。其主要特点和设计原则是: 简单直观的API和数据模型 全面的文档 不依赖其他库 完全支持Unicode(UTF-8) 广泛的测...【详细内容】
2019-10-24  Tags: SSO  点击:(165)  评论:(0)  加入收藏
本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失,然后介绍了线性回归中常用的两种范数来解决过拟合和矩阵...【详细内容】
2019-10-14  Tags: SSO  点击:(126)  评论:(0)  加入收藏
前言关于nacos客户端如何获取到服务端的配置信息的主流程源码分析和客户端拉取服务端变更的主流程源码分析在前两篇文章都分析过了,虽然读的人并不是很多,加起来也没有200个人...【详细内容】
2019-10-10  Tags: SSO  点击:(408)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(3)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(8)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(20)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(16)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(16)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条