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.hqwc.cn/news/63756.html

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

相关文章

ArcGIS在洪水灾害普查、风险评估及淹没制图中应用教程

详情点击链接&#xff1a;ArcGIS在洪水灾害普查、风险评估及淹没制图中应用教程 一&#xff1a;洪水普查技术规范 1.1 全国水旱灾害风险普查实施方案 1.2 洪水风险区划及防治区划编制技术要求 1.3 山丘区中小河流洪水淹没图编制技术要求 二&#xff1a;ArcGIS及数据管理 …

Java集合知识回顾:从分类到工具类,掌握精髓

文章目录 1. 集合的分类2. Collection 接口3. Map 接口4. 泛型5. Collections 工具类总结 在Java编程世界中&#xff0c;集合是一项极为重要的知识&#xff0c;为我们的程序设计提供了强大的数据结构和处理手段。在本篇文章中&#xff0c;我们将回顾集合的分类以及相关的重要概…

74HC595驱动7x11点阵屏(LED-7X11-JHM)DEMO

起因 由于我之前做了一个点阵时钟 &#xff0c;但是无奈LED点阵屏价格比较贵&#xff0c;所以想找一个价格较为便宜的点阵来做便宜一点的点阵方案&#xff0c;再淘宝上看到有那种五毛钱一个的7x11的LED点阵&#xff0c;所以就想着试试搞一下这种点阵屏&#xff0c;这个由于是7…

阻塞队列的安全实现,定时器的安全实现(面试易考),超详细

一、&#x1f49b; 如何实现一个线程安全的阻塞队列 目前&#xff0c;当前代码是循环队列&#xff08;还没有进行改动&#xff09; head和tail的判空判断满两种方法: 1.浪费一个格子&#xff0c;当前走到head的前一个位置&#xff0c;就认为队列满的 2.单独搞一个变量&#xff…

机器学习基础之《特征工程(4)—特征降维》

一、什么是特征降维 降维是指在某些限定条件下&#xff0c;降低随机变量&#xff08;特征&#xff09;个数&#xff0c;得到一组“不相关”主变量的过程 1、降维 降低维度 ndarry 维数&#xff1a;嵌套的层数 0维&#xff1a;标量&#xff0c;具体的数0 1 2 3... …

AAAI论文阅读

文章目录 Open-Vocabulary Multi-Label Classifcation via Multi-Modal Knowledge Transfer——知识蒸馏的范畴Med-EASi: Finely Annotated Dataset and Models for Controllable Simplifcation of Medical Texts——医学领域数据集构建“Nothing Abnormal”: Disambiguating M…

Unity游戏源码分享-植物大战僵尸素材与源码

Unity游戏源码分享-植物大战僵尸素材与源码 完整版本下载地址&#xff1a; https://download.csdn.net/download/Highning0007/88191862

配置Arduino+ESP32走过的巨坑

项目场景&#xff1a; 前几天去淘宝买了块ESP32拿来用&#xff0c;配置Arduino最新版ESP32 2.0.11走过的巨坑。 问题描述 先安装好了ArduinoIDE最新版&#xff08;教程里介绍去官网下&#xff09;&#xff0c;然后配置ESP32开发板&#xff0c;后面发现安装速度惊人。 去找加速…

C语言 ——函数指针变量

1、概念&#xff1a; 数组指针 - 是指针-是指向数组的指针&#xff0c;是存放数组地址的指针 函数指针 - 是指针 是指向函数的指针 - 是存放函数地址的指针!! 如上所示&#xff0c;函数也是具有地址的&#xff0c;而存放函数地址的指针变量成为函数指针变量。 而有如上所示&a…

用python来爬取某鱼的商品信息(1/2)

目录 前言 第一大难题——找到网站入口 曲线救国 模拟搜索 第二大难题——登录 提一嘴 登录cookie获取 第一种 第二种 第四大难题——无法使用导出的cookie 原因 解决办法 最后 出现小问题 总结 前言 本章讲理论&#xff0c;后面一节讲代码 拿来练练手的&#xff…

Maven的安装与配置(包含所有细节)

一、idea版本和maven配对 这里是很多新手都会遇到的大坑&#xff0c;一定要先将自己的idea版本和maven进行版本配配对。 Maven3.6.3版本兼容问题 注意&#xff1a;针对一些老项目 还是尽量采用 3.6.3版本&#xff0c;针对idea各个版本的兼容性就很兼容 IDEA 2022 兼容maven 3.8…

对于生产者消费者/shutdown/close的补充

信号量解决生产者消费者/读写者问题_右大臣的博客-CSDN博客 一点补充 模拟简单的string&#xff0c;循环队列&#xff0c;vector_右大臣的博客-CSDN博客 补充总结 写一个循环队列 用个循环队列去表示class myqueue{ vector<int>qq capacity 容量 front 头 rear 尾…