单点登录CAS学习(三) 通过JDBC进行登录验证

CAS单点登录从入门到部署 当我们访问其他的应用,与前面的步骤也是基本相同,首先用户访问受保护的资源,跳转回浏览器,浏览器含有先前登录的CASTGC cookie,CASTGC cookie包含了TGT并发送到CAS认证中心,CAS认证中心校验TGT是否有效,如果有效分发浏览器一个带ST参数的资源地址URL,应用程序拿到ST后,再发送给CAS认证中心,如果认证了ST有效后,结果会返回一个包含成功信息的XML给应用。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。PGT是ST签发的。 阅读详情

上一章“搭建cas-overlay-5.3工程”说明了如何搭建一个cas服务端工程,细心的读者发现验证的时候登录账号和密码是静态的。实际的场景中,单点登录的服务端一般都是通过数据库进行密码验证的。

数据库中账号和密码至少分两类,一类是管理员,这个账号可以进行单点登录系统的管理和配置等等工作,还有一类账号是使用单点登录系统的成员,这些成员通过权限配置才真正的决定了可以通过单点登录系统登录到哪些客户端系统(多个应用)。

本章将实现通过JDBC的方式进行登录验证。

1、前置准备

         首先做如下准备

  1. 准备一个mysql数据库
  2. 创建用户表
  3. 插入如下数据

本例中使用的mysql数据库,本例中在test数据库中创建了user_info

CREATE TABLE `user_info` (

  `uid` int(11) NOT NULL AUTO_INCREMENT,

  `username` varchar(50) DEFAULT '' COMMENT '用户名',

  `password` varchar(255) DEFAULT NULL COMMENT '登录密码',

  `name` varchar(255) DEFAULT NULL COMMENT '用户真实姓名',

  `id_card_num` varchar(255) DEFAULT NULL COMMENT '用户身份证号',

  `state` char(1) DEFAULT '0' COMMENT '用户状态:0:正常状态,1:用户被锁定',

  PRIMARY KEY (`uid`),

  UNIQUE KEY `username` (`username`) USING BTREE,

  UNIQUE KEY `id_card_num` (`id_card_num`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

 

 

 

 

接着我们插入如下几条数据

#插入用户信息表

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'admin','123456','管理员','111111');

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'zhangsan','123456','张三','222222');

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'lisi','123456','李四','333333');

INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'wangwu','123456','王五','444444');

 

2、修改CAS的jdbc配置

修改pom文件

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc-drivers</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>
>修改完成后,会进行重新导入

 

 

修改配置文件 application.properties

1)注释静态登陆账号

2)添加jdbc相关配置

我的数据库为 test,账号为 root 密码为root123

在配置文件里面,添加如下内容:

#jdbc配置
#添加jdbc认证
cas.authn.jdbc.query[0].sql=SELECT * FROM user_info WHERE username =?
#那一个字段作为密码字段
cas.authn.jdbc.query[0].fieldPassword=password
#配置数据库连接
cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
#数据库用户名
cas.authn.jdbc.query[0].user=root
#数据库密码
cas.authn.jdbc.query[0].password=root123
#mysql驱动
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

 

3、验证

将工程运行起来,我们可以用数据库中的账号进行登录,如果前面都正确操作了,那么你可以用以下账号进行登录

 

 

 

修改密码采用MD5验证

由于一般情况下,密码是不明文暴露的,因此需要对密码进行加密处理。 一般情况下用MD5的比较多。CAS框架也支持MD5

  1. 首先在数据库里面插入一条用MD5保存密码的记录
INSERT INTO user_info(uid,username,`password`,`name`,id_card_num) VALUES (null,'admin2','e10adc3949ba59abbe56e057f20f883e','管理员','666666');

这里新的账号是 admin2, 密码 123456  MD5密码: e10adc3949ba59abbe56e057f20f883e

插入后,数据库中情况如下:

  1. 修改CAS的配置文件

在application.properties文件中jdbc后面添加上加密策略各属性

#配置加密策略

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
#配如下图所示:

 

  1. 修改完成后,重启工程:

等待登陆页面起来后,做下面2个操作

  1. 使用admin 账号,密码: 123456 登陆

这个时候,由于使用了MD5作为密码策略,所以用密码123456登陆,登陆失败。原因是CAS会将123456转换成MD5编码,和数据库中的password字段进行比较,不一致则显示登陆失败

  1. 使用账号admin2 密码:123456 登陆

原因和上面也是一样。

 

 

