环境:
tomcat7.05
cas-server-3.4.5
cas-client-3.2.0
一 . 证书实践
1.生成keystore
keytool -genkey -alias cas -keypass changeit -storepass changeit -keyalg RSA -validity 3600 -dname "CN=
localhost, OU=KENNY, O=KENNY" -keystore cas.keystore
注意CN的填写,必须是访问的域名。因为是SSL,所以对域名要求比较严格。
2.查看当前JRE的keystore,输出到t.txt中
keytool -list -v -keystore %java_home%/jre/lib/security/cacerts > t.txt
3.删除证书
keytool -delete -alias cas -keystore %java_home%/jre/lib/security/cacerts -keypass changeit
4.导出crt
keytool -export -alias cas -keypass changeit -file cas.crt -keystore cas.keystore
5.导入证书到JRE
keytool -import -alias cas -file cas.crt -keypass changeit -keystore %java_home%/jre/lib/security/cacerts
再提醒一次:
①.生成数字证书的时候必须使用主机名或者域名作为证书名称(CN),
例如sso.example.com(CN=sso.example.com, OU=example, O=example, L=beijing, ST=beijing, C=china)
②.检查JAVA_HOME环境变量(echo $JAVA_HOME),确认tomcat使用了那一个jre(有时候一台机器上会有多个jre),需要将生成的证书文件导入至web服务器使用的那个jre的信任证书列表中,可以使用keytool -list命令检查证书是否导入成功。
二.配置tomcat使用HTTPS
把cas.keystore文件放到tomcat的conf目录下
然后打开tomcat目录下 conf/server.xml文件
查找
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
默认这一段是注释的,去掉注释符号然后修改为以下
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" keystorePass="changeit" keystoreFile="conf/cas.keystore"
maxThreads="150" scheme="https" secure="true"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100"
clientAuth="false" sslProtocol="TLS" />
启动tomcat,访问 https://localhost:8443/ 测试是否正常。
勿忘把证书导入到JRE当中,参考第一点的说明。
三.部署CAS-Server
解压CAS-server包
拷贝 modules/cas-server-webapp-VERSION.war 到tomcat下的webapps目录
若tomcat已启动会自动解压部署
访问
http://localhost:8080/cas-server/login 测试是否正常,同样可以使用https
四.测试CAS-Client,集成子系统
同样,这个跟网上的一些例子一样。拿tomcat webapps目录下的examples为子系统做例子。
原理很简单,examples项目原来不用登陆的,现在需加上统一验证。最简单的方法当然就是加一个filter,跟普遍应用中的权限功能差不多,并且耦合度低。所有请求都拦截下来先去filter里面处理验证权限信息,若原系统已经有权限系统的话,做的就是跟CAS-SERVER交互后获取子系统中客户端账号的权限到上下文中。
首先把cas-client-core.jar导入项目的lib中,其中记得把依赖包jakarta commos-logging.jar一并导入。
打开web.xml
添加如下filter的配置
<!-- CAS configure Begin -->
<filter>
<filter-name>CasSingleSignOutFilter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CasSingleSignOutFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
<filter-name>CasAuthenticationFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://localhost:8443/cas-server/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://localhost:8443</param-value>
</init-param>
<init-param>
<param-name>renew</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CasAuthenticationFilter</filter-name>
<!-- 过滤器保护的URL,如果能访问这个保护的URL,表示经过CAS验证,可以做获取权限的操作。-->
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CasValidationFilter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://localhost:8443/cas-server/</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://localhost:8443</param-value>
</init-param>
<init-param>
<param-name>redirectAfterValidation</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CasValidationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CasHttpServletRequestWrapperFilter</filter-name>
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CasHttpServletRequestWrapperFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- CAS configure End -->
其中注意红色的域名,由于证书生成的时的域名不同,将影响到这里跳转登录是否能访问子系统。
后记:
1、发生了不少次"No subject alternative names present"的问题。几个月前试过把client源码中触发的代码改掉,暂时不进行验证,因为想着调试的关系才出现的问题,现在想起都好笑。经测试后发现创建证书时,域名用127.0.0.1是不行的,就算web.xml里面匹配了127.0.0.1同样报错,而用localhost的话就正常。
2、CAS filter的配置改动比较大,之前学的和网上大多例子都沿用2.1版本的client及server,还一大堆写着edu.yale的classes。就连官网的wiki也一样是2.1版本的demo,还好依葫芦画瓢看到官网上有其他新的3.1配置参考。
附件说明:
web.rar为tomcat中examples项目中的web.xml文件,加入了CAS filter。
server.rar为tomcat/conf目录下的server.xml文件,参考配置SSL。
分享到:
相关推荐
3. `entry.jsp`:这是一个JSP(JavaServer Pages)文件,通常作为应用程序的入口点,用户首次访问应用时会被重定向至此页面进行CAS认证。在这里,客户端会检测是否已存在有效的CAS服务票证,如果没有,则会引导用户...
- `cas-client-support`: 提供与CAS服务器通信所需的库和配置,如Java过滤器(`CasAuthenticationFilter`)来处理票证验证。 - `cas-client-integration`: 集成示例和指南,帮助开发者将CAS集成到他们的应用中。 ...
5. **集成应用**:将CAS客户端集成到Java应用中,通常需要修改Web应用的web.xml配置,添加CAS过滤器和监听器,确保在用户访问受保护的页面时能够触发SSO流程。 6. **安全性**:CAS客户端提供了一种安全的身份验证...
CAS 客户端的安装通常涉及将相关的JAR文件添加到项目的类路径中,并配置相应的服务器端XML配置文件,如 `cas-client-support-spring.xml` 或者 `web.xml`。3.1.12版本可能会提供更简洁的配置选项和更好的兼容性,以...
1. 安装和配置Java环境,因为CAS Server是基于Java构建的。 2. 确定和配置应用服务器,如Tomcat或WebLogic,它们将承载CAS Server应用。 3. 准备数据库,如MySQL或Oracle,用于存储用户认证信息和CAS的元数据。 四...
cas 配置client 1.0 &2.0 及proxy DEMO 说明 1 cas server 搭建 1.1 资源准备 cas server 下载 http://www.ja-sig.org/downloads/cas/cas-server-3.3.1-release.zip 1.2 解压后打开cas-server-3.3.1-release\cas-...
【标题】"cas-server-webapp-4.2.4.war" 是一个基于Java的单点登录(Single Sign-On, SSO)服务器的应用程序包,主要用于实现统一的身份验证和访问控制。这个war文件是Web应用程序的归档格式,通常由Apache Tomcat...
软件介绍: ...下载后先解压,然后将sso-client-java-7.0.8.jar文件复制到lib里面,鼠标单击右键在属性一栏的弹出框内添加该jar包即可解决解决普元EOS报错问题:edu.yale.its.tp.cas.client.IContextInit
Yale CAS实现单点登陆的客户端源码和服务端源码,客户端cas-client-3.1.10代码和cas-server-3.4.2.1代码
单点登录(Single Sign On , 简称 SSO )...CAS Server 为需要独立部署的 Web 应用。 CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
"Yale CAS SSO DotNet Client" 是一个专为.NET框架设计的客户端库,用于集成耶鲁大学(Yale)的中央认证服务(Central Authentication Service, CAS)。CAS是一种开源的身份验证协议,它允许用户通过单一登录...
对于Java项目,可以从下载的`cas-client-2.0.11.zip`中提取`casclient.jar`并放置到项目的`lib`目录下。 - 接下来,需要在客户端的应用程序中配置CAS Filter来实现SSO功能。以一个简单的Servlet为例,在其`web.xml`...
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS 具有以下特点: 【1】开源的企业级单点登录解决方案。 【2】CAS ...
CAS(Central Authentication Service)是Yale大学发起的一个Java开源项目,用于构建Web SSO。CAS的结构体系由两部分组成:CAS Server和CAS Client。CAS Server负责用户认证,处理用户的凭证,如用户名和密码。CAS ...
1. 下载并解压cas-server-3.5.2和cas-client-3.2.1。 2. 配置CAS Server,包括修改配置文件、部署CAS应用到Tomcat服务器。 3. 配置CAS Client,这可能涉及修改web.xml文件,引入CAS客户端库,并配置客户端的信任CAS ...
而CAS Client则部署在客户端,对本地Web应用的受保护资源进行保护,当检测到未认证的用户请求时,会重定向用户至CAS Server进行身份验证。 CAS协议的基本流程如下:首先,CAS Client通过过滤器保护Web应用资源,...
这两个包可以从官方提供的链接获取,分别是cas-server-2.0.12.zip和cas-client-2.0.11.zip。解压缩CAS服务器的war文件(cas.war)并将其部署到Tomcat的webapps目录下。如果访问http://localhost:8080/cas/login看到...