﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-David.Turing's blog-随笔分类-Security领域</title><link>http://www.blogjava.net/security/category/8296.html</link><description>Java Security, CAPICOM, CryptoAPI/CSP, BouncyCastle, Openssl, JCE/JCA, SSO, CAS, Tivoli, CA, PKI
&lt;br&gt;
&lt;font color="#00f100"&gt;本站内容只兼容IE浏览器&lt;/font&gt;
&lt;br&gt;
&lt;font color="#00f100"&gt;重要的文章包均含本人的PGP签名，本人愿意对自己的言论负责&lt;/font&gt;
&lt;br&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 04 Sep 2007 17:51:02 GMT</lastBuildDate><pubDate>Tue, 04 Sep 2007 17:51:02 GMT</pubDate><ttl>60</ttl><item><title>关于配置Weblogic的NodeManager服务</title><link>http://www.blogjava.net/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Tue, 04 Sep 2007 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html</guid><wfw:comment>http://www.blogjava.net/security/comments/142632.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/142632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/142632.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍如何配置Weblogic的Nodemanager服务&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/142632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2007-09-04 15:20 <a href="http://www.blogjava.net/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创] Pass SSL Certificate to Weblogic Cluster through Apache Proxy under SSL </title><link>http://www.blogjava.net/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sat, 13 Jan 2007 11:19:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.html</guid><wfw:comment>http://www.blogjava.net/security/comments/93632.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/93632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/93632.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: This Paper will introduce how to pass certficate to Weblogic Cluster<br>through Apache Proxy under SSL.<br>Before you read this paper, please read another blog of mine( but not<br>necessary).<br><br><<Apache Proxy with Weblogic Cluster under SSL>><br>http://www.blogjava.net/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/93632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2007-01-13 19:19 <a href="http://www.blogjava.net/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Apache Proxy with Weblogic Cluster under SSL</title><link>http://www.blogjava.net/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 07 Jan 2007 06:34:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html</guid><wfw:comment>http://www.blogjava.net/security/comments/92211.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/92211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/92211.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如何配置Apache与Weblogic集群走SSL协议&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/92211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2007-01-07 14:34 <a href="http://www.blogjava.net/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布一个简易版本的SecureXRCP</title><link>http://www.blogjava.net/security/archive/2007/01/07/SecureXRCP.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 07 Jan 2007 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2007/01/07/SecureXRCP.html</guid><wfw:comment>http://www.blogjava.net/security/comments/92191.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2007/01/07/SecureXRCP.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/92191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/92191.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 发布一个简易的SecureXRCP，方便不使用Eclipse的管理员去处理证书库以及产生/验证XML数字签名以及数字水印。&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2007/01/07/SecureXRCP.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/92191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2007-01-07 11:16 <a href="http://www.blogjava.net/security/archive/2007/01/07/SecureXRCP.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]国内大部分的USBKey通过B/S方式（CAPICOM）产生数字签名的严重安全漏洞</title><link>http://www.blogjava.net/security/archive/2006/11/13/capicom_usbkey_danger.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Mon, 13 Nov 2006 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/11/13/capicom_usbkey_danger.html</guid><wfw:comment>http://www.blogjava.net/security/comments/80837.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/11/13/capicom_usbkey_danger.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/80837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/80837.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 国内所有的USBKey通过CAPICOM在Web页面产生数字签名的严重安全漏洞&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/11/13/capicom_usbkey_danger.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/80837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-11-13 11:06 <a href="http://www.blogjava.net/security/archive/2006/11/13/capicom_usbkey_danger.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SecureX Eclipse Plugin Alpha2发布</title><link>http://www.blogjava.net/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sat, 11 Nov 2006 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.html</guid><wfw:comment>http://www.blogjava.net/security/comments/80572.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/80572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/80572.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Alpha2，支持向导创建KeyStore；支持创建KeyPair；修正了Alpha1的Editor没有Titile等Bug&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/80572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-11-11 13:56 <a href="http://www.blogjava.net/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布SecureX Eclipse Plugin 2.0.0 alpha版本</title><link>http://www.blogjava.net/security/archive/2006/11/08/SecureX-EclipsePlugin.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 08 Nov 2006 08:45:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/11/08/SecureX-EclipsePlugin.html</guid><wfw:comment>http://www.blogjava.net/security/comments/79890.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/11/08/SecureX-EclipsePlugin.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/79890.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/79890.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原先是一个Keytool Eclipse Plugin功能的SecureX，经过了一些小扩展，集成了Java各种安全功能，包括XML数字签名，数字印章，CSP，USBKey等开源技术&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/11/08/SecureX-EclipsePlugin.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/79890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-11-08 16:45 <a href="http://www.blogjava.net/security/archive/2006/11/08/SecureX-EclipsePlugin.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]推荐一下CSDN《程序员》的《开源大本营》</title><link>http://www.blogjava.net/security/archive/2006/11/06/opensource_security.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Mon, 06 Nov 2006 00:54:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/11/06/opensource_security.html</guid><wfw:comment>http://www.blogjava.net/security/comments/79309.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/11/06/opensource_security.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/79309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/79309.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 推荐仅仅因为自己编写了安全那部分:) 时间很紧，如有纰漏，请指教&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/11/06/opensource_security.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/79309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-11-06 08:54 <a href="http://www.blogjava.net/security/archive/2006/11/06/opensource_security.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Yale CAS as an Acegi Client in SpringSide</title><link>http://www.blogjava.net/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 15 Oct 2006 15:53:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.html</guid><wfw:comment>http://www.blogjava.net/security/comments/75320.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/75320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/75320.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如何将SpringSide配置成一个基于Acegi的CAS Client<br>环境是CAS Server 3.0+Acegi 1.0+Tomcat&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/75320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-10-15 23:53 <a href="http://www.blogjava.net/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创] SSO(Single Sign-on) in Action(上篇)</title><link>http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Mon, 02 Oct 2006 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html</guid><wfw:comment>http://www.blogjava.net/security/comments/73199.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/73199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/73199.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍单点登陆(SSO)的原理与实践经验，包括Yale CAS, Kerberos SPNEGO, SAML SSO等方式，并深入SSO协议与原理，最后会介绍各种SSO的基本配置方法。&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/73199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-10-02 16:27 <a href="http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat/Weblogic在SSL握手中，IE提交证书窗口为空的问题</title><link>http://www.blogjava.net/security/archive/2006/09/27/ssl_cacerts_no_certificate.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 27 Sep 2006 03:38:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/09/27/ssl_cacerts_no_certificate.html</guid><wfw:comment>http://www.blogjava.net/security/comments/72258.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/09/27/ssl_cacerts_no_certificate.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/72258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/72258.html</trackback:ping><description><![CDATA[最近有网友在Dev2dev问，<br />访问<a href="https://yourmachine:8843/webapp">https://yourmachine:8843/webapp</a>的时候，客户端提交了空的证书窗口，如下图所示<br /><img height="302" alt="no_certificate_for_ssl.gif" src="http://www.blogjava.net/images/blogjava_net/security/no_certificate_for_ssl.gif" width="378" border="0" /><br /><br />如果使用的是Tomcat，则需要检查JDK/Jre/lib/security下的cacerts是否包含了客户端用户<br />的Key所对应的CA证书，如果没有，则客户端出现上述窗口，因为，服务器端不<br />会不信任为客户端的Private Key所签名的ca证书！<br /><br />如果使用Weblogic，需要要区分Use Custom Indentity和Use Java Keystore两种方式，<br />前者，往Weblogic的JKS导入客户端PK所对应的CA证书（链），后者，检查<br />Jre/lib/security的cacerts，做法跟上面一样。<img src ="http://www.blogjava.net/security/aggbug/72258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-09-27 11:38 <a href="http://www.blogjava.net/security/archive/2006/09/27/ssl_cacerts_no_certificate.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发现GDCA USBKey(电子钥匙)的CSP数字签名实现存在缺陷</title><link>http://www.blogjava.net/security/archive/2006/09/26/gdca_signature_problem.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Tue, 26 Sep 2006 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/09/26/gdca_signature_problem.html</guid><wfw:comment>http://www.blogjava.net/security/comments/72073.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/09/26/gdca_signature_problem.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/72073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/72073.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 怀疑GDCA的签名实现存在缺陷&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/09/26/gdca_signature_problem.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/72073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-09-26 17:33 <a href="http://www.blogjava.net/security/archive/2006/09/26/gdca_signature_problem.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>9月23日成都WS-Security演讲内容稿</title><link>http://www.blogjava.net/security/archive/2006/09/22/WS_Security.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Thu, 21 Sep 2006 17:03:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/09/22/WS_Security.html</guid><wfw:comment>http://www.blogjava.net/security/comments/71223.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/09/22/WS_Security.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/71223.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/71223.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在网上收集了不少WS-Security的资料，组织了一下成都BEA UserGroup之WS-Security演讲的PPT初稿，不知道是否有遗漏，欢迎指点。&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/09/22/WS_Security.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/71223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-09-22 01:03 <a href="http://www.blogjava.net/security/archive/2006/09/22/WS_Security.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java安全概述</title><link>http://www.blogjava.net/security/archive/2006/09/21/java_security_summary.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 20 Sep 2006 16:39:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/09/21/java_security_summary.html</guid><wfw:comment>http://www.blogjava.net/security/comments/70959.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/09/21/java_security_summary.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/70959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/70959.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 总结Java安全的5个重要方面&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/09/21/java_security_summary.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/70959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-09-21 00:39 <a href="http://www.blogjava.net/security/archive/2006/09/21/java_security_summary.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]实施WebService Security[WS-Security1.0]的Encrypt和Sign模式(XFire+WSS4J)</title><link>http://www.blogjava.net/security/archive/2006/08/08/xfire_wss4j.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Tue, 08 Aug 2006 01:09:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/08/08/xfire_wss4j.html</guid><wfw:comment>http://www.blogjava.net/security/comments/62283.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/08/08/xfire_wss4j.html#Feedback</comments><slash:comments>26</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/62283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/62283.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍如何让XFire跟WebService Security结合起来，目前为止，XFire选择了WSS4J(支持WS-Security1.0标准)，我为SpringSide加入了WSS4J的3个认证例子(UsernameToken模式，Encrypt模式，Sign模式)，大家可以到Springside SVN下载。&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/08/08/xfire_wss4j.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/62283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-08-08 09:09 <a href="http://www.blogjava.net/security/archive/2006/08/08/xfire_wss4j.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在SpringSide实现XFire Webservice认证</title><link>http://www.blogjava.net/security/archive/2006/07/25/XFire_Webservice_Authentication.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Tue, 25 Jul 2006 15:48:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/07/25/XFire_Webservice_Authentication.html</guid><wfw:comment>http://www.blogjava.net/security/comments/60090.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/07/25/XFire_Webservice_Authentication.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/60090.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/60090.html</trackback:ping><description><![CDATA[XFire官方网站提供的基于Webservice认证的例子有问题，在新版本的XFire1.1.2中编译不通过，不过这也是小Case，我后来折腾了一下，为SpringSide提供了一个简单的Webservice认证功能。<br />XFire跟Spring的天然融合，让我们可以少努力10年就能简单地在Spring中使用Webservice的强大魅力，我从AXIS专向XFire有一些冲动，也吃了不少亏，但受REST一族的强力吹捧，感觉还是值得尝试的，因此，在公司的系统中也把Axis彻底换了XFire。<br /><br />回到SpringSide，我大概介绍一下如何配置一个真正实用的XFire验证服务。<br />SpringSide中的XFire配置文件放在：<br /><a title="SpringSide" href="http://www.springside.org.cn/" target="_blank">SpringSide</a>-bookstore\src\org\springside\bookstore\plugins\webservice\applicationContext-webservice-server.xml<br />我们在里面定义各个Webservice，该文件其实对应于XFire官方的XFire-Servlet.xml<br />看看下面的BookService，这是一个典型的Webservice服务，红色的inHandlers是我挂上去的。它的意思是所有访问BookService的请求都会被先送到<font color="#ff0033">authenticationHandler</font>去处理，我们的验证逻辑可以在里面进行。<br />    &lt;!--Web Service 在SpringMVC中的URL 路径映射--&gt;<br />    &lt;bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt;<br />        &lt;property name="mappings"&gt;<br />            &lt;value&gt;/BookService=bookWebService&lt;/value&gt;<br />        &lt;/property&gt;<br /><font color="#ff0033">        &lt;property name="inHandlers"&gt;<br />            &lt;ref bean="authenticationHandler"/&gt;<br />        &lt;/property&gt;</font><br />    &lt;/bean&gt;<br /><br />我们接着看看<font color="#ff0033">authenticationHandler</font>的代码：<br />我们在SpringSide中通过header方式向服务器提供验证信息（另外一种更简单的方式是创建一个Login的webservice服务，然后在XFire Session中建立Token信息）。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> org.springside.bookstore.plugins.webservice.authentication;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.apache.log4j.Logger;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.MessageContext;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.exchange.InMessage;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.fault.XFireFault;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.handler.AbstractHandler;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.jdom.Element;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.jdom.Namespace;<br /><br /><br /></span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /> * XFire的回调的Handler，在XFire配置文件中配置<br /> * Server端的认证模块，回调处理模块<br /> * <br /> * ClientAuthHandler跟AuthenticationHandler要一起用，或者都不用<br /> * <br /> * </span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">  david.turing<br /> * @blog  openssl.blogjava.net<br /> *<br /> </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> AuthenticationHandler </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> AbstractHandler {<br />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> Logger log </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Logger.getLogger(AuthenticationHandler.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br />    <br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> invoke(MessageContext context) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception {<br />        <br />        log.info(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">#AuthenticationHandler is invoked</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />        InMessage message</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">context.getInMessage();<br />        <br />        </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> Namespace TOKEN_NS </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Namespace.getNamespace(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><a title="SpringSide" href="http://www.springside.org.cn/" target="_blank">SpringSide</a></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://service.webservice.plugins.bookstore.springside.org</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);  <br />        <br />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(message.getHeader()</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />        {<br />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XFireFault(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GetRelation Service Should be Authenticated</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />                    XFireFault.SENDER);<br />        }<br />        <br />        Element token </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> message.getHeader().getChild(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">AuthenticationToken</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, TOKEN_NS);<br />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (token </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />        {<br />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XFireFault(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Request must include authentication token.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />                                 XFireFault.SENDER);<br />        }<br /><br />        String username </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> token.getChild(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Username</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, TOKEN_NS).getValue();<br />        String password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> token.getChild(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Password</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, TOKEN_NS).getValue();<br /><br />        System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">username=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">username);        <br />        System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">password=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">password);<br />        <br />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(username</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">password</span><span style="COLOR: #000000">==</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XFireFault(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Supplied Username and Password Please</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />                    XFireFault.SENDER);<br />        <br />        </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />         * 检查用户名密码是否正确<br />         </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />        PasswordAuthenticationManager pamanager</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> PasswordAuthenticationManager();<br />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pamanager.authenticate(username,password))<br />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XFireFault(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Authentication Fail! Check username/password</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />                    XFireFault.SENDER);<br /> <br />        <br />    }<br />}<br /></span></div>注意，XFireFault异常是往客户端抛的，Webservice Client应该学会catch XFireFault.<br /><br />服务器端就是这么简单，看看客户端的TestCase<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> org.springside.bookstore.plugins.webservice.service;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.lang.reflect.Proxy;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.net.MalformedURLException;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.List;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.client.Client;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.client.XFireProxy;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.client.XFireProxyFactory;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.service.Service;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.service.binding.ObjectServiceFactory;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.springside.bookstore.commons.domain.Book;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.springside.bookstore.plugins.webservice.authentication.ClientAuthHandler;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> junit.framework.TestCase;<br /><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> BookServiceWithAuthenticationTestCase </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> TestCase {<br /><br />    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setUp() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception {<br />        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">.setUp();<br />    }<br /><br />    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> tearDown() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception {<br />        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">.tearDown();<br />    }<br />    <br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> getBookFromWebservice() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception{<br />    <br />          Service serviceModel </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ObjectServiceFactory()<br />                .create(BookService.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br />        BookService service </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        <br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            service</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(BookService) </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XFireProxyFactory().create(<br />                    serviceModel,<br />                    </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/springside/service/BookService</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (MalformedURLException e) {<br />            e.printStackTrace();<br />        }<br />        <br />        Client client </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();<br />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">挂上ClientAuthHandler，提供认证</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">        client.addOutHandler(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ClientAuthHandler());<br />        List list </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> service.findBooksByCategory(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br />        assertNotNull(list);<br />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">list.size();i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br />            System.out.println(((Book)list.get(i)).getName());<br />    }<br /><br />}<br /></span></div><br />你应该看到上面的client.addOutHandler(new ClientAuthHandler());<br />没错，它跟服务器端的AuthenticationHandler是一对，一起使用的！<br />也就是，每个被送往WebService服务的请求都被ClientAuthHandler处理过了。<br />看看ClientAuthHandler做了些什么：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> org.springside.bookstore.plugins.webservice.authentication;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.apache.log4j.Logger;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.MessageContext;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.handler.AbstractHandler;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.jdom.Element;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.jdom.Namespace;<br /><br /></span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /> * 客户端端的认证模块，回调处理模块<br /> * 每个需要认证的WebService方法都可以挂这个Handler<br /> * <br /> * 仅用于Demo，从解耦和易用性出发，<br /> * 没有跟Acegi结合，你可以任意扩展<br /> * 默认用户名/密码是admin/admin<br /> * <br /> * ClientAuthHandler跟AuthenticationHandler要一起用，或者都不用<br /> * <br /> * </span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">  david.turing<br /> *<br /> * @blog openssl.blogjava.net<br /> </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000">    <br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ClientAuthHandler </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> AbstractHandler {<br />        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> Logger log </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Logger.getLogger(ClientAuthHandler.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br />        <br />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">客户端自己配置用户名密码或者更安全的KeyStore方式</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String username </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">admin</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />        </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">admin</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />        <br />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ClientAuthHandler() {<br />        }<br />        <br />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ClientAuthHandler(String username,String password) {<br />            </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.username </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> username;<br />            </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> password;<br />        }<br />        <br />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setUsername(String username) {<br />            </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.username </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> username;<br />        }<br />        <br />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setPassword(String password) {<br />            </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.password </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> password;<br />        }<br />        <br />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> invoke(MessageContext context) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception {<br />                        <br />            </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000">*****************************************<br />             * Soap Header方式<br />             * 从Soap Header中获取用户名密码<br />             ******************************************</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000"> Namespace ns </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Namespace.getNamespace(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><a title="SpringSide" href="http://www.springside.org.cn" target="_blank">SpringSide</a></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://service.webservice.plugins.bookstore.springside.org</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);  <br />            Element el </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Element(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">header</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ns);<br /><br />            Element auth </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Element(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">AuthenticationToken</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, ns);<br />            Element username_el </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Element(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Username</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ns);<br />            username_el.addContent(username);<br />            Element password_el </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Element(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Password</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ns);<br />            password_el.addContent(password);<br />            auth.addContent(username_el);<br />            auth.addContent(password_el);<br />            el.addContent(auth);            <br />            context.getCurrentMessage().setHeader(el);            <br />            log.info(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ClientAuthHandler done!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />        }<br />    }<br /></span></div><br />不就是往header里面注入username,password！<br /><br />在SpringSide中，所有的Spring配置文件都被小白分散到各个Module中去了，Wuyu原先是在Plugin中提供Webservice功能，因此，我仍然在Plugin中创建XFire接口。<br />SpringSide的Spring配置文件放在:<br /><a title="SpringSide" href="http://www.springside.org.cn/" target="_blank">SpringSide</a>-bookstore\webapp\WEB-INF\springmvc-servlet.xml<br />该文件定义了Plugin的xml:<br />AuthenticationHandler这个Bean需要先定义在Plugins-servlet.xml中，其它很简单，大家去Try一下就知道了。<img src ="http://www.blogjava.net/security/aggbug/60090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-07-25 23:48 <a href="http://www.blogjava.net/security/archive/2006/07/25/XFire_Webservice_Authentication.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to use Java produce Signature by USBKey under CryptoAPI/CSP</title><link>http://www.blogjava.net/security/archive/2006/07/11/java_cryptoapi_csp_signature.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Tue, 11 Jul 2006 05:24:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/07/11/java_cryptoapi_csp_signature.html</guid><wfw:comment>http://www.blogjava.net/security/comments/57638.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/07/11/java_cryptoapi_csp_signature.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/57638.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/57638.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: How to use Java produce Signature by USBKey under CryptoAPI/CSP.&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/07/11/java_cryptoapi_csp_signature.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/57638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-07-11 13:24 <a href="http://www.blogjava.net/security/archive/2006/07/11/java_cryptoapi_csp_signature.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>A Java Sample For jCaptcha</title><link>http://www.blogjava.net/security/archive/2006/06/20/jcaptcha_sample.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Tue, 20 Jun 2006 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/06/20/jcaptcha_sample.html</guid><wfw:comment>http://www.blogjava.net/security/comments/54077.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/06/20/jcaptcha_sample.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/54077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/54077.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一个简单的jcaptcha例子&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/06/20/jcaptcha_sample.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/54077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-06-20 22:10 <a href="http://www.blogjava.net/security/archive/2006/06/20/jcaptcha_sample.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CAS协议的抓包分析</title><link>http://www.blogjava.net/security/archive/2006/05/26/sso_cas_traffic.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Fri, 26 May 2006 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/05/26/sso_cas_traffic.html</guid><wfw:comment>http://www.blogjava.net/security/comments/48284.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/05/26/sso_cas_traffic.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/48284.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/48284.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: CAS抓包分析，简单看看从login到serviceValidate的参数传递过程&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/05/26/sso_cas_traffic.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/48284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-05-26 11:27 <a href="http://www.blogjava.net/security/archive/2006/05/26/sso_cas_traffic.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将邮件与PGP绑定，建立安全身份认证基础</title><link>http://www.blogjava.net/security/archive/2006/05/10/45547.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 10 May 2006 14:24:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/05/10/45547.html</guid><wfw:comment>http://www.blogjava.net/security/comments/45547.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/05/10/45547.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/45547.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/45547.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 加入PGP行列，享受免费身份服务&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/05/10/45547.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/45547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-05-10 22:24 <a href="http://www.blogjava.net/security/archive/2006/05/10/45547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于[深入Java 2平台安全--体系架构、API设计和实现（第二版）]的翻译质量</title><link>http://www.blogjava.net/security/archive/2006/05/03/44452.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 03 May 2006 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/05/03/44452.html</guid><wfw:comment>http://www.blogjava.net/security/comments/44452.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/05/03/44452.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/44452.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/44452.html</trackback:ping><description><![CDATA[近日, 朋友告诉我&lt;&lt;<strong>深入Java 2平台安全--体系架构、API设计和实现（第二版）&gt;&gt;</strong>这本书已经出版：<br /><a href="http://www.china-pub.com/computers/common/info.asp?id=14712">http://www.china-pub.com/computers/common/info.asp?id=14712</a><br />英文原版的书名是<br /><table cellspacing="0" cellpadding="0" width="469" border="0"><tbody><tr valign="top"><td class="v2" colspan="3" height="20"><b>Inside <a title="Sun" href="www.sun.com">Sun</a>™ 2 Platform Security: Architecture, API Design, and Implementation, Second Edition</b></td></tr></tbody></table>我粗看了一下，发现书评中很多对本书翻译质量的怀疑，下载了Sample章节，粗看了一下，发现未<br />尽人意，确实会给读者的理解带来很大的困难。<br />我觉得Security的兴趣者无需太关注中文译作，也不需质疑译者和出版商，因为翻译Security Topic的书籍<br />本身是一件非常困难的事情，除非译者对Java Security的概念非常清晰，否则即使哪怕是一个概念上的误译，<br />到可能会导致读者产生很离谱的误解。<br /><a title="Sun" href="www.sun.com">Sun</a> Security的内容不象一些实践性的topic，如Spring，Hibernate，Ajax那样，可以通过大量的Sample来解释，<br />它需要读者具备一定的Security概念基础后，才能解释清楚（即概念的理解门槛比较高）。<br />所以，我还是建议，对于宫力大牛的大作，还是主张看英文版和JDK Specification，其实Sun的Java Security的<br />Spesification很多都是出自宫力之手，看着些Spesification当然没有看故事书那么舒服，但认真咀嚼几次，效果<br />总比看那些容易导致误解的译作要好得多。<br /><br />目前，Java Security的书基本上有两本：<br />IBM专家组们编写的：<br /><table cellspacing="0" cellpadding="0" width="469" border="0"><tbody><tr valign="top"><td class="v2" colspan="3" height="20"><b>Enterprise <a title="Sun" href="www.sun.com">Sun</a> Security: Building Secure J2EE Applications</b></td></tr><tr><td class="v2" colspan="3" height="18">By <a class="v1" target="_new">Marco Pistoia</a>, <a class="v1" target="_new">Nataraj Nagaratnam</a>, <a class="v1" target="_new">Larry Koved</a>, <a class="v1" target="_new">Anthony Nadalin</a></td></tr><tr><td class="v2" width="68" height="18"> </td><td class="v2" align="right" colspan="2"></td></tr><tr><td class="v2" align="right" width="68" height="18">Publisher</td><td class="v2" colspan="2">: Addison Wesley</td></tr><tr><td class="v2" align="right" width="68" height="18">Pub Date</td><td class="v2" colspan="2">: February 20, 2004</td></tr><tr><td class="v2" align="right" width="68" height="18">ISBN</td><td class="v2" colspan="2">: 0-321-11889-8</td></tr><tr><td class="v2" align="right" width="68" height="18">Pages</td><td class="v2" colspan="2">: 608</td></tr><tr><td class="v2" align="right" width="68" height="18">Slots</td><td class="v2">: 1.0</td></tr></tbody></table><br />Sun专家组编写的：<br /><table cellspacing="0" cellpadding="0" width="469" border="0"><tbody><tr valign="top"><td class="v2" colspan="3" height="20"><b>Inside <a title="Sun" href="www.sun.com">Sun</a>™ 2 Platform Security: Architecture, API Design, and Implementation, Second Edition</b></td></tr><tr><td class="v2" colspan="3" height="18">By <a class="v1" target="_new">Li Gong</a>, <a class="v1" target="_new">Gary Ellison</a>, <a class="v1" target="_new">Mary Dageforde</a></td></tr><tr><td class="v2" width="68" height="18"> </td><td class="v2" align="right" colspan="2"></td></tr><tr><td class="v2" align="right" width="68" height="18">Publisher</td><td class="v2" colspan="2">: Addison Wesley</td></tr><tr><td class="v2" align="right" width="68" height="18">Pub Date</td><td class="v2" colspan="2">: June 06, 2003</td></tr><tr><td class="v2" align="right" width="68" height="18">ISBN</td><td class="v2" colspan="2">: 0-201-78791-1</td></tr><tr><td class="v2" align="right" width="68" height="18">Pages</td><td class="v2" colspan="2">: 384</td></tr><tr><td class="v2" align="right" width="68" height="18">Slots</td><td class="v2">: 1</td></tr></tbody></table><br />这两本书，前者更关注于J2EE实践的角度出发，后者更偏重于从基础概念与Java Platform的角度出发，都是很好的书，<br />很容易就能Emule到这两本书。<br />我个人更偏向建议读者先细读后一本，然后再粗看前一本书的一些topic。<br />两本书都基本上都没有花很大力去解析Java沙箱(SandBox)，Java权限控制模型等这些比较难搞得概念，有点遗憾，希望<br />自己也能尽快抽时间提供一篇深入浅出于Java Security的文章:)<img src ="http://www.blogjava.net/security/aggbug/44452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-05-03 16:26 <a href="http://www.blogjava.net/security/archive/2006/05/03/44452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何从pfx/p12文件中提取RSA密钥长度及其他相关信息</title><link>http://www.blogjava.net/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sat, 29 Apr 2006 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html</guid><wfw:comment>http://www.blogjava.net/security/comments/43934.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/43934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/43934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了如何（用BouncyCastle提供的SecurityProvider）从pfx/p12证书文件中提取信息（如算法类型，算法长度，Subject信息，Issuer信息等）&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/43934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-29 09:38 <a href="http://www.blogjava.net/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剖析CAS Proxy的设计原理</title><link>http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 26 Apr 2006 15:54:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html</guid><wfw:comment>http://www.blogjava.net/security/comments/43441.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/43441.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/43441.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文简要介绍如何CAS Proxy的原理及配置&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/43441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-26 23:54 <a href="http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Confluence和AD的集成认证</title><link>http://www.blogjava.net/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Mon, 24 Apr 2006 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html</guid><wfw:comment>http://www.blogjava.net/security/comments/42907.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/42907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/42907.html</trackback:ping><description><![CDATA[在GZFB群听Rayman说，要搞Confluence跟AD的集成认证，由于没听清楚，还以为是SSO，立马打开Confluence跟LDAP集成的文档，细看了一把，发现并没有实现域用户到Confluence的SSO，只是Confluence做了一个LdapProvider，能够让用户的认证实现转移到LDAP上。<br /><a href="http://confluence.atlassian.com/display/DOC/Enable+LDAP+authentication">http://confluence.atlassian.com/display/DOC/Enable+LDAP+authentication</a><br /><br />该文档是完整并且正确的，配置也非常简单，Rayman很快就配置好了。我后来发现他的配置方法跟上述方法不一样，他是根据以下的文档配置的：<br /><a href="http://confluence.atlassian.com/display/DEV/Confluence+LDAP+Integration">http://confluence.atlassian.com/display/DEV/Confluence+LDAP+Integration</a><br /><br />这两种配置方式由比较大的区别：如果你的Confluence跟JIRA捆绑，请使用前者，否则，建议用后者。<br /><br />最后，隆重推荐Rayman的Blog：<a href="http://raymanzhang.cnblogs.com/">http://raymanzhang.cnblogs.com/</a><br />一个曾经编写了MDict的好同志<img src ="http://www.blogjava.net/security/aggbug/42907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-24 22:42 <a href="http://www.blogjava.net/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WeblogicServer绑定AD认证 </title><link>http://www.blogjava.net/security/archive/2006/04/02/38718.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 02 Apr 2006 04:05:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/02/38718.html</guid><wfw:comment>http://www.blogjava.net/security/comments/38718.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/02/38718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/38718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/38718.html</trackback:ping><description><![CDATA[1，构造一个干净的域，域名为domain002<br />2，构造该域里面的用户<br />weblogic The default administration user DefaultAuthenticator <br />user0001 weblogic DefaultAuthenticator <br />user0002 user0002 DefaultAuthenticator <br />3，建立一个组，weblogicAdmin，同时在AD中也建立一个这样的组<br />注意，在AD中的users而不是Builtin里面建组，因为两者的DN是不一样的。<br />4，将所有Weblogic中的user0001用户都加入到改组。<br />5，测试AD的可连接性，下载一个LDAP Browser。<br />6，在Weblogic Console中的Security-&gt;Realm的Authentication配置一个新的LDAP Provider，类型为：Configure a new Active Directory Authenticator...<br />7，配置参数：<br />i) 转到Active Directory那一Tab,看到HOST了吧？<br />HOST为你的AD的IP或者主机名，AD默认端口是389<br />ii) Principal为CN=user0001,CN=Users,DC=dlsvr,DC=com<br />其中，DC=dlsvr,DC=com为我的服务器的RootDN（例如DC=ibm，DC=com）<br />很讨厌AD的一个地方是它采用与其他LDAP不一样的命名方法，他用CN=User而不是OU=....，所以我前面的步骤才需要建立一个welogicAdmin的组。<br />iii)Credential为AD中user0001的密码。<br />注意：ii)和iii)是用于连接AD用的，构造一个LDAPConnection需要用户名密码的，懂不懂：）<br />转到user tab<br />iv) User Name Attribute：user0001<br />v) User Base DN：CN=Users,DC=dlsvr,DC=com<br />转到group tab<br />vi) Group Base DN:CN=weblogicAdmin,CN=Users,DC=dlsvr,DC=com<br />vii) weblogicAdmin<br />保存<br />关键的步骤到了：<br />Security-&gt;Realms-&gt;myrealm-&gt;Providers-&gt;Authentication<br />有没有看到Re-order the Configured Authentication Providers<br />对，就是这里需要调整一下顺序。<br />把ActiveDirectoryAuthenticator调整到最上面（优先级最高）<br />然后设置ActiveDirectoryAuthenticator的General页里面的Control Flag为Required。<br />接着DefaultAuthenticator里面的设成是OPTIONAL。<br />于是，AD取代了以前的DefaultAuthenticator了，如果两个都Requried，那么也你要接受双重认证，汗......一般不需要这样。<br />注意:boot.properties里面的默认的Weblogic启动账号同样受AD影响，你如果在AD里面禁止了Weblogic这个账号，我保证你WLS启动不了<img src ="http://www.blogjava.net/security/aggbug/38718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-02 12:05 <a href="http://www.blogjava.net/security/archive/2006/04/02/38718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CAS集成Weblogic的ServletAuthentication调用 </title><link>http://www.blogjava.net/security/archive/2006/04/02/38716.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 02 Apr 2006 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/02/38716.html</guid><wfw:comment>http://www.blogjava.net/security/comments/38716.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/02/38716.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/38716.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/38716.html</trackback:ping><description><![CDATA[<p>本来，使用j_security_check是最简单的Build-in认证方式，但CAS有自己的登录入口，即login servlet，如果用该servlet，必须自己动手完成JAAS的登录。于是，开始扩展CAS的edu.yale.its.tp.cas.auth.provider，在该包中的provider都扩展自authHandler接口，而CAS是在web.xml中定义了最终使用哪一个authHandler。<br /><br />edu.yale.its.tp.cas.authHandler<br />edu.yale.its.tp.cas.auth.provider.WeblogicHandler<br /></p>
<p>我自己写了一个WeblogicHandler(edu.yale.its.tp.cas.auth.provider包中)，专门让CAS登录到Weblogic Server，事实上，将来如果不用WLS，还可能使用Websphere，Jboss，AD之类。</p>
<p>后来发现，虽然能loginContext拿到Subject，但该Subject的Principal不能被页面的request.getPrincipal()所取得，醒悟自己在做JAAS Login，查看weblogic文档，原来Weblogic提供了<br />weblogic.servlet.security.ServletAuthentication<br />用于在Servlet端调用JAAS接口进行登录，通过该接口登录后，就如同User使用了标准的登录机制登入了Weblogic。<br />于是，立即修改了login servlet测试一下，加入<br /><font color="#a52a2a"><br />try {<br />CallbackHandler handler = new SimpleCallbackHandler(<br />request.getParameter(&quot;username&quot;), <br />request.getParameter(&quot;password&quot;));<br />Subject mySubject = weblogic.security.services.Authentication<br />.login(handler);<br />weblogic.servlet.security.ServletAuthentication.runAs(<br />mySubject, request);<br />System.out.println(&quot;mySubject[&quot; +mySubject.toString()+&quot;]&quot;+<br />&quot;写入Session&quot;);<br />} catch (LoginException e) {<br />// TODO Auto-generated catch block<br />e.printStackTrace();<br />}</font></p>
<p>然后，页面果然就能拿到Pincipal了。</p><img src ="http://www.blogjava.net/security/aggbug/38716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-02 12:02 <a href="http://www.blogjava.net/security/archive/2006/04/02/38716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat(直至5.5.9版本)不支持KeyStore和KeyEntry使用不同的password </title><link>http://www.blogjava.net/security/archive/2006/04/02/38715.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 02 Apr 2006 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/02/38715.html</guid><wfw:comment>http://www.blogjava.net/security/comments/38715.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/02/38715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/38715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/38715.html</trackback:ping><description><![CDATA[<p>今天，有朋友在配置Tomcat SSL的时候，出现如下的异常：<br />java.security.UnrecoverableKeyException: Cannot recover key<br />而且他已经正确配置了keystoreFile和keystorePass。<br />后来我发现，他对Keystore中的Key使用了Password保护，而且<br />保护这个KeyEntry的KeyPass!=KeyStore的Keypass，导致出错，<br />Tomcat SSL要求这两个密码必须相等。<br />解决办法：<br />keytool -keypasswd -v -alias mykeyalias -keypass noequalpass -new equalpass -keystore mykeystore.jks -storepass equalpass<br />其中， mykeyalias是key在keystore中的别名，-keypass后面跟key的旧密码&quot;noequalpass&quot;, -new 是新密码&quot;equalpass&quot;,注意新密码跟storepass一致。</p>
<p>附：Weblogic是支持不一致的KeystorePass和KeyPass的。</p><img src ="http://www.blogjava.net/security/aggbug/38715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-02 12:00 <a href="http://www.blogjava.net/security/archive/2006/04/02/38715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JVM是怎樣進行授權控制的</title><link>http://www.blogjava.net/security/archive/2006/04/02/38714.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 02 Apr 2006 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/04/02/38714.html</guid><wfw:comment>http://www.blogjava.net/security/comments/38714.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/04/02/38714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/38714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/38714.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如果不是從PirvilegedAction中擴展的類，那麼調用其中的方法JVM還會不會執行權限檢查？&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/04/02/38714.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/38714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-04-02 11:53 <a href="http://www.blogjava.net/security/archive/2006/04/02/38714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布SecureX 2.0.0——KeyTool Eclipse Plugin+CryptoAPI Integrated+Java Watermark</title><link>http://www.blogjava.net/security/archive/2006/03/17/SecureX.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Fri, 17 Mar 2006 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/03/17/SecureX.html</guid><wfw:comment>http://www.blogjava.net/security/comments/35781.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/03/17/SecureX.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/35781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/35781.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 发布Eclipse的Keytool Eclipse Plugin——代号SecureX<br>版本1.0.0&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/03/17/SecureX.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/35781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-03-17 10:38 <a href="http://www.blogjava.net/security/archive/2006/03/17/SecureX.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用PGP你的文章进行签名</title><link>http://www.blogjava.net/security/archive/2006/03/09/34511.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Thu, 09 Mar 2006 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/security/archive/2006/03/09/34511.html</guid><wfw:comment>http://www.blogjava.net/security/comments/34511.html</wfw:comment><comments>http://www.blogjava.net/security/archive/2006/03/09/34511.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/security/comments/commentRss/34511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/security/services/trackbacks/34511.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍如何使用PGP对BLog文章签名&nbsp;&nbsp;<a href='http://www.blogjava.net/security/archive/2006/03/09/34511.html'>阅读全文</a><img src ="http://www.blogjava.net/security/aggbug/34511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/security/" target="_blank">david.turing</a> 2006-03-09 17:24 <a href="http://www.blogjava.net/security/archive/2006/03/09/34511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>