CAS服务端入门使用实践

CAS服务端入门使用实践

一、前言

1.简介

CAS 是一个企业多语言单点登录解决方案,支持大量附加身份验证协议和功能,满足身份验证和授权需求的综合平台。

2.环境

  • Windows 10
  • JDK 1.8
  • git version 2.41.0.windows.3
  • Tomcat 9.0.78
  • Maven 3.5.3
  • cas-overlay-template-5.3

CAS Home:https://apereo.github.io/cas

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

REST-Protocol:https://apereo.github.io/cas/development/protocol/REST-Protocol.html

Tomcat 9:https://tomcat.apache.org/download-90.cgi

Anumbrella - CAS 专栏:https://blog.csdn.net/anumbrella/category_7765386.html

Shuyun123 - GitHub:https://github.com/Shuyun123/CAS

二、使用实践

1.编译项目

  • 下载项目:https://github.com/apereo/cas-overlay-template/tree/5.3
  • 解压 cas-overlay-template-5.3.zip
  • 进入文件夹 cas-overlay-template-5.3

第一种编译:

  • 使用 Git 命令窗口

  • 右击 - Open Git Bash here

./build.sh package

第二种编译:

  • CMD 窗口
build.cmd package
  • CAS 编译后的目录:cas-overlay-template-5.3\target\cas

2.部署项目

  • 下载 Tomcat 9:https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78.zip

  • 解压 Tomcat

  • 将 target 文件夹下的 cas 文件夹拷贝到 Tomcat 中:apache-tomcat-9.0.78\webapps

在这里插入图片描述

  • 注意:JDK 版本是1.8

  • 启动 Tomcat:双击 apache-tomcat-9.0.78\bin\startup.bat

  • 浏览器访问:http://127.0.0.1:8080/cas

  • 默认账号密码:casuser::Mellon

  • 默认账号密码配置文件:

    cas-overlay-template-5.3\target\cas\WEB-INF\classes\application.properties

在这里插入图片描述

3.配置HTTPS

  • 登录页面的黄色背景提示内容:
非安全连接
您当前正在通过非安全连接访问 CAS。单点登录不起作用。为了进行单点登录,您必须通过 HTTPS 登录。

1)生成密钥

  • JDK 的 bin 目录下执行

  • 记住密码,导出证书需要使用

  • 您的名字与姓氏是什么,填写域名,例如:test.org

keytool -genkey -alias mycacerts -keyalg RSA -keystore  D:/ssh-key/keycard

在这里插入图片描述

2)导出证书

  • JDK 的 bin 文件夹下执行
keytool -export -file D://ssh-key/keycard.crt -alias mycacerts -keystore D:/ssh-key/keycard

3)Tomcat配置HTTPS

  • 编辑 apache-tomcat-9.0.78\conf\server.xml

  • 新增 8443 端口的 HTTPS 配置

  • 修改具体的密钥路径和密钥库口令(与生成密钥时相同)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"maxParameterCount="1000"scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"keystoreFile="D:/ssh-key/keycard"   keystorePass="123456">
</Connector>

4)配置 hosts 文件

  • 编辑 C:\Windows\System32\drivers\etc\hosts
  • 与生成密钥时相同
127.0.0.1 test.org

5)测试

  • 关闭科学上网软件(无则忽略)

  • 浏览器访问:https://test.org:8443/cas

在这里插入图片描述

4.未认证授权的服务

  • 客户端跳转提示:
未认证授权的服务
CAS的服务记录是空的,没有定义服务。 希望通过CAS进行认证的应用程序必须在服务记录中明确定义。

(1)编辑 cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

  • 加入 http 的支持
{"@class" : "org.apereo.cas.services.RegexRegisteredService","serviceId" : "^(https|imaps|http)://.*","name" : "HTTPS and IMAPS","id" : 10000001,"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.","evaluationOrder" : 10000
}

(2)编辑 cas\WEB-INF\classes\application.properties

#是否开启json识别功能,默认为false
cas.serviceRegistry.initFromJson=true
#忽略https安全协议,使用 HTTP 协议
cas.tgc.secure=false

5.二次开发

1)登录认证方式

认证方式依赖包
白名单cas-server-support-generic
黑名单
JDBC 认证
Shiro 认证cas-server-support-shiro-authentication
Rest 认证cas-server-support-rest-authentication
自定义登录认证cas-server-core-authentication-api
cas-server-core-configuration-api

2)修改CAS服务端登录界面

(1)隐藏头部和底部

  • 编辑:cas\WEB-INF\classes\templates\layout.html
<body>
<!-- <div th:replace="fragments/header :: header"><a href="fragments/header.html">Header</a> fragment will go here
</div> --><main role="main" class="container mt-3 mb-3"><div layout:fragment="content" id="content">CAS content will go here</div>
</main><!-- <div th:replace="fragments/footer :: footer"><a href="fragments/footer.html">Footer</a> fragment will go here
</div> --><script th:replace="fragments/scripts"/>
</body>

