cas-overlay-template实现单点登录步骤

2023-05-16

转载 https://blog.csdn.net/zlsuperjj/article/details/92439816

搭建CAS SERVER
这里使用cas-overlay-template搭建cas服务器,overlay可以把多个项目war合并成为一个项目,并且如果项目存在同名文件,那么主项目中的文件将覆盖掉其他项目的同名文件。

apereo提供了一个基于层结构的框架,可以帮助开发者快速引入cas server的代码,然后实现自由配置或代码覆盖,打包方式也非常简单。
Github地址:https://github.com/apereo/cas-overlay-template
导入后的初始结构如下:

我们构建如下的主项目结构,其实overlays\org.apereo.cas.cas-server-webapp-tomcat-5.2.3\WEB-INF\classes 目录下已经有模板结构,我们在主项目配置定制化信息,就可以覆盖上面的模板文件。
导入

整个项目是基于spring boot的,所以在application.properties中配置相关信息即可启动。
设置服务端的端口、路径、https秘钥(暂时可不配)相关配置
server.context-path=/cas
server.port=8443

设置jdbc连接配置,这样服务端启动时会从数据库里去进行用户登录认证

##jdbc认证
#Query Database Authentication 数据库查询校验用户名开始
#查询账号密码sql,必须包含密码字段
cas.authn.jdbc.query[0].sql=select * from tbl_user where username=?
#指定上面的sql查询字段名(必须)
cas.authn.jdbc.query[0].fieldPassword=password
#指定过期字段,1为过期,若过期需要修改密码
cas.authn.jdbc.query[0].fieldExpired=expired
#为不可用字段段,1为不可用,
cas.authn.jdbc.query[0].fieldDisabled=disabled
#数据库方言hibernate的知识
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
#数据库驱动
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
#数据库连接
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/zheng?useUnicode=true&characterEncoding=UTF-8
#数据库用户名
cas.authn.jdbc.query[0].user=root
#数据库密码
cas.authn.jdbc.query[0].password=root
#默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密
cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

启动项目,出现登录界面,用数据库里配置的用户登录即可。

至此,cas server端,也就是单点登录的统一认证中心,搭建好了。

搭建CAS CLIENT
官方提供了一个简单的客户端项目.
Github地址:https://github.com/cas-projects/cas-sample-java-webapp
下载好后 添加tomcat依赖

<plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
               <port>8088</port>
                <path>/</path>
          </configuration>
</plugin>

修改web.xml配置 主要是配置统一认证中心地址和本项目地址

<!--单点登出过滤器-->
<filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://localhost:8443/cas</param-value><!--认证中心地址-->
    </init-param>
</filter>

<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<!--cas认证过滤器-->
<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <!--<filter-class>org.jasig.cas.client.authentication.Saml11AuthenticationFilter</filter-class>-->
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>http://localhost:8443/cas/login</param-value><!--认证中心登录地址-->
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://localhost:8080/</param-value><!--本项目地址-->
    </init-param>
</filter>

<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <!--<filter-class>org.jasig.cas.client.validation.Saml11TicketValidationFilter</filter-class>-->
    <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://localhost:8443/cas</param-value><!--认证中心地址-->
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://localhost:8080/</param-value><!--本项目地址-->
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>useSession</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>authn_method</param-name>
        <param-value>mfa-duo</param-value>
    </init-param>
</filter>

启动此客户端,访问http://localhost:8080/
因为这时候没登录,会先跳到http://localhost:8443/cas/login?service=http%3A%2F%2Flocalhost%3A8080%2F这个认证中心的登录页

如果出现如下错误,是因为此时对接的是http服务,服务端未开启http的支持

解决方法:
第一步、修改services\HTTPSandIMAPS-10000001.json文件,增加http支持

第二步、 在application.properties文件中添加:
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

这时重新访问、登录,可以发现认证中心通过后,重定向到了子项目的首页。

如果在启一个子系统2,只要简单改下web.xml里的项目路径就可以。这时在子系统1登录的情况下,再去访问子系统2,可以发现不同登录,就直接跳到了子系统2的首页。这就是单点登录。