多系统单点登录(CAS整合) 声明:本文章仅是本人记录作以后备用,不建议作为学习cas的参考文章,毕竟每人的思路不一样,此文章会有好多地方写得过于简单,网路上很多关于cas的文章写得比此文好好多。 首先CAS有服务器端(本人用4.0.0版本)和客户端(3.3.3版本) 服务器端: 服务器端作为统一认证的地方,所以各个系统的用户要统一。 认证的方式有3种,本人采用JDBC的认证方式(AbstractJdbcUsernam 阅读详情

相关推荐

CAS单点登录学习笔记--CAS Server搭建(一)

CAS单点登录学习笔记–CAS Server搭建(一) 最近在学习单点登录框架CAS,首先先尝试搭建CAS Server,在其中遇到了各种问题,也参考了很多前辈的博客文章。做一个总结,避免以后走弯路。 一、下载cas server源代码,这里下载cas 4.2.7版本 1、下载地址:https://github.com/apereo/cas/releases/tag/v4.2.7 2、首先确保本地...

polo_longsan的专栏 1742

cas 5.1.1 mysql_Cas 5.2.x版本使用 —— 单点登录JDBC认证(五)

之前介绍过在application.properties文件中,修改默认的静态用户名和密码。这节分析下,取消静态登陆方式,该用从数据库链接获取用户进行登录认证。CAS支持各种数据库,我这里选用MySQL进行实践。加密方案cas支持jdbc校验方案:根据sql给予用户名进行查询,根据密码字段进行鉴定(select * from table_users where username=?)可判断有效等通...

weixin_33780516的博客 454

CAS5.3单点登录服务端搭建与整合springboot

什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 SSO是概念,实现SSO需要用到CAS框架 使用cas框架实现单点登陆 有多个不同服务器的web层需要登陆。就要使用cas。在一个web层页面登录,其他页面都不需要登录就能访问 如www.tao...

YZX2018的博客 3916

CAS单点登录(三)----多种认证方式

CAS单点登录(三)----多种认证方式 常用单向加密算法: MD5,SHA,HMAC。 加密类型:NONE | DEFAULT | STANDARD | BCRYPT | SCRYPT | PBKDF2 数据库前面的配置不变 #默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密 # NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2 cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT #

weixin_43392662的博客 983

编码约定的自由度:重新思考Hamming码在实际工程中的灵活应用

本文探讨Hamming码在实际工程中的灵活应用,突破标准实现的思维定式。通过分析不同编码约定的优缺点和资源受限环境下的设计权衡,展示如何根据嵌入式系统、通信协议等具体需求定制汉明码实现,优化编解码效率并降低硬件开销。

perl8的博客 178

TI MSPM0G3507 循迹小车强制寻黑线代码一

一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。

雾削木的优快云博客 1855

CAS 5.3.1系列之自定义JDBC认证策略(三)

CAS 5.3.1系列之自定义JDBC认证策略(三)

Nicky's blog 4382

架构设计之架构治理

架构治理的本质是“用规则约束复杂性,用流程保障落地,用数据驱动优化”先定目标:明确量化的治理目标,避免盲目行动;立标准:建立覆盖分层、选型、接口、拆分的统一规范,奠定治理基础;强评审:通过架构评审把控设计环节,提前规避风险;全流程:将治理规则贯穿设计、开发、测试、部署、运维全生命周期;重保障:通过组织、流程、工具确保治理落地,而非“纸上谈兵”;持续迭代:随业务与技术演进优化治理规则,避免“一劳永逸”。

xiaolyuh的专栏 812

CAS单点登录-自定义认证之JDBC(五)

CAS单点登录-自定义认证Ⅰ(五)版本为cas-5.1.3 若需要上个版本代码,可以点击下载: 本章节的内容为JDBC认证,查找数据库进行验证,其中包括: 密码加密策略 认证策略 业务需求 在不同公司,可能有很多业务需求或者架构不一样导致我们实现验证的方式不一样,那么cas为我们提供了很多认证的模式(当然也可以自定义),其中常用的有: JDBC认证 LDAP认

悟空、的博客园 1万+

VMware ESXi 7.0下Intel网卡SR-IOV配置实战:解决虚拟化网络延迟问题

本文详细介绍了在VMware ESXi 7.0环境下为Intel网卡配置SR-IOV(单根I/O虚拟化)的完整实战流程。通过硬件辅助直通技术,虚拟机可直接访问物理网卡资源,有效绕过虚拟化层瓶颈,从而显著降低网络延迟和CPU开销,适用于金融交易、实时计算等对性能敏感的场景。

embedding5hiker的博客 554

CPG控制网络入门

从线性变换开始推导

妖米的博客 5044

基于CAS实现单点登录(3):JDBC认证

1.创建数据库cas 新增一张用户表sys_user 说明: expired字段表示过期,1表示已过期,需要修改密码 disabled表示账号是否禁用,1表示禁用

u013938578的博客 836

MIT Mini Cheetah--仿真流程

MIT Mini Cheetah–仿真 摘要 由于官方提供代码中,控制仿真环境中的猎豹机器人运动需要遥控器来控制。官方默认推荐使用logitech Gamepad F310游戏手柄:We use the Logitech F310 controller. There’s a switch in the back, which should be in the “X” position. The controller needs to reconnected if you change the switch

Galaxy_Robot的博客 5916

CAS单点登录的实现(二)

这篇文章对CAS单点登录具体实现的一些步骤就行讲述,至于CAS单点登录的实现原理分析,请参看下面这篇文章: CAS单点登录原理分析 https://blog.youkuaiyun.com/qq_41258204/article/details/84036875 CAS 包含两个部分: CAS Server 和 CAS Client 。 CAS Server :其实就是一个war包,CAS框架已经提供。只...

小机灵鬼 1万+

全网最详细Seurat v5 流程复现(拿来即用)

本文是基于seurat v5版本的教程复现,主要依据来源于官网seurat v5建议大家有时间的话可以去官网进行详细阅读学习!本节内容在之前seurat v4的教程都很多都有提到,文章所用到的数据及代码已经给各位放在这里了,有需要自取!请点击这里哦提取码:bui1。

ZxVSaccount的博客 1万+

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)