(2)隐藏右侧 Links to CAS Resources

  • 编辑:cas\WEB-INF\classes\templates\casLoginView.html
<body class="login">
<main role="main" class="container mt-3 mb-3"><div layout:fragment="content" class="row"><div class="col-md"><div th:replace="fragments/loginform :: loginform"><a href="fragments/loginform.html">Login Form goeshere</a></div></div><div id="notices" class="col-md mt-3 mt-md-0"><!-- <div th:replace="fragments/insecure :: insecure"><a href="fragments/insecure.html">insecure alert goeshere</a></div><div th:replace="fragments/defaultauthn :: staticAuthentication"><a href="fragments/defaultauthn.html">defaultAuthn</a>fragment</div><div th:replace="fragments/cookies :: cookiesDisabled"><a href="fragments/cookies.html">cookies</a> fragment</div><div th:replace="fragments/serviceui :: serviceUI"><a href="fragments/serviceui.html">service ui</a> fragment</div><div th:replace="fragments/loginProviders :: loginProviders"><a href="fragments/loginProviders.html">loginProviders</a>fragment</div><div th:replace="fragments/cas-resources-list :: cas-resource-list"><a href="fragments/cas-resources-list.html">cas-resource</a> list fragment</div> --></div></div>
</main>
</body>

(3)隐藏登录按钮下的提示

  • 编辑:cas\WEB-INF\classes\templates\fragments\loginform.html
<!-- <div th:replace="fragments/loginsidebar :: loginsidebar" /> -->

(4)登录界面左侧显示图片

  • 拷贝图片到文件夹:cas\WEB-INF\classes\static\images

  • 编辑:cas\WEB-INF\classes\static\css\cas.css

#notices {border-color: #008;color: #008;background-image: url(../images/login_img.png);
}

(5)更换浏览器标签页图标

  • 替换图片文件:cas\WEB-INF\classes\static\favicon.ico

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

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

相关文章

轻辙视觉引擎以多种AI算法工具,助力纺织行业断线检测智能识别

近年来&#xff0c;人工智能技术在各行各业的应用愈发广泛&#xff0c;机器视觉作为人工智能的重要分支&#xff0c;成为当下的研究热点。机器视觉技术的发展&#xff0c;大幅提升了工业、农业、医疗等领域的效率和精度。尤其在工业领域&#xff0c;随着智能制造的进一步发展&a…

stringstream常见用法

目录 构造函数 输出字符串 修改和清空字符串 利用 stringstream 去除字符串空格 利用stringstream去除指定的字符 stringstream 数据库 <sstream> 构造函数 创建一个对象&#xff0c;向对象输入字符串&#xff1a; string x"abcdefg";stringstream s…

Zookeeper与Kafka

Zookeeper与Kafka 一、Zookeeper 概述1.Zookeeper 定义2.Zookeeper 工作机制3.Zookeeper 特点4.Zookeeper 数据结构5.Zookeeper 应用场景6.Zookeeper 选举机制 二、部署 Zookeeper 集群1.准备 3 台服务器做 Zookeeper 集群2.安装 Zookeeper3.拷贝配置好的 Zookeeper 配置文件到…

【Java】 java | git | win系统重装会给开发环境带来哪些问题

一、概述 1、近期发现电脑用起来不丝滑了&#xff0c;文件夹操作卡顿&#xff0c;一阵操作还会蓝屏 2、不能忍&#xff0c;整理排查 二、电脑情况 1、CPU&#xff1a; I5-9400F 2.9GHz 6核 2、内存&#xff1a; 32G 3、固态&#xff1a;256G 4、机械&#xff1a;1T 5、盘符使用…

二叉树的讲解

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大家三连关注&…

详解C语言中的int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t

2023年8月8日&#xff0c;周二上午 目录 为什么会产生int8_t、uint8_t等这类数据类型int8_t、uint8_t等这类数据类型有什么用头文件int8_t、uint8_t等这类数据类型是怎么实现的 为什么会产生int8_t、uint8_t等这类数据类型 根本原因在于&#xff0c;C 语言标准只是规定了各个…

SQL | 汇总数据

9-汇总数据 9.1-聚集函数 在实际开发过程中&#xff0c;可能会遇到下面这些情况&#xff1a; 确定大于某个值的有多少行数据&#xff0c;比如游戏排行榜&#xff0c;查询玩家排行多少名。 获取表中某些行的和&#xff0c;比如双十一当天&#xff0c;某个用户总订单价格是多少…

学习篇之React Fiber概念及原理

什么是React Fibber&#xff1f; React Fiber 是 React 框架的一种底层架构&#xff0c;为了改进 React 的渲染引擎&#xff0c;使其更加高效、灵活和可扩展。 传统上&#xff0c;React 使用一种称为堆栈调和递归算法来处理虚拟 DOM 的更新&#xff0c;这种方法在大型应用或者…

