- 浏览: 459829 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 2326感谢:http://tj007-bo.iteye.com/b ... -
jconsole监控tomcat
2013-12-12 12:32 1122Server端对tomcat启动脚本配置如下参数: 编辑${ ... -
StringUtils详细介绍
2013-04-12 16:49 1353StringUtils详细介绍 ... -
javamail的smtp方式发送邮件实例
2013-01-17 10:41 2658本实例为javamail发送smtp邮件实例和常见问题解决 ... -
压缩 HDFS 上的文件, 提供使用者下載
2012-09-06 13:48 1698(转)今天的進度是研究如何讓使用者透過網路來下載 HDF ... -
svn常见错误及解决办法
2012-09-04 12:49 37213这里有自己收集整理的关于SVN的东西,1——SVN基本使用手册 ... -
hbase常见错误及解决方法
2012-08-16 14:59 22401. 运行hbase shell 时错误:ERROR: org ... -
Hive metastore三种存储方式
2012-08-15 14:42 24663测试环境下Hive总出问题,metastore的配置有问题。抽 ... -
hive 安装运行错误及解决办法
2012-08-15 14:33 15671.hive> show tables;FAILED: ... -
Apache下403 Forbidden错误
2012-07-28 16:00 1995安装phpstudy2.0,安装完毕后可以访问测试的页面,重启 ... -
jbpm4常见 错误及解决方法
2012-07-26 11:13 17131. 结束实例错误 Configuration co ... -
Hibernate中cascade和inverse区别
2012-07-19 15:48 1575Hibernate中的inverse在表关 ... -
hibernate查询与缓存
2012-07-19 14:29 2418首先介绍get()和load()方法的区别: get()方 ... -
汉字和拼音转换工具
2012-07-18 10:36 1332两个Java版中文转汉语拼音工具 1. CnToS ... -
六种方式实现hibernate查询
2012-06-15 12:00 992hibernate查询的6种方法。分别是HQL查询 ,对象化 ... -
Hibernate Tools 的使用
2012-06-08 12:05 1360Hibernate Tools 的使用 由于myEclip ... -
编程不懂正则表达式,不如回家种红薯
2012-05-25 16:56 1217编程的大量工作都是在处理字符串,如验证输入、查找子串替换、解 ... -
学习Spring框架的技术内幕
2012-04-27 14:06 1246引述要学习Spring框架的技术内幕,必须事先掌握一些基本的J ... -
Java图片识别技术原理
2012-04-11 20:50 1649import java.awt.image.BufferedI ... -
cas通过jdbc方式认证用户
2012-04-10 16:39 1413<!-- [if !mso]> &l ...
相关推荐
Yale CAS SSO DotNet Client
Yale CAS SSO JAVA Client
Yale CAS 3.3实现SSO详细教程。
Yale CAS实现单点登陆的客户端源码和服务端源码,客户端cas-client-3.1.10代码和cas-server-3.4.2.1代码
NULL 博文链接:https://kennylee26.iteye.com/blog/855392
有关耶鲁大学CAS服务器的配置 1.环境准备 2.在jdk上配置SSL 3.SSL验证证书 4.Tomcat配置 5.Tomcat jmx bug
在Tomcat中使用Yale CAS实现单点登陆,收集的资源,拿出来共享
基于Yale_CAS的单点登录的设计与实现,大学发表论文
一、Yale CAS简介 2 二、CAS 原理和协议 2 三、准备工作 4 四、部署CAS Server 5 步骤1.配置CAS Server应用服务器的Https 协议 5 ●生成服务器证书 5 ●配置Tomcat的https 8 步骤2.部署CAS Server 8 ●扩展认证接口 ...
解决普元EOS报错:edu.yale.its.tp.cas.client.IContextInit 下载后需jar到lib里面且单击右键在属性一栏的弹出框内添加该jar包即可解决爆粗
简单而精练的介绍了yalu-cas的原理及其实现
CAS学习笔记 --CAS的服务器配置和各种客户端的配置
软件介绍: ...下载后先解压,然后将sso-client-java-7.0.8.jar文件复制到lib里面,鼠标单击右键在属性一栏的弹出框内添加该jar包即可解决解决普元EOS报错问题:edu.yale.its.tp.cas.client.IContextInit
NULL 博文链接:https://sgq0085.iteye.com/blog/2003190
Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc
耶鲁大学开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Server)被设计成一个独立的Web应用程序(cas.war)。该资源不仅提供部署在Tomcat服务器上的cas.war包(解压缩后在webapps目录下),而且...
Yale人脸数据库中一个采集志愿者的10张样本,相比较ORL人脸数据库Yale库中每个对象采集的样本包含更明显的光照、表情和姿态以及遮挡变化。4. YALE人脸数据Bhttps://computervisiononline.com/dataset/1105138686包含...
NULL 博文链接:https://sgq0085.iteye.com/blog/2003783
Yale CAS - 耶鲁大学开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Server)被设计成一个独立的Web应用程序(cas.war)。