`
Kenny.Lee
  • 浏览: 514524 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Yale CAS Server的部署及cas-java-client 3.2的应用

    博客分类:
  • SSO
阅读更多
环境:
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。
  • web.rar (2.8 KB)
  • 下载次数: 101
1
0
分享到:
评论
4 楼 Kenny.Lee 2011-04-18  
xiaobai1023 写道
引用
No subject alternative names present
关于这个问题的答案可以参见官方网站的一段描述:
引用
It should be noted that generating a certificate with an IP address for a common name, e.g. CN=192.168.1.1,OU=Middleware,dc=vt,dc=edu, will not work in most cases where the client making the connection is Java. For example the Java CAS client will throw SSL errors on connecting to a CAS server secured with a certificate containing an IP address in the CN.


全文地址为 https://wiki.jasig.org/display/CASUM/SSL+Troubleshooting+and+Reference+Guide


谢,不过之前找到这篇文章了。
3 楼 xiaobai1023 2011-04-18  
引用
No subject alternative names present
关于这个问题的答案可以参见官方网站的一段描述:
引用
It should be noted that generating a certificate with an IP address for a common name, e.g. CN=192.168.1.1,OU=Middleware,dc=vt,dc=edu, will not work in most cases where the client making the connection is Java. For example the Java CAS client will throw SSL errors on connecting to a CAS server secured with a certificate containing an IP address in the CN.


全文地址为 https://wiki.jasig.org/display/CASUM/SSL+Troubleshooting+and+Reference+Guide
2 楼 Kenny.Lee 2011-01-10  
lasacasa 写道
请问这句 “其中记得depends jakarta-logging.jar ” 是啥意思?

把依赖包jakarta的commos-logging.jar一并导入。
1 楼 lasacasa 2011-01-10  
请问这句 “其中记得depends jakarta-logging.jar ” 是啥意思?

相关推荐

    Yale CAS SSO JAVA Client

    3. `entry.jsp`:这是一个JSP(JavaServer Pages)文件,通常作为应用程序的入口点,用户首次访问应用时会被重定向至此页面进行CAS认证。在这里,客户端会检测是否已存在有效的CAS服务票证,如果没有,则会引导用户...

    cas-client-3.3.3-release和cas-server-4.2.1-release下载

    - `cas-client-support`: 提供与CAS服务器通信所需的库和配置,如Java过滤器(`CasAuthenticationFilter`)来处理票证验证。 - `cas-client-integration`: 集成示例和指南,帮助开发者将CAS集成到他们的应用中。 ...

    cas-client-2.0.11.zip_cas client_cas-clie_cas-client-2._java CAS

    5. **集成应用**:将CAS客户端集成到Java应用中,通常需要修改Web应用的web.xml配置,添加CAS过滤器和监听器,确保在用户访问受保护的页面时能够触发SSO流程。 6. **安全性**:CAS客户端提供了一种安全的身份验证...

    cas-client-3.1.12-release.zip

    CAS 客户端的安装通常涉及将相关的JAR文件添加到项目的类路径中,并配置相应的服务器端XML配置文件,如 `cas-client-support-spring.xml` 或者 `web.xml`。3.1.12版本可能会提供更简洁的配置选项和更好的兼容性,以...

    耶鲁CasServer单点登录教程

    1. 安装和配置Java环境,因为CAS Server是基于Java构建的。 2. 确定和配置应用服务器,如Tomcat或WebLogic,它们将承载CAS Server应用。 3. 准备数据库,如MySQL或Oracle,用于存储用户认证信息和CAS的元数据。 四...

    cas 配置client 1.0 &2.0 及proxy DEMO 说明

    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

    【标题】"cas-server-webapp-4.2.4.war" 是一个基于Java的单点登录(Single Sign-On, SSO)服务器的应用程序包,主要用于实现统一的身份验证和访问控制。这个war文件是Web应用程序的归档格式,通常由Apache Tomcat...

    edu.yale.its.tp.cas.client.IContextInit修复工具.rar

    软件介绍: ...下载后先解压,然后将sso-client-java-7.0.8.jar文件复制到lib里面,鼠标单击右键在属性一栏的弹出框内添加该jar包即可解决解决普元EOS报错问题:edu.yale.its.tp.cas.client.IContextInit 

    Yale CAS实现单点登陆的客户端和服务端源码

    Yale CAS实现单点登陆的客户端源码和服务端源码,客户端cas-client-3.1.10代码和cas-server-3.4.2.1代码

    java-cas单点登录服务端

    单点登录(Single Sign On , 简称 SSO )...CAS Server 为需要独立部署的 Web 应用。 CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

    Yale CAS SSO DotNet Client

    "Yale CAS SSO DotNet Client" 是一个专为.NET框架设计的客户端库,用于集成耶鲁大学(Yale)的中央认证服务(Central Authentication Service, CAS)。CAS是一种开源的身份验证协议,它允许用户通过单一登录...

    实现SSO的CAS开源框架介绍

    对于Java项目,可以从下载的`cas-client-2.0.11.zip`中提取`casclient.jar`并放置到项目的`lib`目录下。 - 接下来,需要在客户端的应用程序中配置CAS Filter来实现SSO功能。以一个简单的Servlet为例,在其`web.xml`...

    CAS-SERVER.zip

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS 具有以下特点: 【1】开源的企业级单点登录解决方案。 【2】CAS ...

    CAS讲义SSO (Single Sign-on)原理等

    CAS(Central Authentication Service)是Yale大学发起的一个Java开源项目,用于构建Web SSO。CAS的结构体系由两部分组成:CAS Server和CAS Client。CAS Server负责用户认证,处理用户的凭证,如用户名和密码。CAS ...

    cas3.5.2单点登录文档详细配置

    1. 下载并解压cas-server-3.5.2和cas-client-3.2.1。 2. 配置CAS Server,包括修改配置文件、部署CAS应用到Tomcat服务器。 3. 配置CAS Client,这可能涉及修改web.xml文件,引入CAS客户端库,并配置客户端的信任CAS ...

    cas单点登录原理以及例子的搭建和实现

    而CAS Client则部署在客户端,对本地Web应用的受保护资源进行保护,当检测到未认证的用户请求时,会重定向用户至CAS Server进行身份验证。 CAS协议的基本流程如下:首先,CAS Client通过过滤器保护Web应用资源,...

    在Tomcat中使用Yale CAS实现单点登陆(SSO)

    这两个包可以从官方提供的链接获取,分别是cas-server-2.0.12.zip和cas-client-2.0.11.zip。解压缩CAS服务器的war文件(cas.war)并将其部署到Tomcat的webapps目录下。如果访问http://localhost:8080/cas/login看到...

Global site tag (gtag.js) - Google Analytics