- 浏览: 114662 次
- 性别:
- 来自: 广州
最新评论
-
sniperwang:
谢谢~~~~
Liferay 使用手册 -
plane:
谢谢 ^_^
mule 源代码编译指南 -
caiway:
编译通不过。报错:
D:\Projects\Mule\mule ...
mule 源代码编译指南 -
panpan3210:
我还是编译不通过啊,你能把生成的eclipse工程打包发给我吗 ...
mule 源代码编译指南 -
netfly:
不知道哪位用xquery做过统计、汇总等?性能如何?现在对Be ...
xml database 点评
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里面还有什么东西。呵呵,我喜欢这样干。
2.cas log不起作用
目前那个log4j不起作用,天天用着的,算是个小bug,哪个兄弟下载后能帮忙解决一下,再次谢过^_^
修改edu.yale.its.tp.cas.util.SecureURL类:
/**
* 从输入流中提取字�符
*
* @Date 2007-3-4 <br>
* @param in
* 输入�流
* @param encode
* 字符编码
* @return 字符
*/
public static final String getHtmlString(InputStream in, String encode)
throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(in));
String line;
StringBuffer buf = new StringBuffer();
while ((line = r.readLine()) != null)
buf.append(line + "\n");
return buf.toString();
}
// /**
// * Retrieve the contents from the given URL as a String, assuming the
// * URL's server matches what we expect it to match.
// */
// public static String retrieve(String url) throws IOException {
// if (log.isTraceEnabled()){
// log.trace("entering retrieve(" + url + ")");
// }
// BufferedReader r = null;
// try {
// URL u = new URL(url);
// if (!u.getProtocol().equals("https")){
// // IOException may not be the best exception we could throw here
// // since the problem is with the URL argument we were passed, not
// // IO. -awp9
// log.error("retrieve(" + url + ") on an illegal URL since protocol was not https.");
// throw new IOException("only 'https' URLs are valid for this method");
// }
//
// URLConnection uc = u.openConnection();
// uc.setRequestProperty("Connection", "close");
// r = new BufferedReader(new InputStreamReader(uc.getInputStream()));
// String line;
// StringBuffer buf = new StringBuffer();
// while ((line = r.readLine()) != null)
// buf.append(line + "\n");
// return buf.toString();
// } finally {
// try {
// if (r != null)
// r.close();
// } catch (IOException ex) {
// // ignore
// }
// }
// }
能否再介绍一下这种解决方案呢
cas-server-3.1里将提供!
已自己解决,为导出格式问题
一样
啊?只有那些需要集成到sso的client电脑才需要,如果sso client和server在一台电脑上,根本就不需要改动,普通用户电脑是根本不需要的。
我一样是在实际项目中使用的,绝非是玩玩!没谁有空陪你玩!
对不起,是我这方面知识不够,不懂! 居然这样搞一下,浏览器就认识https://netfly/cas/..了!
非常感谢!按你的方法OK!非常感谢!
我可以把所有项目的acegi认证指向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>"); } }
2.cas log不起作用
目前那个log4j不起作用,天天用着的,算是个小bug,哪个兄弟下载后能帮忙解决一下,再次谢过^_^
评论
46 楼
netfly
2007-06-07
引用
能否再介绍一下这种解决方案呢
修改edu.yale.its.tp.cas.util.SecureURL类:
/**
* 从输入流中提取字�符
*
* @Date 2007-3-4 <br>
* @param in
* 输入�流
* @param encode
* 字符编码
* @return 字符
*/
public static final String getHtmlString(InputStream in, String encode)
throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(in));
String line;
StringBuffer buf = new StringBuffer();
while ((line = r.readLine()) != null)
buf.append(line + "\n");
return buf.toString();
}
// /**
// * Retrieve the contents from the given URL as a String, assuming the
// * URL's server matches what we expect it to match.
// */
// public static String retrieve(String url) throws IOException {
// if (log.isTraceEnabled()){
// log.trace("entering retrieve(" + url + ")");
// }
// BufferedReader r = null;
// try {
// URL u = new URL(url);
// if (!u.getProtocol().equals("https")){
// // IOException may not be the best exception we could throw here
// // since the problem is with the URL argument we were passed, not
// // IO. -awp9
// log.error("retrieve(" + url + ") on an illegal URL since protocol was not https.");
// throw new IOException("only 'https' URLs are valid for this method");
// }
//
// URLConnection uc = u.openConnection();
// uc.setRequestProperty("Connection", "close");
// r = new BufferedReader(new InputStreamReader(uc.getInputStream()));
// String line;
// StringBuffer buf = new StringBuffer();
// while ((line = r.readLine()) != null)
// buf.append(line + "\n");
// return buf.toString();
// } finally {
// try {
// if (r != null)
// r.close();
// } catch (IOException ex) {
// // ignore
// }
// }
// }
45 楼
Arden
2007-06-05
太复杂了,看不明白!
44 楼
juliashine
2007-05-25
netfly 写道
呵呵,最近从网上查到一点资料,完全不必要再改C:\WINDOWS\system32\drivers\etc\hosts文件了,不过要改一下HTTPS认证的那段源代码。
其他的小问题也都解决了,这份文档能给大家带来那么多的帮助,感觉很棒。
netfly 写道
修改本地的hosts表,在C:\WINDOWS\system32\drivers\etc目录下
我越来越搞不懂了!你这样是用于生产环境还是测试环境?!
即使这样可行也不可能每个客户端电脑这样去整!
其他的小问题也都解决了,这份文档能给大家带来那么多的帮助,感觉很棒。
引用
netfly 写道
修改本地的hosts表,在C:\WINDOWS\system32\drivers\etc目录下
我越来越搞不懂了!你这样是用于生产环境还是测试环境?!
即使这样可行也不可能每个客户端电脑这样去整!
能否再介绍一下这种解决方案呢
43 楼
netfly
2007-05-20
哈哈,本人欢迎任何朋友转载,只要保留出处就行。
42 楼
javapet
2007-05-15
netfly
我这段时间也在研究cas sso方面的问题,你写的真好,未经你同意,把你的文章给转载到了 http://blog.sina.com.cn/itrack
该没有意见吧?如果有问题给我留言,我马上删除,呵呵
我这段时间也在研究cas sso方面的问题,你写的真好,未经你同意,把你的文章给转载到了 http://blog.sina.com.cn/itrack
该没有意见吧?如果有问题给我留言,我马上删除,呵呵
41 楼
netfly
2007-05-08
呵呵,最近从网上查到一点资料,完全不必要再改C:\WINDOWS\system32\drivers\etc\hosts文件了,不过要改一下HTTPS认证的那段源代码。
其他的小问题也都解决了,这份文档能给大家带来那么多的帮助,感觉很棒。
netfly 写道
修改本地的hosts表,在C:\WINDOWS\system32\drivers\etc目录下
我越来越搞不懂了!你这样是用于生产环境还是测试环境?!
即使这样可行也不可能每个客户端电脑这样去整!
其他的小问题也都解决了,这份文档能给大家带来那么多的帮助,感觉很棒。
引用
netfly 写道
修改本地的hosts表,在C:\WINDOWS\system32\drivers\etc目录下
我越来越搞不懂了!你这样是用于生产环境还是测试环境?!
即使这样可行也不可能每个客户端电脑这样去整!
40 楼
海妖的夜
2007-04-25
谢博主回答.
我尝试了CAS 3.1 M2,在修正了官方的这个bug http://developer.ja-sig.org/source/changelog/jasig/?cs=MAIN:sbattaglia:20070424181922 后,终于和客户端正常合作了.
虽然看到增加了一个manage控制台,但仍然不太明白怎么使用,请问博主知道怎么用么?知道在3.1里面配置返回不只username吗?
先拜谢,如果不是楼主提醒,我都不知道3.1提供这个功能了.
我尝试了CAS 3.1 M2,在修正了官方的这个bug http://developer.ja-sig.org/source/changelog/jasig/?cs=MAIN:sbattaglia:20070424181922 后,终于和客户端正常合作了.
虽然看到增加了一个manage控制台,但仍然不太明白怎么使用,请问博主知道怎么用么?知道在3.1里面配置返回不只username吗?
先拜谢,如果不是楼主提醒,我都不知道3.1提供这个功能了.
39 楼
boogie
2007-04-23
冬霄凌影 写道
在通过CAS认证后怎样返回登陆用户的详细信息呢?信息是从数据库中取出的,cas客户端默认情况是只把用户名存入到Session中的
能否帮忙解释一下呢?
能否帮忙解释一下呢?
cas-server-3.1里将提供!
38 楼
海妖的夜
2007-04-23
看了下josso的实现,它所有取得都是通过webservice的,用的是axis.
不过我总觉得web service的效率不够高.
不过我总觉得web service的效率不够高.
37 楼
海妖的夜
2007-04-22
同楼上同问.
我的想法是server端再增加一个uri,当判定可以访问的情况下(比如ticket和service有效),就用这个uri返回一个xml文件,包含所有需要的信息,然后客户端请求这个uri,取得这些信息.然后自己扩展session的数据库,把这些信息也保存起来.
我看到2.0的协议里面的casProxySuccessView.jsp(在cas-server-3.0.6\webapp\WEB-INF\view\jsp\default\protocol\2.0下面),就是这么返回用户名的.
不过总觉得在casProxySuccessView.jsp里面统一返回应该效率更高.但不好维护,前面一种更好维护.
我的想法是client端的自我扩展大概是免不了的.
我的想法是server端再增加一个uri,当判定可以访问的情况下(比如ticket和service有效),就用这个uri返回一个xml文件,包含所有需要的信息,然后客户端请求这个uri,取得这些信息.然后自己扩展session的数据库,把这些信息也保存起来.
我看到2.0的协议里面的casProxySuccessView.jsp(在cas-server-3.0.6\webapp\WEB-INF\view\jsp\default\protocol\2.0下面),就是这么返回用户名的.
不过总觉得在casProxySuccessView.jsp里面统一返回应该效率更高.但不好维护,前面一种更好维护.
我的想法是client端的自我扩展大概是免不了的.
36 楼
海妖的夜
2007-04-22
同楼上同问.
我的想法是server端再增加一个uri,当判定可以访问的情况下(比如ticket和service有效),就用这个uri返回一个xml文件,包含所有需要的信息,然后客户端请求这个uri,取得这些信息.然后自己扩展session的数据库,把这些信息也保存起来.
我看到2.0的协议里面的casProxySuccessView.jsp(在cas-server-3.0.6\webapp\WEB-INF\view\jsp\default\protocol\2.0下面),就是这么返回用户名的.
不过总觉得在casProxySuccessView.jsp里面统一返回应该效率更高.但不好维护,前面一种更好维护.
我的想法是client端的自我扩展大概是免不了的.
我的想法是server端再增加一个uri,当判定可以访问的情况下(比如ticket和service有效),就用这个uri返回一个xml文件,包含所有需要的信息,然后客户端请求这个uri,取得这些信息.然后自己扩展session的数据库,把这些信息也保存起来.
我看到2.0的协议里面的casProxySuccessView.jsp(在cas-server-3.0.6\webapp\WEB-INF\view\jsp\default\protocol\2.0下面),就是这么返回用户名的.
不过总觉得在casProxySuccessView.jsp里面统一返回应该效率更高.但不好维护,前面一种更好维护.
我的想法是client端的自我扩展大概是免不了的.
35 楼
冬霄凌影
2007-04-02
在通过CAS认证后怎样返回登陆用户的详细信息呢?信息是从数据库中取出的,cas客户端默认情况是只把用户名存入到Session中的
能否帮忙解释一下呢?
能否帮忙解释一下呢?
34 楼
boogie
2007-01-11
netfly 写道
哈哈,不好意思,我正在为sun ee配置呢,它的ssl协议采用的是dds格式,要用专门的工具去生成,不知道weblogic如何了,没试过。
已自己解决,为导出格式问题
33 楼
magice
2007-01-08
好贴啊,标记一下,等有空的时候细细的品味:)
32 楼
boogie
2007-01-08
zrweng 写道
如果采用CAS最新版本,web.xml该如何配置,filter-class使用哪个?
一样
31 楼
boogie
2007-01-08
CAS认证通过后能否保存除username外的其它内容,比如岗位等内容供客户端应用程序访问?
30 楼
zrweng
2007-01-05
如果采用CAS最新版本,web.xml该如何配置,filter-class使用哪个?
29 楼
netfly
2007-01-05
哈哈,不好意思,我正在为sun ee配置呢,它的ssl协议采用的是dds格式,要用专门的工具去生成,不知道weblogic如何了,没试过。
28 楼
boogie
2007-01-05
当客户端是weblogic时怎样导入证书?有没有这方面经验共享?
我导入到jre/lib/security/cacerts后tomcat客户端正常,weblogic客户端出错!
我导入到jre/lib/security/cacerts后tomcat客户端正常,weblogic客户端出错!
du.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://cas:8443/cas/proxyValidate] ticket=[ST-6-CJCDe9dzlRF5klKsvtUTxqSMaDfYsMnF3p6-20] service=[http%3A%2F%2F80.24.32.6%3A7001%2Fdojotree%2Ftree.jsp] renew=false]]] at edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:52) at edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455) at edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7053) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183) Caused by: java.lang.NullPointerException at weblogic.security.SSL.SSLCertificate.verify(SSLCertificate.java:235) at weblogic.security.SSL.SSLCertificate.input(SSLCertificate.java:116) at weblogic.security.SSL.Handshake.input(Handshake.java:121) at weblogic.security.SSL.SSLSocket.getHandshake(SSLSocket.java:1117) at weblogic.security.SSL.SSLSocket.clientInit(SSLSocket.java:432) at weblogic.security.SSL.SSLSocket.initialize(SSLSocket.java:276) at weblogic.security.SSL.SSLSocket.(SSLSocket.java:222) at weblogic.security.SSL.SSLSocketFactory.createSocket(SSLSocketFactory.java:213) at weblogic.net.http.HttpsClient.openServer(HttpsClient.java:238) at weblogic.net.http.HttpsClient.openServer(HttpsClient.java:389) at weblogic.net.http.HttpsClient.(HttpsClient.java:209) at weblogic.net.http.HttpClient.New(HttpClient.java:228) at weblogic.net.http.HttpsURLConnection.getHttpClient(HttpsURLConnection.java:246) at weblogic.net.http.HttpsURLConnection.connect(HttpsURLConnection.java:217) at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:319) at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:29) at edu.yale.its.tp.cas.util.SecureURL.retrieve(SecureURL.java:84) at edu.yale.its.tp.cas.client.ServiceTicketValidator.validate(ServiceTicketValidator.java:212) at edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:50) ... 10 more
27 楼
boogie
2006-12-31
netfly 写道
引用
即使这样可行也不可能每个客户端电脑这样去整!
啊?只有那些需要集成到sso的client电脑才需要,如果sso client和server在一台电脑上,根本就不需要改动,普通用户电脑是根本不需要的。
我一样是在实际项目中使用的,绝非是玩玩!没谁有空陪你玩!
对不起,是我这方面知识不够,不懂! 居然这样搞一下,浏览器就认识https://netfly/cas/..了!
非常感谢!按你的方法OK!非常感谢!
我可以把所有项目的acegi认证指向CAS服务器了!
相关推荐
**Yale CAS Server的部署及cas-java-client 3.2的应用** CAS(Central Authentication Service)是一种广泛使用的基于Web的身份...同时,了解这些关键概念和最佳实践将有助于构建更安全、可扩展的身份验证解决方案。
本篇将详细探讨Yale CAS的最佳实践,包括环境准备、Java环境的SSL配置、证书验证、Tomcat服务器的配置以及针对Tomcat JMX Bug的解决方案。** ### 一、环境准备 在开始配置Yale CAS之前,确保你有以下基础环境: 1. ...
"Yale CAS最佳实践 --全部 - SOA - Java - JavaEye论坛.mht"提供了Yale大学关于CAS部署和管理的最佳实践,涵盖了安全、性能优化和故障排查等方面,对实际操作具有指导意义。 7. **取消HTTPS认证**: 在某些场景下...
7. **安全考虑**:讨论实施SSO时的安全最佳实践,如加密通信、防止票证重放攻击等。 8. **故障排查和日志分析**:提供解决常见问题的指南,以及如何解读CAS的日志以进行调试。 为了全面理解并实现这个教程,你需要...
【描述】虽然描述中提到的是NULL,但我们可以推测这篇博文可能详细介绍了博主在定制Yale CAS服务器端的过程中遇到的问题、解决方法以及一些最佳实践。博主sgq0085在iteye博客上分享了他们的经验,这通常包括如何配置...
8. **安全性和最佳实践**:为了确保CAS系统的安全,应定期更新到最新版本以获取安全补丁,同时遵循最佳实践,如使用HTTPS,限制无效尝试,启用审计日志以便追踪异常活动。 总之,CAS-4.0.0.tar.gz是一个包含全面...
### CAS单点登录框架 #### 一、CAS简介 单点登录(Single Sign On,简称SSO)是一种用户登录管理方式,用户只需要在一处...在实际应用中,开发人员需要密切关注CAS社区的更新和技术文档,以获取最新信息和最佳实践。
总之,WAS与CAS之间的SSO配置是一个需要细致操作的集成过程,需要对WAS和CAS都有一定的了解,并严格遵循相关的配置指南和最佳实践。成功配置后,可以实现用户在多个应用间的无缝登录体验,大大提升用户便利性和系统...
开发者应遵循最佳实践,确保 CAS 配置的安全性。 总结,CAS 作为一个强大的单点登录解决方案,为企业级应用提供了高效的身份验证管理。通过理解 CAS 的核心原理和实践步骤,开发者可以轻松地在 Java 应用中集成 CAS...
这些文件名暗示了学习资源的内容,包括Yale大学的CAS教程、关于CAS的Java开发者论坛讨论、一篇关于CAS最佳实践的文章以及一篇关于在Tomcat上开发CAS单点登录并定制认证方式的博客文章。这些资料将提供详细的步骤、...