CAS客户端服务器端配置步骤

来源我的私有网站:http://lkf.22web.org/

cas介绍:

CAS 是 耶尔 大学倡导的一个开源项目,意在为 Web
应用系列提供一种保险的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG
的一个项目。CAS 具有以下特征:

  • 开源的公司级单点登录解决方案。
  • CAS Server 为需要单独布置的 Web 应用。
  • 支撑特别多的客户端(这里指单点登录体系中的各种 Web 应用),包括 Java,
    .Net, PHP, Perl, Apache, uPortal, Ruby 等。

CAS 原理和协议

从布局上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server
需要独自布置,重要负责对用户的印证工作;CAS Client
负责处理对客户端受体贴资源的走访请求,需要登录时,重定向到 CAS
Server。图1 是 CAS 最基本的情商进程:
图 1. CAS 基础协议

CAS Client 与受保障的客户端应用部署在联名,以 Filter
情势维护受保障的资源。对于访问受保障资源的每个 Web 请求,CAS Client
会分析该请求的 Http 请求中是不是含有 瑟维斯(Service)(Service)Ticket,倘使没有,则证实当前用户没有登录,于是将呼吁重定向到指定好的 CAS
Server 登录地址,并传递 瑟维斯(Service)(也就是要拜访的目标资源地址),以便登录成功之后退回该地方。用户在第 3
步中输入认证新闻,固然登录成功,CAS Server
随机爆发一个一定长度、唯一、不可伪造的 Service(Service)Ticket,并缓存以待将来验证,之后系统活动重定向到 Service(Service)所在地点,并为客户端浏览器设置一个 Ticket 格兰特ed Cookie(TGC),CAS
Client 在获得 瑟维斯(Service)(Service) 和新暴发的 Ticket 过后,在第 5,6 步中与 CAS
Server 举行身份合适,以保证 瑟维斯(Service) Ticket 的合法性。

在该协议中,所有与 CAS 的相互均使用 SSL 协议,确保,ST 和 TGC
的安全性。协议工作经过中会有 2 次重定向的长河,但是 CAS Client 与 CAS
Server 之间开展 Ticket 验证的过程对于用户是晶莹剔透的。

除此以外,CAS 协议中还提供了 Proxy
(代理)形式,以适应更加高档、复杂的运用场景,具体介绍可以参考 CAS
官方网站上的有关文档。

CAS服务器端配置

安排服务器环境

第一下载必须的软件:

Tomcat6.0: http://tomcat.apache.org/download-60.cgi
Windows Service Installer

Jdk: http://java.sun.com/javase/downloads/index.jsp
你可以挑选带有 jre 的安装文件或者您机器里现在有 jre 环境则只需要下载
JDK.
Java SE 6 Update 10 Beta  (不带JRE)
JDK 6 Update 6 (带JRE)
Java Runtime Environment (JRE) 6 Update 6 (JRE)

下面按步骤来:
1.安装JDK和JRE
一向下一步到安装完成,记住JDK安装的门路。

2.装置JDK相关的环境变量
1).切换来桌面,右键点击“我的处理器” -> 属性 -> 高级 -> 如图
建立一个 JAVA_HOME 环境变量,变量值为JDK的根目录。

2).和方面一样的操作,建立 环境变量 CLASSPATH,值为
“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar”

3).如故操作环境变量但不是新建,而是编辑。编辑 Path
变量,最变量值最后面丰盛 ;%JAVA_HOME%\bin;

3.安装Tomcat
1).一贯下一步,中间需要接纳安装路径和 JVM
目录,如若JDK和JRE安装没问题,这里他应该能自动找得到,否则需要您手动指定一下。
中间怎么也不用管,有一部让你设置端口,不用动,保持默认的就行了。

2).新增一个 CATALINA_HOME 环境变量,变量值为您TOMCAT安装时的根目录。

3.测试运行服务器

