CAS 服务端数据库认证
CAS-服务端数据库认证
数据认证需要相关的jar包:
cas-server-support-jdbc-x.x.x.jar
MySQL-connector-Java-x.x.x-bin.jar
修改CAS Server的配置
通过数据库查询来验证用户名密码
修改cas server的配置
在tomcat_cas/webapps/cas/WEB_INF/deployerConfigContext.xml找到如下信息
deployerConfigContext.xml将如下信息
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
替换为
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" ></property>
<property name="sql" value="select password from t_user where login_name=?" ></property>
<!--<property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>-->
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.MySQL.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/smtp</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>.,mlkjoiu987</value></property>
</bean>
<bean id="MD5SHA1PasswordEncoder" class="oddtech.core.password.MD5SHAPassWordEncoder">
</bean>
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"></property>
<property name="sql" value="select password from operator where account=?"></property>
<!--<property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>-->
</bean>
如果你用了普通的加密,那么请加入一下标签
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"></property>
<property name="sql" value="select password from operator where account=?"></property>
<property name="passwordEncoder" ref="passwordEncoder"></property>
</bean>
<bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
<constructor-arg value="MD5"/>
</bean>
##使用SHA1加密
<bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
<constructor-arg value="SHA1" />
</bean>
至于参数值(Encoder采用的加密方式)
MessageDigest messageDigest=MessageDigest.getInstance(this.encodingAlgorithm)
如果密码加密特别复杂,例如 SHA256(MD5(password))
我们可以写一个实现类,实现org.jasig.cas.authentication.handler.PasswordEncoder接口
注意
1) 密码加密过程,如果不用,注释掉即可
2) QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口,其中一个是通过配置一个SQL语句来查出密码,与所给密码匹配
3) sql语句就是查询哪一张表,本例根据t_user表的login-name字段查询密码,CAS会匹配用户用户输入的密码,如果匹配则通过。
4) passwordEncoder这个是处理密码的加密,如果想要你的应用中数据库保存的是加密过的,比如本例是使用MD5加密的。所以配置了MD5PasswordEncoder这个Handler,cas内置了MD5的功能所以只需要配置一下就可以了。如果在实际应用中使用的是公司自己的加密算法,那么就需要自己写一个handler来处理密码。实现方式也比较简单,创建一个类继承org.jasig.cas.authentication.handler.PasswordEncoder然后在encode方法中加密用户输入的密码然后返回即可。
CAS 服务端数据库认证的更多相关文章
- cas 服务端认证流程
CAS服务端流程分析 'CAS单点登录服务器端的登录流程' -----流程的配置在/WEB-INF/login-webflow.xml文件中 <var name="credential ...
- CAS服务端数据源设置
2.CAS服务端数据源设置 2.1需求分析 我们现在让用户名密码从我们的品优购的user表里做验证 2.2配置数据源 (1)修改cas服务端中web-inf下deployerConfigContext ...
- 单点登录(SSO)解决方案之 CAS服务端数据源设置及页面改造
接上篇 单点登录(SSO)解决方案之 CAS 入门案例 服务端数据源设置: 开发中,我们登录的user信息都是存在数据库中的,下面说一下如何让用户名密码从我们的数据库表中做验证. 案例中我最终把cas ...
- cas 服务端、客服端详细配置
一.准备 1.下载官方源码 CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas CAS-Client下载地址:http:// ...
- 通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页
通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页 YbSoftwareFactory 的 YbRapidSolution for WinForm 插件使用CSLA.N ...
- cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
- SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
落雨 cas 单点登录 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的 ...
- Android应用源码基于安卓的校园二手交易系统客户端+服务端+数据库
该源码是校园二手交易系统应用带服务端,也是一个基于安卓和javaweb的校园二手交易系统,包括整套安卓客户端.javaweb服务端.mysql数据库,可以进行基本的列表显示帖子.显示帖子详情.用户注册 ...
- Android应用源码图书馆管理系统带服务端数据库
本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的 ...
随机推荐
- USACO 1.3 Ski Course Design - 暴力
Ski Course Design Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer ...
- 字符编码之间的相互转换 UTF8与GBK(转载)
转载自http://www.cnblogs.com/azraelly/archive/2012/06/21/2558360.html UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 ...
- 通过例子来理解python闭包。
闭包:就是内部函数对enclosing作用域的变量进行引用.(可先参考python函数作用域LEGB) 通过一个例子体会 def func_150(val): passline = 90 if val ...
- linux下连接无线网出现nl80211: Could not configure driver mode nl80211: deinit ifname=wlan1 disabled_11b_rates=0 wlan1: Failed to initialize driver interface
一.背景1.1 jello@jello:~$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescripti ...
- LightOJ 1393 Crazy Calendar(博弈)题解
题意:r*c方格中,每个格子有一定石子,每次移动每格任意数量石子,只能向下或者向右动一格,不能移动为败 思路:显然是Nim,到右下曼哈顿距离为偶数的不用管,因为先手动一下后手动一下最后移到右下后还是先 ...
- neuroph Perceptron Sample
错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory ...
- [Pytorch]深度模型的显存计算以及优化
原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...
- 用jQuery实现ajax总结以及跨域问题
本文为作者原创,未经博主允许,不可转载 ajax请求的常用的参数设置: type:请求类型,"POST","GET",默认为geturl:发送请求的地址data ...
- 下列java代码中的变量a、b、c分别在内存的______存储区存放。
class A{ private String a = "aa"; public boolean methodB(){ String b = "sb"; fin ...
- 深蓝色 --ppt
Deep Learning of Binary Hash Codes for Fast Image Retrieval [Paper] [Code-Caffe] 1. 摘要 针对图像检索问题,提出简单 ...