单点登出:https://localhost:8443/cas/logout?service=http://localhost:8080
子系统1想要登出的话,直接掉如上的接口即可,service= 后面跟的就是子系统1的地址
登出成功的话,再去访问子系统2,发现需要重新登录了。说明该用户在子系统2里也已经登出了。

如上,就是搭建cas 客户端的步骤,可以发现现有项目想要集成进CAS,只要配置好web.xml里相关过滤器就好。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cas-overlay-template实现单点登录步骤 的相关文章

  • k2pdfopt详细教程-让kindle看遍所有pdf

    pdf拿什么拯救6寸kindle救世主登场一步一步解决图文混排扫描版pdf 书籍总结 pdf xff0c 拿什么拯救6寸kindle kindle现在已经出道paperwhite第三代了 xff08 2015年7月 xff09 xff0c
  • 图像处理PSNR及其计算(OpenCV和matlab实现)

    图像PSNR及其计算OpenCV和matlab实现 PSNR的概念PSNR编程实现 matlab实现 第一种实现方法第二种直观方法第三种实现方法 OpenCV实现 参考资料 图像PSNR及其计算 xff08 OpenCV和matlab实现
  • Caffe技巧之使用snapshot来继续网络训练

    Caffe技巧之使用snapshot来继续网络训练 Caffe技巧之使用snapshot来继续网络训练 Step 1设置solverprototxtStep 2设置运行脚本sh 有时候想在已经训练好的网络上继续之前的训练 xff0c 那么可
  • 鸿蒙最新功能及承载设备详解:HarmonyOS 2及华为全场景新品发布会全纪录

    6月2日 xff0c 华为联手CSDN直播了 HarmonyOS 2及华为全场景新品发布会 xff0c 老猿全程观看直播 xff0c 并进行了回看 xff0c 力争将发布会的核心内容在本文中概要性地呈现 一 一生万物 万物归一 首先是华为消
  • python删除网页html元素

    找到标签id 以id来删除 js span class token operator 61 span span class token string 39 var child 61 document getElementById 34 ex
  • 10.面向对象分析OOA笔记

    文章目录 概述需求陈述建立对象模型典型步骤 建立动态模型典型步骤 建立功能模型数据流图画法 定义服务 概述 识别出问题域内的类和对象 xff0c 分析它们之间的关系 xff0c 建立问题域的正确模型 三种模型中 xff0c 对象模型是最重要
  • 12.软件项目管理笔记

    文章目录 估算软件规模代码行技术KLOC功能点技术FP 估算工作量进度计划人员组织质量保证软件配置管理能力成熟度模型CMM 估算软件规模 代码行技术KLOC xff08 最小规模平均值a 43 4 最可能规模平均值 43 最大规模平均值b
  • 0.各种规格描述技术总结

    文章目录 结构化分析与设计面向对象分析与设计软件项目管理 结构化分析与设计 系统流程图 xff1a 描绘物理系统 E R图 xff1a 数据模型 层次方框图 xff1a 描绘数据结构 xff0c 数据模型 Warnier图 xff1a 描绘
  • 如何更改Git的端口号

    方法一 直接修改URL为SSH 开头 打开gitbash xff0c 进入仓库 xff0c 输入指令 xff1a git remote set url origin ssh git 64 domain com 1234 home git Y
  • vtk多平面重建(MPR)源码

    include 34 vtkSmartPointer h 34 include 34 vtkActor h 34 include 34 vtkCamera h 34 include 34 vtkCellPicker h 34 include
  • 0.1 + 0.2 不等于0.3 问题,精度的丢失和解决办法

    10个0 1相加不等于1 xff1b 这是因为浮点数精度丢失的问题 xff0c 首先知道在计算机中数字是以二进制的方式存在的 xff0c 那么在CPU中计算0 1 43 0 1时实际上是0 1的二进制的相加 xff1b xff08 0 1
  • Raspberrypi 3 系统备份还原, 基于最小系统镜像实现

    Raspberrypi 3 备份还原系统 一 为什么要备份系统 xff1f 1 经常在树莓派上调试程序 xff0c 安装各种软件 xff0c 越来越多的库和程序的安装带来的系统更改几乎是不可逆的 xff0c 一旦某个程序或者驱动出现问题 x
  • OpenStack(Kilo) + Tenant-OVS-VXLAN(ml2) + Multi-Ext-Net

    from http blog sina com cn s blog 6de3aa8a0102vl7m html 使用VirualBox创建CentOS7虚拟机 资源分配视宿主windows而定 xff0c 由于要部署OpenStack xf
  • 利用策略模式优化if-else

    一 定义 策略模式 Strategy Pattern 策略模式属于对象的行为模式 其用意是针对一组算法 xff0c 将每一个算法封装到具有共同接口的独立的类中 xff0c 从而使得它们可以相互替换 策略模式使得算法可以在不影响到客户端的情况
  • web技术分享| 【高德地图】实现自定义的轨迹回放

    实现 轨迹回放 方式有两种 xff1a 第一种是使用 JS API 和 AMap PolyLine xff08 折线 xff09 等图形配合实现 第二种是使用 JS API 和 AMapUI 组件库 配合使用 xff0c 利用 PathSi
  • ubuntu14.04 忘记了普通用户密码和root密码

    步骤一 xff1a 必须先找回ROOT xff0c 才可以往下做 本文使用的Ubuntu版本为14 04 4 xff0c 具体过程如下为 xff1a 1 重启电脑长按shift键直到进入下图进入GRUB引导模式 xff0c 选择第二行Ubu
  • 乐优商城介绍

    1 乐优商城介绍 1 1 项目介绍 乐优商城是一个全品类的电商购物网站 xff08 B2C xff09 用户可以在线购买商品 加入购物车 下单 秒杀商品可以品论已购买商品管理员可以在后台管理商品的上下架 促销活动管理员可以监控商品销售状况客
  • 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠 34 34 替换成空字符串 34 34 xff0c 结果出现如下的异常 xff1a 1 java util regex PatternSyntaxException Un
  • 正则表达式匹配引号中间的内容怎么写?

    字符串 123 abc 456 匹配结果 abc Answer1 利用先行和后发断言规则 xff1a lt 61 34 61 34 最近总结了一篇关于正则表达式的博文 xff0c 题主不妨一读 xff1a 正则表达式基础 测试代码如下 xf
  • excel将一个工作表根据条件拆分成多个工作表图文教程

    本例介绍在excel中如何将一个工作表根据条件拆分成多个工作表 注意 xff1a 很多朋友反映sheets i delete这句代码出错 xff0c 要注意下面第一个步骤 xff0c 要拆分的数据工作表名称为 数据源 xff0c 而不是你新