当今,塔防游戏已经成为游戏市场上备受欢迎的一类游戏类型。《保卫萝卜》作为其中的经典之作,深受玩家喜爱。本项目旨在基于《保卫萝卜》的玩法和特点,开发一个Unity2D塔防游戏,让玩家可以在游戏中体验到精彩的策略对抗与刺激的关卡挑战。本项目将通过Unity引擎进行开发,利用2D游戏开发相关技术,包括但不限于精灵动画、碰撞检测、UI界面设计等。我们将实现萝卜作为关键角色的防守任务,并设计各种怪物和防御塔,使得游戏具有多样的战术策略和游戏乐趣。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4924

Apache CAS部署在tomcat上实现单点登录

单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用,对于采用 CAS 实现轻量级单点登录解决方案的入门读者具有一定指导作用。

cruise技术博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

CAS单点登录(三)--服务端改造(登录页及登录方式的自定义)

上一篇文章(http://blog.youkuaiyun.com/u012116457/article/details/52161201)提到,为了更好的满足我们的要求,还需要对服务端进行改造。 最近发现了一个巨牛的人工智能教程,不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!所以分享给大家,感兴趣的童鞋可以看看。点这里可以跳转到教程。 1.新建cas_server 为了方便,首先我们现在...

2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CAS单点登录原理及实现

CAS单点登录原理及实现 标签(空格分隔): 单点登录 CAS SSO ###目录 概念介绍 搭建流程 原理分析 ###概念介绍 CAS介绍 Central Authentication Service(缩写CAS)是一种针对万维网的单点登录协议。它的目的是允许一个用户访问多个应用程序,而只需提供一次凭证(如用户名和密码)。它还允许web应用程序在没有获得用户的安全凭据(如密码)的情...

u011975180的博客 2339

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

cas单点登录

cas单点登录 简介: 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使

不了了之专栏 1808

一步步使用Tomcat+CAS完成单点登录

1.最基本的单点登录           客户端配置: 1.Tomcat配置SSL 1.生成证书 打开cmd或终端,命令行切换到Tomcat所在目录,执行如下命令: D:\JayHe\Environ

逍遥飞鹤的专栏 1万+

CAS单点登录系列之原理简单介绍

1. SSO简介 1.1 单点登录定义 单点登录即在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。 2. CAS简介 CAS(Center Authentication Service)是耶鲁大学研究的一款开源的单点登录项目,主要为web项目提供单点登录实现,属于Web SSO。 待续…,PS:找时间继续写… 单点登录实现方式: 单点登录的三...

Nicky's blog 1万+

CAS单点登录(第7版)16.模仿

如果您想设计自己的账户商店,您可以遵循以下方法:123456789101112@Bean...

大强博客 863

CAS 单点登录使用详解

<br />============================================================================== <br />开发环境 :MyEclipse6.5+tomcat6.0+JDK6.0+MySQL5.0+CAS <br />开发环境搭建 : 基本搭建环境省略不提 <br />            这里主要介绍 CAS 环境搭建及配置步骤 : <br />1. 下载 CAS 的最新版本 :   服务端下载地址 : http://www.ja

songliuhong的专栏 5790

cas单点登录 java_CAS单点登录(三)——多种认证方式

今天我们讲解一下CAS的多种认证方式,在上一篇文章中我们讲解了CAS基础服务的搭建,完成了CAS认证服务中心的简单部署,如果忘记了话,可以先去复习一下——CAS单点登录(二)——搭建基础服务。CAS认证方式有多种,我们可以根据自己的需求来实现。在前一篇文章中搭建服务中我们其实就把CAS的JDBC认证方式讲解了,在读取用户名我们可以指定为从数据库的表中读取数据。我们还是接着上次的代码进行讲解,你可以...

weixin_30480859的博客 1253

多服务集成CAS实现单点登录

简要概述实现步骤(思路): 1.创建web应用 2.集成CAS(使用CAS服务端内配置账户密码进行登录验证) 2.1导入jar包 2.2配置web.xml文件(拦截跳转验证以及验证结束返回) 3.配置CAS服务端使用数据库表进行登录验证(CAS本地服务搭建) 3.1修改CAS服务端配置文件 4.再创建多个web应用,实现真正的单点登录 4.1同理步骤...

weixin_41758407的博客 1413
上一篇: 单点登录CAS学习(二):使用IDEA搭建cas-overlay-5.3工程
下一篇: 单点登录CAS学习(四)应用子系统接入
虎纠卫
博客等级 码龄24年 440粉丝 120原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值