前言

最近这几天在研究CAS 今天终于在本地部署成功了 今天写一篇文章记录下

原理简介

SSO单点登录

在多个相互信任的系统中,用户只需要登录一次就可以访问其他受信任的系统。

新浪微博与新浪博客是相互信任的应用系统。

  • 当用户首次访问新浪微博时,新浪微博识别到用户未登录,将请求重定向到认证中心,认证中心也识别到用户未登录,则将请求重定向到登录页。

  • 当用户已登录新浪微博访问新浪博客时,新浪博客识别到用户未登录,将请求重定向到认证中心,认证中心识别到用户已登录,返回用户的身份,此时用户无需登录即可使用新浪博客。

  • 只要多个系统使用同一套单点登录框架那么它们将是相互信任的。

CAS包含CAS Client 和 CAS Server两部分

  • CAS Client:要使用单点登录的Web应用,将与同组下的Web应用构成相互信任的关系,只需在web应用中添加CAS提供的Listener和Filter即可成为CAS Client ,其主要负责对客户端的请求进行登录校验、重定向和校验ticket工作。

  • CAS Server:主要负责对用户的用户名/密码进行认证,颁发票据等,需要单独的进行部署。同组下的任意一个Web应用登录后其他应用都不需要登录即可使用。

搭建CAS服务端

环境准备

jdk1.8、tomcat9、maven3+、idea

下载springboot5.x版本 cas-server代码

git clone https://gitee.com/pingfanrenbiji/cas-overlay-template.git -b 5.2导入idea中 目录结构为

tomcat启动

访问

现在需要解决页面上的2个报红个就是说你没用HTTPS登录,另一个就是你现在只有一个写死的用户,目前这个服务端只能看看,没什么实际用途。

https配置

  • 生成服务器端的keysore文件

keytool -genkey -alias cas -keyalg RSA -keysize 2048 -keypass 123456 -storepass 123456 -keystore /Users/mengfanxiao/Documents/project/person/springboot/shiro-cas/cas/keystore/liuyx.keystore -dname "CN=cas.example.org,OU=liuyx.com,O=liuyx,L=JiNan,ST=JiNan,C=CN"
  • 配置域名

sudo vim /etc/hosts
127.0.0.1  cas.example.org
  • 配置tomcat

conf/server.xml注视掉8080端口访问<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="/Users/mengfanxiao/Documents/project/person/springboot/shiro-cas/cas/keystore/liuyx.keystore" type="RSA" certificateKeystoreType="JKS" certificateKeystorePassword="123456"/></SSLHostConfig>
</Connector>

登陆用户从数据库中读取

数据库文件及账号数据

再次访问

https://cas.example.org:8443/cas_overlay_war/login

搭建CAS客户端

下载官方demo client

https://gitee.com/pingfanrenbiji/cas-sample-java-webapp.git目录结构

地址配置

生成客户端访问服务端的证书

我是在本地电脑进行测试的 所以客户端和服务器端都是在同一太电脑上
  • 通过服务端证书生成客户端证书

keytool -exportcert -alias cas -keystore /Users/mengfanxiao/Documents/project/person/springboot/shiro-cas/cas/keystore/liuyx.keystore -file /Users/mengfanxiao/Documents/project/person/springboot/shiro-cas/cas/keystore/liuyx.keystore.cer -storepass 123456
  • 将客户端证书导入客户端所在的服务器上的jdk环境中

sudo keytool -import -alias cas -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts -file /Users/mengfanxiao/Documents/project/person/springboot/shiro-cas/cas/keystore/liuyx.keystore.cer默认密码:changeit
  • 查看证书文件

keytool -list -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts
  • 删除证书文件

keytool -delete -alias cas -keystore  /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts

tomcat启动

访问

https://localhost:8444/cas_sample_java_webapp_war_exploded/
  • 第一次访问

输入用户名和密码之后

  • 再一次访问

直接略过授权页面

配置http方式访问

  • 配置参数

  • 访问

http://localhost:8081/cas_sample_java_webapp_war_exploded/

本文使用 mdnice 排版