安装后的bin目录共有一下多少个公文:
bootstrap.jar
tomcat-juli.jar
tomcat6.exe
tomcat6w.exe
其间tomcat6w.exe是督查tomcat运行的,可以直接运行,或者收缩到屏幕右下角成为一个小图标。
直白运行tomcat6w.exe或者“tomcat6w //ES//” 都可以进入监控配置窗口;
抑或运行“tomcat6w //MS//”把它收缩到右下角。

也可用startup.bat和shutdown.bat 来启动和倒闭服务。
web访问测试
先河后,可以透过浏览器举办走访,测试运行是否正常。
用IE或者Firefox等浏览器,输入地方:
http://localhost:8080/      
–假如设置时修改了端口,请把8080用修改后的值替换。
假诺可以健康浏览到tomcat欢迎音信,就是正确了,否则就要检查装置是否科学、防火墙的设置等。
时不时遇上的一个题材是端口争执,最普遍的就是80端口被占用,导致服务不可能正常启动。假如因而tomcat6
//TS//tomcat6来启动,立时就可知发现指示消息。修改一下tomcat6\conf\server.xml中的端口就可以解决。

常见选拔80端口的有:
1.
IIS服务器,因为在windows服务器上,很多都设置了IIS,而IIS默认的端口就是80.
2.
skype即时聊天工具,skype的可以穿透防火墙的本领,也是透过占据80端口实现的。

查阅端口占用的命令:
进入windows命令行,输入:
netstat -an
以此命令归来有4列:protocol协议、local address本机地址、foreign
address来访者地址、status状态
浏览本机地址一列,可以见见眼前主机对外劳务的IP地址、端口都有哪些。
倘若一台机械有192.168.1.100和192.168.1.101两个地点,那么:
0.0.0.0:80代表这台机器上拥有80端口都被应用
127.0.0.1:80表示127.0.0.1的80被选取,但.100和.101IP地址的80还未利用。
192.168.1.100:80表示.100IP地址的80端口被使用
192.168.1.101:80表示.101IP地址的80端口被利用

 

 

 

部署 CAS Server

CAS Server 是一套基于 Java 实现的劳务,该服务以一个 Java Web Application
单独安排在与 servlet2.3 兼容的 Web 服务器上,此外,由于 Client 与 CAS
Server 之间的彼此使用 Https 协议,由此部署 CAS Server 的服务器还亟需辅助SSL 合计。当 SSL 配置成功过后,像一般 Web 应用相同将 CAS Server
部署在服务器上就能正常运作了,不过,在真的使用此前,还需要扩展验证用户的接口。

 

Tomcat配置HTTPS方式

 

1、开始-〉运行-〉cmd 进入到jdk下的bin目录

2、输入如下指令

keytool -v -genkey -alias tomcat -keyalg RSA -keystore
d:/tomcat.keystore  -validity 36500

附:

d:/tomcat.keystore是将转移的tomcat.keystore放到d盘根目录下。

“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天

只顾若要放到c盘,在win7系统下,需要以管理员身份进入到命令行中举办操作,否则是力不从心成立tomcat.keystore的。本例放到d盘下。
何以以管理人身份进入到命令行下呢?开首->搜索框中输入cmd->等待(注意不回车)->出现cmd.exe->右键“以管理员身份运行”即可。

3、输入keystore密码

密码任意,此处以123456为例,要切记这一个密码,之后在开展server.xml配置时需要采纳。

4、输入名字、协会单位、社团、市、省、国家等音信

注意事项:

A、Enter keystore password:此处需要输入大于6个字符的字符串

B、“What is your first and last
name?”这是必填项,并且必须是TOMCAT部署主机的域名仍然IP[如:gbcom.com 或者 10.1.25.251],就是您将来要在浏览器中输入的造访地址

C、“What is the name of your organizational unit?”、“What is the name of
your organization?”、“What is the name of your City or Locality?”、“What
is the name of your State or Province?”、“What is the two-letter country
code for this
unit?”可以坚守需要填写也足以不填写直接回车,在系统通晓“correct?”时,对照输入音信,如若符合要求则选拔键盘输入字母“y”,否则输入“n”重新填写下面的音讯

D、Enter key password for
<tomcat>,这项较为紧要,会在tomcat配置文件中动用,指出输入与keystore的密码一致,设置任何密码也得以