最强自动化测试框架Playwright(7)- 使用cookie避免重复登录

playwright在称为浏览器上下文的隔离环境中执行测试。这种隔离模型提高了可重复性&#xff0c;并防止了级联测试失败。测试可以加载现有的经过身份验证的状态。这消除了在每次测试中进行身份验证的需要&#xff0c;并加快了测试执行速度。 每次测试前登录 以下示例登录到 Git…

谈谈什么是云计算?以及它的应用

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 ​编辑 一、什么是云计算 二、云计算的优势与劣势&#xff1f; 1、云计算的优势 ①提高资源利用率 ②提升效率 ③降低成本 2、云…

python编程基础与案例集锦,python编程入门经典

大家好&#xff0c;本文将围绕python编程基础与案例集锦展开说明&#xff0c;python编程入门与案例详解是一个很多人都想弄明白的事情&#xff0c;想搞清楚python入门程序例子需要先了解以下几个事情。 【程序1】 题目&#xff1a;输入一行字符&#xff0c;分别统计出其中英文字…

射频入门知识-混频器-1

5.4混频电路-视频_哔哩哔哩_bilibili ​​​​​​​

【算法题】螺旋矩阵II (求解n阶Z形矩阵)

一、问题的提出 n阶Z形矩阵的特点是按照之(Z)字形的方式排列元素。n阶Z形矩阵是指矩阵的大小为nn&#xff0c;其中n为正整数。 题目描述 一个 n 行 n 列的螺旋(Z形)矩阵如图1所示&#xff0c;观察并找出填数规律。 图1 7行7列和8行8列的螺旋(Z形)矩阵 现在给出矩阵大小 n&…

数据结构入门:栈

目录 前言 1. 栈 1.1栈的概念及结构 1.2 栈的实现 1.2.1 栈的定义 1.2.2 栈的初始化 1.2.3 入栈 1.2.4 出栈 1.2.5 栈的元素个数 1.2.6 栈顶数据 1.2.7 栈的判空 2.栈的应用 2.1 题目一&#xff1a;括号匹配 2.1.1 思路 2.1.2 分析 2.1.3 题解 总结 前言 无论你是计算机科学专…

用chatGPT从左右眼图片生成点云数据

左右眼图片 需求 需要将左右眼图像利用视差生成三维点云数据 先问问chatGPT相关知识 进一步问有没有现成的软件 chatGPT提到了OpenCV&#xff0c;我们让chatGPT用OpenCV写一个程序来做这个事情 当然&#xff0c;代码里面会有一些错误&#xff0c;chatGPT写的代码并不会做模…

【JavaEE进阶】Spring 更简单的读取和存储对象

文章目录 一. 存储Bean对象1. 配置扫描路径2. 添加注解存储 Bean 对象2.1 使用五大类注解存储Bean2.2 为什么要有五大类注解&#xff1f;2.3 有关获取Bean参数的命名规则 3. 使用方法注解储存 Bean 对象3.1 方法注解储存对象的用法3.2 Bean的重命名3.3 同⼀类型多个 Bean 报错 …

Spring Boot单元测试与Mybatis单表增删改查

目录 1. Spring Boot单元测试 1.1 什么是单元测试? 1.2 单元测试有哪些好处? 1.3 Spring Boot 单元测试使用 单元测试的实现步骤 1. 生成单元测试类 2. 添加单元测试代码 简单的断言说明 2. Mybatis 单表增删改查 2.1 单表查询 2.2 参数占位符 ${} 和 #{} ${} 和 …

学点Selenium玩点新鲜~,让分布式测试有更多玩法

前 言 我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具&#xff0c;而 Selenium Grid 是 Selenium 中的一大组件&#xff0c;通过它能够实现分布式测试&#xff0c;能够帮助团队简单快速在不同的环境中测试他们的 Web 应用。 分布式执行测试其实并不是一…

小米平板6Max14即将发布:自研G1 电池管理芯片,支持33W反向快充

明天晚上7点&#xff08;8 月 14 日&#xff09;&#xff0c;雷军将进行年度演讲&#xff0c;重点探讨“成长”主题。与此同时&#xff0c;小米将推出一系列全新产品&#xff0c;其中包括备受瞩目的小米MIX Fold 3折叠屏手机和小米平板6 Max 14。近期&#xff0c;小米官方一直在…

分布式搜索ElasticSearch-ES(一)

一、ElasticSearch介绍 ES是一款非常强大的开源搜索引擎&#xff0c;可以帮我们从海量的数据中快速找到我们需要的内容。 ElasticSearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack(ELK)&#xff0c;被广泛运用在日志数据分析&#xff0c;实时监控等领域。 …