随机推荐

  • python3下cv2.imwrite存储带有中文路径

    由于imwrite前使用编码在python3中已经不适用 xff0c 可用imencode代替 xff0c 以下代码是从视频中获取第2帧保存在中文文件夹下的实例 xff1a cap 61 cv2 VideoCapture 34 mp4 34
  • tf.placeholder、feed_dict用法说明

    函数形式 xff1a tf placeholder dtype shape 61 None name 61 None 参数 xff1a dtype xff1a 数据类型 常用的是tf float32 tf float64等数值类型 shap
  • sess.run()

    函数 xff1a run fetches feed dict 61 None options 61 None run metadata 61 None 当构建完图后 xff0c 需要在一个session会话中启动图 xff0c 第一步是创建
  • 卷积神经网络之AlexNet网络详解

    一 介绍 Alex Krizhevsky等人训练了一个大型的卷积神经网络用来把ImageNet LSVRC 2010比赛中120万张高分辨率的图像分为1000个不同的类别 在测试卷上 xff0c 获得很高准确率 top 1 and top
  • 如何分清分布式、高并发与多线程

    当提起这三个词的时候 xff0c 是不是很多人都认为分布式 61 高并发 61 多线程 xff1f 当面试官问到高并发系统可以采用哪些手段来解决 xff0c 或者被问到分布式系统如何解决一致性的问题 xff0c 是不是一脸懵逼 xff1f
  • 利用正则表达式排除特定字符串

    查找不以baidu开头的字符串 baidu com sina com cn 正则 xff1a baidu 匹配结果就是第2行 xff0c 也就是第1行被排除了 这里使用了零宽度断言 exp 注意 xff0c 我们有一个向前查找的语法 也叫顺
  • 自学记录--python小知识

    os path 的一些功能 根据实际项目中的例子来理解一下大体的用法 xff0c 目前只接触了几个方法 例1 xff1a 我是在c python django ttsx2 ttsx goods views py工作 xff0c 运行环境是在
  • django配置连接多个数据库,和把应用名字在admin后台显示为中文

    django配置连接多个数据库 xff0c 自定义表名称 在项目tt下新建两个app xff0c 分别为app01 app02 配置app01使用default节点数据库 xff1b app02使用hvdb节点数据库 xff08 也可以配置
  • 自学记录--字符串,列表,字典的常用方法

    字符串常见操作 如有字符串mystr 61 39 hello world itcast and itcastcpp 39 xff0c 以下是常见的操作 lt 1 gt find 检测 str 是否包含在 mystr中 xff0c 如果是返回
  • 自学记录--django模型使用记录

    对于重要数据都做逻辑删除 xff0c 不做物理删除 xff0c 实现方法是定义isDelete字段 xff0c 类型为BooleanField 默认值为False 字段类型概括 AutoField xff1a 一个根据实际ID自动增长的In
  • 自学记录--django模板使用记录

    模板template相关知识及问题 xff1a 过滤器 xff1a value floatformat gt 不给参数的话会将浮点数的小数位舍入到一个小数位 例 xff1a value 61 34 256 gt 结果为34 3 value
  • 自学记录--django+uwsgi+nginx部署

    一 xff1a 服务器环境配置 在本地的虚拟环境中 xff0c 项目根目录下 xff0c 执行命令收集所有包 pip freeze gt plist txt 通过xftp软件将开发好的项目和收集的包上传到服务器某个目录在服务器上面安装并创建
  • 赛码-三分线-java

    题目描述 小赛很喜欢看A队和B队的篮球比赛 众所周知 xff0c 篮球每回合根据投篮远近可以得2分或3分 如果投篮距离小于d那么得2分 xff0c 大于等于d得3分 我们将d记为三分线 每次小赛都喜欢通过改变三分线的大小来让自己支持的A队获
  • xrdp远程登录恢复上一次登陆会话

    本文参考Xrdp Tip How to reconnect to the existing session while using the xrdp package from Ubuntu Repository 首先连接远程桌面是观察连接时
  • 查看Debian版本

    查看Debian版本信息命令如下 xff1a lsb release a 参考运行截图 xff1a
  • Linux 服务器安装配置 TimeMachine

    Linux 服务器安装配置 TimeMachine 1 安装 Time Machine 相关的后台服务 1 安装netatalk xff1a apt get install netatalk 2 安装 dbus xff1a apt get
  • Linux命令总结--特殊符号命令

    Linux中特殊符号大全 井号 comments 管理员 普通用户 脚本中 bin bash bin sh 井号也常出现在一行的开头 xff0c 或者位于完整指令之后 xff0c 这类情况表示符号后面的是注解文字 xff0c 不会被执行 T
  • ZeroMQ学习笔记(5)——高级发布订阅模式

    第五章 高级发布订阅模式 何时使用发布 订阅模式 如何处理过于慢速的订阅者 xff08 自杀蜗牛模式 xff09 如何设计高速订阅者 xff08 黑盒模式 xff09 如何监控一个发布 订阅网络 xff08 特浓咖啡模式 xff09 如何建
  • n个数依次入栈,出栈顺序有多少种?

    这个问题是卡特兰数的第n项结果 卡特兰数 卡特兰数前几项为 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 35357670 1296447
  • cas-overlay-template实现单点登录步骤

    转载 https blog csdn net zlsuperjj article details 92439816 搭建CAS SERVER 这里使用cas overlay template搭建cas服务器 xff0c overlay可以把