l  完成上述输入后,直接回车则在你在第二步中定义的职务找到变化的文件

5、输入之后会油不过生确认的升迁

这时输入y,并回车。此时成立完成keystore。
进去到D盘根目录下得以见到已经变化的tomcat.xml

6、进入tomcat文件夹
找到conf目录下的sever.xml并拓展编辑

7、编辑
  <Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false”
keystoreFile=”D:/AppServer/Tomcat/apache-tomcat-6.0.32/conf/tomcat.keystore”
keystorePass=”deleiguo” sslProtocol=”TLS” />
注:
正方中的keystore的密码,就是刚刚我们设置的“123456”.

编写完成后关闭并保留sever.xml

8、汤姆(Tom)cat启动成功后,使用https://127.0.0.1:8443 访问页面

页面成功开拓即tomcat下的https配置成功。

 

9、注意事项:

(1)    生成证书的年月,假设IE客户端所在机器的岁月早于证书生效时间,或者晚于有效时间,IE会指示“该安全讲明已到期或还未见效”

(2)    假使IE提醒“安全证书上的名目无效或者与站点名称不般配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是何等?”/“What
is your first and last name?”不得法引起的

 

10、遗留问题:

(1)假使AC主机无法透过域名查找,必须使用IP,不过那个IP只有在布局后才能确定,这样证书就亟须在AC确定IP地址后才能生成

(2)证书文件只好绑定一个IP地址,倘诺有10.1.25.250 和 192.168.1.250 两个IP地址,在讲明生成文书时,如拔取了10.1.25.250,通过IE就只能采纳10.1.25.250 来走访AC-WEB,192.168.1.250是不能访问AC-WEB的。

 

 

配置CAS
  1. 下载cas 
    http://www.ja-sig.org/downloads/cas/cas-server-3.4.2-release.zip
  2. 设置cas-server,我们假如安装cas-server的服务器为server1

(1)     将cas-server-3.4.2-release.zip
解压,将moudels目录下cas-server-webapp-x.x.war拷贝到tomcat的webapps目录下,修        改名称为cas.war.

(2)     生成server1的平安证书:

keytool -export -alias tomcat -file D:/file.cer -keystore
d:/tomcat.keystore -validity 36500

下一场输入d:/tomcat.keystore中的keystore密码

-file D:/file.cer 即为生成的cer文件,可一直点击安装

(3)     重新开动server1上的tomcat,检验cas配置是否中标,访问https://ip或域名:8443/cas/login,如若能看出cas的记名页面则意味着配置成功。

cas客户端配置

1、准备CAS的PHP库和相关库文件

1)下载 cas php客户端
http://downloads.jasig.org/cas-clients/php/current/CAS-1.3.1.tgz

2) 由于其用到了PEAR的DB库,需要下载

http://pear.php.net/get/PEAR-1.7.1.tgz

http://pear.php.net/get/DB-1.7.13.tgz

当然不自然是自己说的版本,但自身给的是自家试验成功的版本。

3)
用于采纳到了SSL所以需要下载openssl。当然我是在windows环境下考查的,下载的windows版本。

4)安装openssl。

2、配置PHP环境

1)将CAS-1.3.1.tgz、PEAR-1.7.1.tgz、DB-1.7.13.tgz放在同一个目录如图。

4)由于phpcas用到了CURL(用于连接ssl),因而需要确保php解释环境需要有这一个扩充。需要做的就是修改ini文件将extentions节下的遮挡符号去掉,然后就是检查PHP环境的extentions目录下是否有相应的.dll。一般标准设置都会有。

3、测试CAS的php客户端

1)在CAS-1.3.1.tgz中的docs/examples文件夹拷贝到网站的根目录下。

2)config.example.php 修改为config.php

3)打开config.php 举办修改

4)访问 localhost:8080/examples/example_simple.php  (客户端的位置)

会跳转到CAS服务器登录页面。默认只要用户名和密码相同就可以透过认证。

 

登陆成功后会中转到客户端。指示验证成功。

 

