springboot集成cas客户端

Background

  • 单点登录SSO(Single Sign ON),指在多个应用系统中,只需登录一次,即可在多个应用系统之间共享登录。
  • 统一身份认证CAS(Central Authentication Service)是SSO的开源实现,利用CAS实现SSO可以很大程度的降低开发和维护的成本。
  • CAS由CAS Server和CAS Client两部分组成。
  • CAS三个重要术语:TGT(Ticket Granting Ticket)、TGC(Ticket Granting Cookie)和ST(Service Ticket)。

在这里插入图片描述

1、所用软件版本

软件名称版本
jdk1.8.0_202
maven3.6.3
cas5.3.16
  • maven下载地址:https://maven.apache.org/download.cgi
  • cas-overlay github地址:https://github.com/apereo/cas-overlay-template/tree/5.3
  • cas-overlay gitee地址:https://gitee.com/waisaa/cas-overlay-template

CAS项目托管在Github上,克隆或者下载源码,进行编译以后即可安装。但是对于一般用户来说,官方建议的安装方式是使用WAR Overlay方法来安装编译好的war包。WAR Overlay是一种对抗重复性的代码和资源的策略。它会下载一个由项目本身提供的预构建的普通CAS Web应用程序服务器,而不是下载CAS代码库并从源代码开始构建。WAR Overlay在构建时,构建安装工具首先会尝试下载官方提供的二进制安装包。然后,该工具将查找在同一项目目录中可用的配置文件和设置,并将它们合并到下载的工件中,以生成一个完整的Web存档(cas.war)。

2、cas-server安装

  • 生成的cas.war包在target目录下
  • 访问地址:https://localhost:8443/cas(localhost换成cas所在的服务器IP)
  • 默认用户名密码:casuser=Mellon
git clone -b 5.3 https://github.com/apereo/cas-overlay-template.git
mvn clean compile package
java -jar target/cas.war

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这样,中央身份认证服务就安装好了!

3、springboot集成cas-client

  • maven依赖
<dependency><groupId>net.unicon.cas</groupId><artifactId>cas-client-autoconfig-support</artifactId><version>2.3.0-GA</version>
</dependency>
  • yml配置
server:port: 8888servlet:context-path: /sso-client
cas:#后端服务地址client-host-url: http://127.0.0.1:8888#cas认证中心地址server-url-prefix: https://monkey:8443/cas_server#cas认证中心登录地址server-login-url: https://monkey:8443/cas_server/loginvalidation-type: cas
  • 启动类加上@EnableCasClient启用CAS
    在这里插入图片描述
  • 退出示例
