CAS (1) —— Mac下配置CAS到Tomcat(服务端)(转)
tomcat版本: tomcat-8.0.29
jdk版本: jdk1.8.0_65
cas版本: cas4.1.2
cas-client-3.4.1
参考来源:
Tomcat (1) —— Mac下配置Tomcat Https/SSL
【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例
目标架构

下载
首先登陆jasig网站http://downloads.jasig.org/,下载相应的cas版本。
由于网站只提供源码包而不提供发布包,所以需要自己下载来编译。
cas会为不同的客户端消费者提供client包,这里我们选择java-client作为演示。
先编译服务端
cas-server-webapp Richard$ mvn clean install -Dmaven.test.skip
然后在target下找到相应的war包"cas-server-webapp-4.1.2.war"
配置
服务端
简单设置
参照以下文章为Tomcat配置好Https
Tomcat (1) —— Mac下配置Tomcat Https/SSL
【高可用HA】Apache (2) —— Mac下安装多个Apache Tomcat实例
然后我们将打好的war包部署再Tomcat上

修改登陆的提示文字"./servers/cluster/tomcat/node-c/webapps/cas/WEB-INF/view/jsp/default/ui/casLoginView.jsp"(为以后的集群环境测试做准备)

然后通过https访问node-c
https://sso.hoau.com:8433/cas/login

打开文件"deployerConfigContext.xml"查看CAS相关的配置:
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
* 初始默认状态下,CAS 通过配置的文件里的用户名密码登陆 casuser/Mellon
尝试登陆
利用数据库来验证
需要的依赖:
cas-server-support-jdbc-4.1.2.jar
mysql-connector-java-5.1.37.jar
MySQL:
在本地的MySQL中创建新的数据库并新建表app_user作为验证用户的目标数据库

修改 deployerConfigContext.xml:
将bean "primaryAuthenticationHandler"注释掉
<!-- by Richard
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
-->
增加数据库dataSource
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/hoau-dev"></property>
<property name="username" value="root"></property>
<property name="password" value="Root123"></property>
</bean>
增加PasswordEncoder
<bean id="myPasswordEncoder"
class="org.jasig.cas.authentication.handler.PlainTextPasswordEncoder"/>
*注意 此处的Encoder必须,有的论坛文章可能会使用"DefaultPasswordEncoder",因为我们示例中的密码数据并没有使用加密,所以我们这里用"PlainTextPasswordEncoder"
<bean id="myPasswordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-arg index="0">
<value>MD5</value>
</constructor-arg>
</bean>
增加DB的""
<bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from app_user where username=?" />
<property name="dataSource" ref="dataSource" /> <property name="passwordEncoder" ref="myPasswordEncoder"/> </bean>
最后回头查看"authenticationManager"的参数
由于我们已经将配置文件的用户验证方式"primaryAuthenticationHandler"修改成了DB的验证方式"dbAuthHandler",所以我们需要修改"primaryPrincipalResolver"的参数
<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
<constructor-arg>
<map>
<!--
| IMPORTANT
| Every handler requires a unique name.
| If more than one instance of the same handler class is configured, you must explicitly
| set its name to something other than its default name (typically the simple class name).
-->
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<!-- Richard change primaryPrincipalResolver
<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
-->
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" />
</map>
</constructor-arg>
测试
尝试访问
https://sso.hoau.com:8433/cas

并使用我们在数据库里面预埋的数据"test01/psw01"登陆
结束
http://www.cnblogs.com/richaaaard/p/5045276.html
CAS (1) —— Mac下配置CAS到Tomcat(服务端)(转)的更多相关文章
- CAS (1) —— Mac下配置CAS到Tomcat(服务端)
CAS (1) -- Mac下配置CAS到Tomcat(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...
- CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS
CAS (3) -- Mac下配置CAS客户端经代理访问Tomcat CAS tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1.9 ...
- CAS (2) —— Mac下配置CAS到Tomcat(客户端)
CAS (2) -- Mac下配置CAS到Tomcat(客户端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...
- CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)
CAS (8) -- Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端) jboss版本: jboss-eap-6.4-CVE-2015-7501 jdk版本 ...
- CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)
CAS (7) -- Mac下配置CAS 4.x集群及JPATicketRegistry(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: ...
- Tomcat (1) —— Mac下配置Tomcat Https/SSL
Tomcat (1) -- Mac下配置Tomcat Https/SSL tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 参考来源: SSL/TLS Config ...
- 【高可用HA】Nginx (1) —— Mac下配置Nginx Http负载均衡(Load Balancer)之101实例
[高可用HA]Nginx (1) -- Mac下配置Nginx Http负载均衡(Load Balancer)之101实例 nginx版本: nginx-1.9.8 参考来源: nginx.org [ ...
- 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk
Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...
- 【高可用HA】Apache (3) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_proxy
Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_proxy httpd版本: httpd-2.4.17 参考来源: Apache (1) -- Mac下安装Apac ...
随机推荐
- [Unity 3D] Unity 3D 性能优化 (一)
听到过很多用Unity 3D开发游戏的程序员抱怨引擎效率太低,资源占用太高,包括我自己在以往项目的开发中也头疼过.最近终于有了空闲,可以仔细的研究一下该如何优化Unity 3D下的游戏性能.其实国外有 ...
- android的事件分发机制理解
android的事件分发机制理解 1.事件触发主要涉及到哪些层面的哪些函数(个人理解的顺序,可能在某一层会一次回调其它函数) activity中的dispatchTouchEvent .layout中 ...
- android ScrollView--Linearlayout可以上下拖动
动态添加: [java] view plaincopy <?xml version="1.0" encoding="utf-8"?> <Scr ...
- Codeforces Round #272 (Div. 2)AK报告
A. Dreamoon and Stairs time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 使用【百度云推送】第三方SDK实现推送功能具体解释
之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员 ...
- Session 转台服务器的使用方法
Session的缺陷:为了保持自身的稳定,IIS在访问量大的时候,可能会不自觉的重启,这时候Session就会丢失用户就会被迫下线 解决方案1:将Session放到一个专门的转台服务器上 方案2:将S ...
- Delphi控件下载网
http://delphi-z.ru/index.php http://developer.team/delphi/
- 使用BAT方法结束进程
@echo off taskkill /f /im GAM.exe taskkill /f /im GCL10.exe http://www.cnblogs.com/FKdelphi/p/501540 ...
- php导出excel数据
提供两种导出excel方法 1 最简单的导出excel header('Content-Type: application/vnd.ms-excel'); //设置文件类型 也可以将 vnd.ms ...
- Qt多工程多目录的编译案例
源地址:http://blog.csdn.net/libaineu2004/article/details/23625441 写这篇文章的目的是为了让Qt像VC++那样,支持一个工程包含多个项目.即1 ...