- 浏览: 466001 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (111)
- 数据库 (8)
- java (24)
- BI (1)
- tomcat (3)
- javascript/css (8)
- 服务架构 (1)
- mule (6)
- cas (4)
- mondrian (4)
- webservice (1)
- SOA (3)
- Lucene/HibernateSearch (2)
- Linux (15)
- 操作系统 (3)
- hibernate (2)
- jbpm (1)
- apache (1)
- phpstudy (1)
- hadoop (27)
- hive (7)
- hbase (8)
- svn (1)
- eclipse (3)
- mahout (1)
- mail (1)
- oracle (1)
- mysql (4)
- axis2 (1)
- python (2)
- kafka (1)
- lucene (1)
- nutch (1)
- spark (2)
- idea (2)
- flume (0)
- ubuntu (1)
- pheonix (2)
- drill (2)
- tez (4)
- pig (1)
- tensorflow (1)
最新评论
-
zhangyou1010:
zhangyou1010 写道请教,我执行mount -t n ...
NFS挂载hdfs到本地 -
zhangyou1010:
请教,我执行mount -t nfs -o vers=3,pr ...
NFS挂载hdfs到本地 -
hengfengyiyingdong:
为什么我查出来的hbase数据都是base64编码的? 我保存 ...
apache drill 0.8.0 单机/分布式安装测试 -
107x:
不错,谢谢!
Hive metastore三种存储方式 -
duguyiren3476:
确实不怎么快,httpfs的上传你可以理解为普通的httpup ...
hadoop2.5.2配置httpfs服务
Yale CAS最佳实践 第一部分:配置篇
1.环境准备
Jdk1.4.2
Tomcat5.0.28
cas-server-2.0.12(没有采用更高版本,是因为它最简单明了)
cas-client-java-2.1.1
2.在jdk上配置SSL
到http://java.sun.com/products/jsse/去下载jsse,我用的是1.0.3;下载下来后是一个zip包,把里
边lib目录下的jar包复制到你的jdk目录下的jre\lib\ext目录中,是三个文件:jsse.jar;jnet.jar;jcert.jar
3.SSL验证证书
3.1.生成
keytool -genkey -alias tomcat -keyalg RSA
? 如果C:\Documents and Settings\Administrator\.keystore已经存在,请先删除。
? 输入tomcat本身的缺省口令changeit
? 用户前名和用户后名都用localhost
keytool -export -alias tomcat -file server.crt
只能输入tomcat的缺省口令changeit
keytool -import -trustcacerts -alias tomcat -file server.crt -keystore %java_home%/jre/lib/security/cacerts
3.2.显示
keytool -list -v -keystore %java_home%/jre/lib/security/cacerts > t.txt
3.3.删除
keytool -delete -alias tomcat -keystore %java_home%/jre/lib/security/cacerts -keypass changeit
只能输入tomcat的缺省口令changeit
3.4.keytool参考
%JAVA_HOME%\bin\keytool -delete -alias tomcat -keypass changeit
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA
%JAVA_HOME%\bin\keytool -export -alias tomcat -keypass changeit -file %FILE_NAME%
%JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit
-keystore %JAVA_HOME%/jre/lib/security/cacerts
%JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -validity 365
4.Tomcat配置
4.1.拷贝
拷贝C:\Documents and Settings\Administrator\.keystore到%tomcat_home%\conf\
4.2.配置
编辑%tomcat_home%\conf\server.xml,去掉ssl的注释,并更改为如下配置
<Connector port="8443" keystorePass="changeit" keystoreFile="conf/.keystore"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
4.3.注意
请保持C:\Documents and Settings\Administrator\.keystore与%tomcat_home%\conf\.keystore一致
5.Tomcat jmx bug
在sun网站上http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/download.jsp
下载jmx-1_2_1-ri.zip,解压后,把jmxri.jar重命名为jmx.jar,覆盖tomcat/bin目录下的jmx.jar
这个适用于cas-server-3.*
Yale CAS最佳实践 第二部分:原理篇
6.概念术语
CAS(Central Authentication Service)
TGT(Ticket Granting Ticket)
ST(Service Ticket)
PGT(Proxy Granting Ticket)
7.原理剖析
Yale CAS使用了Ticket Granting Cookie (简称TGC)去作为获取Service
Ticket(简称ST)的凭据,这个TGC 是保存在客户端的cookie,即当第2次被其他CAS Client重定向的时候,CAS
Server实际上已经从用户的Cookie中抓取到TGC,然后知道TGC对应的用户,因此避免了再次登录,如果CAS
Server抓取不到TGC,则用户需要登陆。
众所周知,cookie是不能跨域的。但是CAS能够做abc.com和xyz.com的sso,因为CAS Server缓存了所有的ticket,所以Client无需共享cookies。
Yale CAS最佳实践 第三部分:源代码研读
8.源代码研读
8.1.web.xml参数定义:
edu.yale.its.tp.cas.client.filter.loginUrl: CAS server的login URL. (Required)
edu.yale.its.tp.cas.client.filter.validateUrl: CAS server的URL验证器. (Required)
edu.yale.its.tp.cas.client.filter.serviceUrl: URL of this service. (Required if serverName is not specified)
edu.yale.its.tp.cas.client.filter.serverName: 主机名:端口号
edu.yale.its.tp.cas.client.filter.authorizedProxy: 身份验证代理,用空格隔开.必须有一个. (缺省,只接受ST,不接受PT)
edu.yale.its.tp.cas.client.filter.proxyCallbackUrl: 本地代理回调监听器,用来接受PGT/PGTIOU. (可选)
edu.yale.its.tp.cas.client.filter.renew: 是否重新登录参数(缺省为false)
edu.yale.its.tp.cas.client.filter.gateway: 是否使用网关......虽然英文不难明白,但的确不懂到底有什么用,因而不敢断章取义,望哪位高手能补充一下,在此谢过
edu.yale.its.tp.cas.client.filter.wrapRequest:
封装了HttpServletRequest,重载了getRemoteUser()方法. 如果设置为"true",
request.getRemoteUser()将返回登录用户名.(可选的,缺省为false.)
8.2.总体结构图
8.3.client源代码研读
8.4.server源代码研读
Yale CAS最佳实践 第四部分:试试身手
1.测试类
我写了一个RequestInfoServlet,可以显示HttpRequest的绝大部分有用信息,经过sso后,可以查看 HttpRequest里面还有什么东西。呵呵,我喜欢这样干。
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.Enumeration;
- import javax.servlet.ServletException;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- /**
- * @author Liujj Date 2006-12-19 <br>
- * Description: <br>
- * RequestHeadersServlet
- */
- public class RequestInfoServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- response.setContentType("text/html" );
- PrintWriter out = response.getWriter();
- //header
- Enumeration headerNames = request.getHeaderNames();
- out.println("<B>*********[1].begin print headerNames************</B><p>" );
- while (headerNames.hasMoreElements()) {
- String name = (String) headerNames.nextElement();
- String value = request.getHeader(name);
- out.println(name + " = " + value + "<p>" );
- }
- out.println("<B>*********[1].end print headerNames************</B><p><p>" );
- //attributeNames
- out.println("<B>*********[2].begin print attributeNames************</B><p>" );
- Enumeration attributeNames = request.getAttributeNames();
- while (attributeNames.hasMoreElements()) {
- String name = (String) attributeNames.nextElement();
- String value = (String)request.getAttribute(name);
- out.println(name + " = " + value + "<p>" );
- }
- out.println("<B>*********[2].end print attributeNames************</B><p><p>" );
- //parameterNames
- out.println("<B>*********[3].begin print parameterNames************</B><p>" );
- Enumeration parameterNames = request.getParameterNames();
- while (parameterNames.hasMoreElements()) {
- String name = (String) parameterNames.nextElement();
- String value = request.getParameter(name);
- out.println(name + " = " + value + "<p>" );
- }
- out.println("<B>*********[3].end print parameterNames************</B><p><p>" );
- //session
- out.println("<B>*********[4].begin print session AttributeNames************</B><p>" );
- HttpSession session = request.getSession();
- Enumeration sAttributeNames = session.getAttributeNames();
- while (sAttributeNames.hasMoreElements()) {
- String name = (String) sAttributeNames.nextElement();
- Object value = session.getAttribute(name);
- out.println(name + " = " + value + "<p>" );
- }
- out.println("<B>*********[4].end print session attributeNames************</B><p><p>" );
- //cookie
- out.println("<B>*********[4].begin print Cookie************</B><p><p>" );
- Cookie[] cookie = request.getCookies();
- for ( int i= 0 ; i< cookie.length; i++) {
- String name = cookie[i].getName();
- String value = cookie[i].getValue();
- out.println(name + " = " + value + "<p>" );
- }
- out.println("<B>*********[4].end print Cookie************</B><p><p>" );
- }
-
}
转
发表评论
-
java转换音频视频
2014-01-08 15:10 2375感谢:http://tj007-bo.iteye.com/b ... -
jconsole监控tomcat
2013-12-12 12:32 1182Server端对tomcat启动脚本配置如下参数: 编辑${ ... -
StringUtils详细介绍
2013-04-12 16:49 1396StringUtils详细介绍 ... -
javamail的smtp方式发送邮件实例
2013-01-17 10:41 2699本实例为javamail发送smtp邮件实例和常见问题解决 ... -
压缩 HDFS 上的文件, 提供使用者下載
2012-09-06 13:48 1743(转)今天的進度是研究如何讓使用者透過網路來下載 HDF ... -
svn常见错误及解决办法
2012-09-04 12:49 37399这里有自己收集整理的关于SVN的东西,1——SVN基本使用手册 ... -
hbase常见错误及解决方法
2012-08-16 14:59 23341. 运行hbase shell 时错误:ERROR: org ... -
Hive metastore三种存储方式
2012-08-15 14:42 24727测试环境下Hive总出问题,metastore的配置有问题。抽 ... -
hive 安装运行错误及解决办法
2012-08-15 14:33 16221.hive> show tables;FAILED: ... -
Apache下403 Forbidden错误
2012-07-28 16:00 2052安装phpstudy2.0,安装完毕后可以访问测试的页面,重启 ... -
jbpm4常见 错误及解决方法
2012-07-26 11:13 17891. 结束实例错误 Configuration co ... -
Hibernate中cascade和inverse区别
2012-07-19 15:48 1615Hibernate中的inverse在表关 ... -
hibernate查询与缓存
2012-07-19 14:29 2466首先介绍get()和load()方法的区别: get()方 ... -
汉字和拼音转换工具
2012-07-18 10:36 1368两个Java版中文转汉语拼音工具 1. CnToS ... -
六种方式实现hibernate查询
2012-06-15 12:00 1031hibernate查询的6种方法。分别是HQL查询 ,对象化 ... -
Hibernate Tools 的使用
2012-06-08 12:05 1406Hibernate Tools 的使用 由于myEclip ... -
编程不懂正则表达式,不如回家种红薯
2012-05-25 16:56 1257编程的大量工作都是在处理字符串,如验证输入、查找子串替换、解 ... -
学习Spring框架的技术内幕
2012-04-27 14:06 1281引述要学习Spring框架的技术内幕,必须事先掌握一些基本的J ... -
Java图片识别技术原理
2012-04-11 20:50 1699import java.awt.image.BufferedI ... -
cas通过jdbc方式认证用户
2012-04-10 16:39 1461<!-- [if !mso]> &l ...
相关推荐
本篇将详细探讨Yale CAS的最佳实践,包括环境准备、Java环境的SSL配置、证书验证、Tomcat服务器的配置以及针对Tomcat JMX Bug的解决方案。** ### 一、环境准备 在开始配置Yale CAS之前,确保你有以下基础环境: 1. ...
**Yale CAS Server的部署及cas-java-client 3.2的应用** CAS(Central Authentication Service)是一种广泛使用的基于Web的身份验证协议。它允许用户通过单一登录(Single Sign-On, SSO)访问多个应用系统,简化了...
【描述】虽然描述中提到的是NULL,但我们可以推测这篇博文可能详细介绍了博主在定制Yale CAS服务器端的过程中遇到的问题、解决方法以及一些最佳实践。博主sgq0085在iteye博客上分享了他们的经验,这通常包括如何配置...
"Yale CAS最佳实践 --全部 - SOA - Java - JavaEye论坛.mht"提供了Yale大学关于CAS部署和管理的最佳实践,涵盖了安全、性能优化和故障排查等方面,对实际操作具有指导意义。 7. **取消HTTPS认证**: 在某些场景下...
CAS(Central Authentication Service)是 Yale 大学开发的一个开源SSO框架,而phpCAS是PHP语言中用于与CAS服务器交互的客户端库。本文将深入探讨phpCAS的源码和调用示例,特别是在使用Redis管理session以及解决无法...
【CAS实践配置】 在实际配置中,例如使用Tomcat 6.0,需要分别部署CAS Server和CAS Client。这通常涉及到以下步骤: 1. 下载并解压cas-server-3.5.2和cas-client-3.2.1。 2. 配置CAS Server,包括修改配置文件、...
CAS(Central Authentication Service)是 Yale 大学开源的一个单点登录协议,它提供了一种集中式的认证方式,简化了多应用系统的身份验证流程。 **单点登录原理** 单点登录的核心在于一个中心认证服务器(CAS ...
在Yale CAS的实现中,代理模式基于代理票据(Proxy Ticket)的概念。当一个应用(称为服务)希望代表已认证的用户访问另一个应用时,它会向CAS服务器请求一个代理票据。这个代理票据就像是用户的临时“护照”,证明...
描述中提到的"Yale CAS"是指耶鲁大学开发的CAS服务器,它是一种广泛使用的SSO解决方案。这个教程涵盖了如何使用CAS来实现SSO,包括了Java和.NET平台的实现方法。"http://214s.5d6d.com"可能是一个链接,原本提供更多...
CAS(Central Authentication Service)是 Yale 大学开源的一个基于 Java 的单点登录系统,它提供了一种安全、便捷的身份验证机制。本文档将深入探讨如何使用 CAS 实现 Java 应用中的单点登录功能。 一、CAS 概述 ...
CAS(Central Authentication Service)是一个开源的单点登录解决方案,由Yale大学发起,旨在为Web应用提供一种可靠的单点登录方法。它已成为JA-SIG(Java Architecture for XML Web Services)的一个项目,于2004年...
具体操作时,还需注意一些细节,比如在配置CAS Java客户端时,“edu.yale.its.tp.cas.client.filter.serverName”的配置项应为servername:port,而非仅仅localhost,以确保正确地指向CAS服务器的地址。此外,CAS...
**Yale人脸库详解** Yale人脸库,全称为耶鲁大学(Yale University)的...随着技术的进步,基于Yale人脸库的研究成果将继续为实际应用场景,如安全监控、社交媒体身份验证、生物识别技术等领域提供理论支持和实践指导。
CAS(Central Authentication Service)是 Yale 大学开源的一个SSO协议,广泛应用于企业级应用环境中。本源码集合为一个简单的Java实现的SSO CAS单点登录示例,适合初学者理解和实践SSO原理。 首先,我们需要理解...
CAS(Central Authentication Service)是 Yale 大学开发的一个开源项目,是实现单点登录的一种流行方案。本文档将深入探讨 CAS 单点登录的实现过程、核心技术和配置方法。 一、CAS 概述 CAS 是一个基于 Web 的...
1. **CAS介绍**:CAS是Yale University发起的一个项目,现在由Apereo基金会维护。它的主要功能是让用户只需要一次登录,就能访问多个相互信任的应用系统,提高了用户体验并强化了安全性。CAS支持多种协议,如CAS ...
CAS(Central Authentication Service)是 Yale 大学发起的一个开源项目,它提供了一种在Web 应用中统一处理用户认证的解决方案,被称为单点登录(Single Sign-On,简称SSO)。SSO允许用户在一个系统中登录后,无须...
CAS(Central Authentication Service...总的来说,这些文档提供了全面的指导,帮助开发者在Linux上的Tomcat环境中实现CAS单点登录,涵盖了从基础理论到具体实践的各个层面,对于理解SSO机制和实际操作具有很大的价值。
这些文件名暗示了学习资源的内容,包括Yale大学的CAS教程、关于CAS的Java开发者论坛讨论、一篇关于CAS最佳实践的文章以及一篇关于在Tomcat上开发CAS单点登录并定制认证方式的博客文章。这些资料将提供详细的步骤、...