package cas.client.sso.controller;import lombok.extern.slf4j.Slf4j;
import org.jasig.cas.client.authentication.AttributePrincipal;
import org.jasig.cas.client.util.AbstractCasFilter;
import org.jasig.cas.client.validation.Assertion;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;/*** @ClassName: TestController* @Description: TestController* @Author W* @Date 2020/12/23 17:32* @Version 1.0*/
@Slf4j
@Controller
public class TestController {@Value(value = "${cas.server-url-prefix}")private String serverUrlPrefix = "";@Value(value = "${cas.client-host-url}")private String clientHostUrl = "";// /sso-client/hello@GetMapping("/hello")@ResponseBodypublic String hello() {return "word";}@GetMapping("user")@ResponseBodypublic String user(HttpServletRequest request) {Assertion assertion = (Assertion) request.getSession().getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);String loginName = null;if (assertion != null) {AttributePrincipal principal = assertion.getPrincipal();loginName = principal.getName();log.info("访问者: {}", loginName);}return "访问者:" + loginName;}@RequestMapping("/logout")public String logout(HttpSession session) {session.invalidate();return "redirect:" + serverUrlPrefix + "/logout?service=" + clientHostUrl + "/sso-client/user";}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/233921.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TikTok时代的社交红利:用户生成内容的崛起

TikTok&#xff0c;这款短视频平台在全球范围内掀起了一场社交媒体的新浪潮。在这个数字化的时代&#xff0c;用户生成内容成为了社交平台的核心&#xff0c;而TikTok正是在这一潮流中崭露头角。本文将深入探讨TikTok时代的社交红利&#xff0c;聚焦用户生成内容的崛起&#xf…

服务器运行状况监控工具

服务器运行状况监视提供了每个服务器状态和性能的广泛概述&#xff0c;通过监控服务器指标&#xff0c;如 CPU 使用率、内存消耗、I/O、磁盘使用率、进程等&#xff0c;服务器运行状况监控可以避免服务器停机。 服务器性能监控指标 服务器是网络中最重要的组件之一&#xff0…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

构建免费的Dokan和WooCommerce构建线上课程市场在线销售数字课程

我们知道创建良好的学习说明和材料很困难。但当涉及到销售时&#xff0c;就变得更加困难。如果您无法出售您的课程&#xff0c;那么没有什么比这更令人沮丧的了。 幸运的是&#xff0c;如果您使用的是 WordPress 网站&#xff0c;那么您可以非常轻松且免费地完成此操作。借助L…

阿里云99元服务器赠送云·原生建站(电商版)

购买阿里云99元服务器赠送云原生建站&#xff08;电商版&#xff09;&#xff0c;什么是云原生建站&#xff1f;类似模板建站&#xff0c;云原生建站预置响应式模板CMS内容管理系统&#xff0c;用户可以按需随意切换模板样式&#xff0c;通过模板可视化在线编辑轻松完成网站搭建…

二进制部署

HOST HostnameIP地址flannedAPPmaster192.169.116.10ETCD\APIserver\Scheduler\Controller-Managernode1192.168.116.11172.17.28.0ETCD,Flanned,Kubelet,kube-proxynode2192.168.116.12172.17.26.0ETCD,Flanned,Kubelet,kube-proxy Kubernetes社区 Kubernetes文档 ETCD mas…

Spark内核解析-数据存储5(六)

1、Spark的数据存储 Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk&#xff0c;本文尝试分析Spark中存储子系统的构成&#xff0c;并以数据写入和数据读取为例&#xff0c;讲述清楚存储子系统中各部件的交互关系。 1.1存储子系统概览 …

【深度学习每日小知识】Data Augmentation 数据增强

数据增强是通过对原始数据进行各种转换和修改来人工生成附加数据的过程&#xff0c;旨在增加机器学习模型中训练数据的大小和多样性。这对于计算机视觉领域尤为重要&#xff0c;因为图像经常被用作输入数据。 计算机视觉中的数据增强 数据增强的主要目标是解决过拟合问题&…

juniper EX系列交换机COS配置

流分类、流量监管、流量整形、拥塞管理和拥塞避免是构造有区别地实施服务的基石&#xff0c;它们主要完成如下功能&#xff1a; 流分类&#xff1a;依据一定的匹配规则识别出对象。流分类是有区别地实施服务的前提。 流量监管&#xff1a;对进入设备的特定流量的规格进行监管…

Vue-4、单向数据绑定与双向数据绑定

1、单向数据绑定 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>数据绑定</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/…

【QML COOK】- 004-添加动画

1. 编辑main.qml import QtQuickWindow {width: 800height: 800visible: truetitle: qsTr("Hello World")Image {id: backgroudanchors.fill: parentsource: "qrc:/Resources/Images/arrow.png"Behavior on rotation {NumberAnimation {duration: 1000}}}…

如何用UE5 的小白人替换成自己的 metahumen 数字人

1、用QuixelBridge 插件导入制作好的metahumen数字人 2、创建项目时如有选择第三人称游戏&#xff0c;在内容目录中找到第三人称游戏小白人的蓝图类&#xff0c;对其进行复制一个&#xff0c;重命名&#xff0c;我这里命名为BP_METAHUMEN&#xff0c; 并移到Metahumen目录下方便…

前端常用的几种算法的特征、复杂度、分类及用法示例演示

算法&#xff08;Algorithm&#xff09;可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤&#xff0c;或者看成按照要求设计好的有限的确切的计算序列&#xff0c;并且这样的步骤和序列可以解决一类问题。算法代表着用系统的方法描述解决问题的策略机制&#xff0c…

Unity中URP下开启和使用深度图

文章目录 前言一、在Unity中打开URP下的深度图二、在Shader中开启深度图1、使用不透明渲染队列才可以使用深度图2、半透明渲染队列深度图就会关闭 三、URP深度图 和 BRP深度图的区别四、在Shader中&#xff0c;使用深度图1、定义纹理和采样器2、在片元着色器对深度图采样并且输…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(1)

文章目录 &#x1f3c6; 初识 Elasticsearch 应用知识&#x1f50e; 初识 Elasticsearch 应用知识(1)&#x1f341;&#x1f341; 01、什么是 Elasticsearch&#xff1f;&#x1f341;&#x1f341; 02、能列出 10 个使用 Elasticsearch 作为其搜索引擎或数据库的公司吗&#x…

IntelliJ IDEA远程查看修改Ubuntu上AOSP源码

IntelliJ IDEA远程查看修改Ubuntu上的源码 本人操作环境windows10,软件版本IntelliJ IDEA 2023.2.3&#xff0c;虚拟机Ubuntu 22.04.3 LTS 1、Ubuntu系统安装openssh 查看是否安装&#xff1a; ssh -V 如果未安装&#xff1a; sudo apt install openssh-server # 开机自启…

数据结构——队列(Queue)

目录 1.队列的介绍 2.队列工程 2.1 队列的定义 2.1.1 数组实现队列 2.1.2 单链表实现队列 2.2 队列的函数接口 2.2.1 队列的初始化 2.2.2 队列的数据插入&#xff08;入队&#xff09; 2.2.3 队列的数据删除&#xff08;出队&#xff09; 2.2.4 取队头数据 2.2.5 取队…

任务调度中心

可以服务器配置和权限&#xff0c;分配任务执行。当服务器下线后&#xff0c;任务会被在线服务器接管&#xff0c;当重新上线后会在次执行任务。接管任务的服务器会释放任务。调度过程的实现&#xff0c;可以二次开发。基于 netty tcp 通信开发。 下载地址&#xff1a; http:/…

CSS 发光输入框动画

<template><view class="content"><input placeholder="请输入..." class="input" /> </view> </template><script></script><style>/* 设置整个页面的背景颜色为 #212121 */body{background-c…

Java内存结构

参考资料&#xff1a; 《运行时数据区域》 《Java 内存管理》 《JVM 基础 - JVM 内存结构》 《Java内存区域详解》 前文&#xff1a; 《Java8之类的加载》 《Java8之类加载机制class源码分析》 写在开头&#xff1a;本文为学习后的总结&#xff0c;可能有不到位的地方&a…