CAS单点登陆原理简介及环境搭建相关推荐

  1. PHP使用phpCAS对接CAS单点登陆系统

    PHP使用phpCAS对接CAS单点登陆系统 综述 `CAS`单点登陆原理 搭建`CAS SSO`SERVER服务端 下载`phpCAS`客户端 phpCAS客户端配置 PHP开发对接 注意 综述 本 ...

  2. CAS单点登录原理解析及相关配置

    1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中 ...

  3. 《Web安全之机器学习入门》一 2.2 TensorFlow简介与环境搭建

    2.2 TensorFlow简介与环境搭建 TensorFlow是一个采用数据流图.用于数值计算的开源软件库(见图2-5).节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量 ...

  4. TensorFlow2.0(一)--简介与环境搭建

    简介与环境搭建 1. TensorFlow是什么 2. TensorFlow1.0与2.0架构 3. TensorFlow环境配置 1. TensorFlow是什么 TensorFlow是Google ...

  5. springBoot(1)---简介与环境搭建

    一.springBoot简介与环境搭建 目录 前言:学习计划 1.springBoot环境搭建 2.springBoot入门 3.srpingBoot整合Mybatis 4.springBoot整合R ...

  6. JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构

    JSTL标准标签库简介与环境搭建 EL表达式与EL隐式对象 out标签 set标签 remove标签 catch标签 if标签 choose.when.otherwise配合标签 foreach标签 ...

  7. csdn新出炉的Python基础Python的简介和环境搭建和环境变量

    一.前言 hello呀,大家好我叫涂九,今天呢想换中方式和大家唠唠,因为发现之前的文章写得有些乱,我的强迫症犯了,打算给大家从Python的基础开始讲起,今天我们主要讲Python简介和环境搭建和环境 ...

  8. xcode w情ndows版,第 1 章 简介和环境搭建

    第 1 章 简介和环境搭建 1.1 什么是编程语言 如果想控制计算机,你需要一种可以和计算机对话的方法.不像猫或狗那样有一套自己的神秘语言,计算机的语言是人类创造的.计算机程序是一段文本,就像一本书或 ...

  9. UI层自动化测试框架(一)-简介和环境搭建

    大家好,本系列教程主要介绍基于Appium的UI层的自动化测试框架的设计和实践.我将平时的学习和工作的实践一一的总结下来,给初学者一点灵感和启发,如有不对的地方还请大家指出. 所谓UI层自动化,顾名思 ...

最新文章

  1. Wireshark网络抓包(三)——网络协议
  2. 已知x=python是一种非常好的编程语言-为什么用Python,高级的Python是一种高级编程语言...
  3. python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(一)-简述与端口转发...
  4. C文件 写入 读取 函数
  5. java两个小球相撞_JAVA小游戏之两个物体碰撞产生的碰撞检测
  6. jQuery jsonp跨域请求
  7. skhynix nvme toolbox怎么选择磁盘_为啥我的NVMe固态硬盘跑分比别人少一半!?莫慌,2张图完美解决...
  8. 2006-8-11 11:29:00 搜索算法及其在ACM竞赛中的应用(作者/刘力科 计算机系01级4班)...
  9. 查看dll函数接口的参数的方法
  10. 下载 Google Chrome 离线安装包
  11. xcode 找不到头文件
  12. 远程调用中间件(RPC
  13. idea设置修改字体大小与样式【亲测好用】
  14. 大概都能懂的Eviews教程:二(转载)
  15. 华硕飞行堡垒Fx50j4200H 4600HD 黑苹果High Sierra10.13.6心得
  16. RuoYi-Vue 若依 新增子module模块,子模块的接口报404,以及自定义包名后如何确保正确扫描?
  17. HDU 5773 DP LIS变形
  18. 微信小程序014租房-房屋租赁合同系统
  19. 前端学习-Antd 组件库基础
  20. 新冠疫情可视化(7月7日,7月8日)

热门文章

  1. JAVA大厂高频面试题及答案
  2. 写文件 追加到开始_文件和流
  3. 如何借助配置中心ACM加速企业IT服务快速迭代
  4. maven加载第三方jar不能加载
  5. Linux运维之道之ENGINEER1.3(配置SMB共享,配置NFS共享)
  6. hdu4848 求到达每一个点总时间最短(sum[d[i]])。
  7. Oracle 10.2.0.1.0升级到 10.2.0.4.0
  8. .NET平台4.0 发布网站流程及出错总结
  9. Windows结束某个端口的进程
  10. 0x800f0845 更新1803报错