其他客户端的配备按上述步骤配置。即可兑现单点。

 

 

 

 

 

 

 

 

 

进阶

CAS服务端使用数据库验证用户
创建表

create table t_user(
username varchar(200) primary key,
password varchar(200)
);
insertinto users(username,password) values(‘test’,’123′);

添加jar

将数据库驱动包:mysql-connector-java-5.1.5-bin.jar
cas-server-support-jdbc-3.x.x.jar(来自于\cas-server-3.4.2\modules)
copy到cas/WEB-INF/lib/下

始建验证service层

创建LoginDAO

public class LoginDAO extends JdbcDaoSupport {

public List queryList(String sql,Object[] objs){
return this.getJdbcTemplate().queryForList(sql, objs);
}
}

创建LoginService

public class LoginService {

private LoginDAO loginDAO;

/**
* 判断用户登录音信
* @param username
* @param password
* @return null为用户不设有,false密码错误,true登录成功
*/
public Boolean isUserCorrect(String username,String password){
String sql = “select password from t_user where username=?”;

List results = loginDAO.queryList(sql, new Object[]{username});
if(results==null||results.size()==0){
return null;
}else
if(password.equals(((Map)results.get(0)).get(“password”).toString())){
return new Boolean(true);
}else{
return new Boolean(false);
}
}

public LoginDAO getLoginDAO() {
return loginDAO;
}

public void setLoginDAO(LoginDAO loginDAO) {
this.loginDAO = loginDAO;
}
}

重写验证类

//重写AbstractUsernamePasswordAuthenticationHandler中验证方法authenticateUsernamePasswordInternal
public class UserAuthenticationHandler extends
AbstractUsernamePasswordAuthenticationHandler {

private LoginService loginService;

@Override
protected boolean authenticateUsernamePasswordInternal(
UsernamePasswordCredentials credentials) throws AuthenticationException
{
String username = credentials.getUsername();
String password = credentials.getPassword();
Boolean result = loginService.isUserCorrect(username, password);
if(result==null){
//用户不存在,”error.authentication.credentials.bad.usernameorpassword.username”必须在message配置文件中定义,验证失利时会在登录页面显示信息
throw new
BadPasswordAuthenticationException(“error.authentication.credentials.bad.usernameorpassword.username”);
}else if(!result.booleanValue()){
//密码错误
throw new
BadPasswordAuthenticationException(“error.authentication.credentials.bad.usernameorpassword.password”);
}else{
//登录成功
return true;
}

}

public LoginService getLoginService() {
return loginService;
}

public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}

}

概念错误音讯

在messages_zh_CN.properties中添加验证出错信息

error.authentication.credentials.bad.usernameorpassword.username=用户不存在

error.authentication.credentials.bad.usernameorpassword.password=密码错误

配置WEB-INF\deployerConfigContext.xml文件

<!– 在添加DataSource –>
<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/test</value>
</property>
<property name=”username”>
<value>root</value>
</property>
<property name=”password”>
<value>root</value>
</property>
</bean>

<!– 注入Service和DAO –>
<bean name=”jdbcTemplate”
class=”org.springframework.jdbc.core.JdbcTemplate”>
<property name=”dataSource” ref=”dataSource”></property>
</bean>

<bean name=”loginDAO” class=”com.cas.dao.LoginDAO”>
<property name=”jdbcTemplate”
ref=”jdbcTemplate”></property>
</bean>

<bean name=”loginService” class=”com.cas.service.LoginService”>
<property name=”loginDAO” ref=”loginDAO”></property>
</bean>

<!–
找到SimpleTestUsernamePasswordAuthenticationHandler的bean,将它注释掉,添加上边的bean
–>
<bean class=”com.cas.authentication.UserAuthenticationHandler” >
<property name=”loginService”
ref=”loginService”></property>
</bean>启动tomcat,测试登录.(假如是选择war在tomcat解压的服务端,必须将下边类的编译完的class文件,包,信息配置文件复制到WEB-INF\classes下)

正文来源 南柯一梦的小站,转载时请阐明出处及相应链接。

本文永久链接: http://lkf.22web.org/?p=5

相关文章