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

本文涉及的产品
.cn 域名,1个 12个月
简介: 来自我的个人网站:http://lkf.22web.org/ cas介绍: CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

来自我的个人网站:http://lkf.22web.org/

cas介绍:

CAS 是 Yale 大学发起的一个开源项目,旨在为 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 Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 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、Tomcat启动成功后,使用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


img_42a4adae4716d0e15c3eeaabfd040044.png

注:转载需注明出处及作者。

流柯      

目录
相关文章
|
18天前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
30 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
16天前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
31 1
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
8天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
16天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
35 6
|
19天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
33 4
|
21天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
46 4
|
28天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
26天前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
52 3
|
21天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
26天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。