<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>David.turing's Security Blog</title>
    <description>david.turing（兴趣是Webservice安全以及Java安全） 
CSDN Java安全版主
Matrix安全版主(ID:cas) 
广州UserGroup Leader
Dev2dev SOA/Webservice版主
CSDN Webservice/XML版主 
</description>
    <link>http://security.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>获取PDABase.com所有下载文件的HTTPClient代码</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34990" style="color:red;">http://security.javaeye.com/blog/34990</a>&nbsp;
          发表时间: 2006年11月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近追Friends(老友记)，想在PPC上看，顺便编写了一个HTTPClient的Sample，可以获取PDABase.com的所有下载链接，希望对PDA爱好者有所帮助，可以自己生成Flashget的Task，一次性Download整个网站。</p>
		<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">
				<img src="/Images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> org.apache.commons.httpclient;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.IOException;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> org.apache.commons.httpclient.methods.GetMethod;<br /><img src="/Images/OutliningIndicators/None.gif" align="top" /><br /><img src="/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_125_202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_125_202_Open_Text.style.display='none'; Codehighlighter1_125_202_Closed_Image.style.display='inline'; Codehighlighter1_125_202_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_125_202_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_125_202_Closed_Text.style.display='none'; Codehighlighter1_125_202_Open_Image.style.display='inline'; Codehighlighter1_125_202_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" /></span>
				<span id="Codehighlighter1_125_202_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_125_202_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000"> <br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />   </span>
						<span style="COLOR: #808080">@author</span>
						<span style="COLOR: #008000"> by david.turing<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />   security.blogjava.net<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />   www.pgp.org.cn<br /><img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />*</span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_226_1882_Open_Image" onclick="this.style.display='none'; Codehighlighter1_226_1882_Open_Text.style.display='none'; Codehighlighter1_226_1882_Closed_Image.style.display='inline'; Codehighlighter1_226_1882_Closed_Text.style.display='inline';" align="top" />
						<img src="/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_226_1882_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_226_1882_Closed_Text.style.display='none'; Codehighlighter1_226_1882_Open_Image.style.display='inline'; Codehighlighter1_226_1882_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> PDABase </span>
				<span id="Codehighlighter1_226_1882_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="/Images/dot.gif" />
				</span>
				<span id="Codehighlighter1_226_1882_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_269_1880_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_1880_Open_Text.style.display='none'; Codehighlighter1_269_1880_Closed_Image.style.display='inline'; Codehighlighter1_269_1880_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_269_1880_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_269_1880_Closed_Text.style.display='none'; Codehighlighter1_269_1880_Open_Image.style.display='inline'; Codehighlighter1_269_1880_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span id="Codehighlighter1_269_1880_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="/Images/dot.gif" />
						</span>
						<span id="Codehighlighter1_269_1880_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        HttpClient client </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> HttpClient();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        client.getHostConfiguration().setHost(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">www.pdabase.com</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">80</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">http</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        GetMethod method </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">  </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> GetMethod();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        String x </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> start</span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">;<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> end</span>
								<span style="COLOR: #000000">=</span> 2<span style="COLOR: #000000">5000</span><span style="COLOR: #000000">;<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_482_1771_Open_Image" onclick="this.style.display='none'; Codehighlighter1_482_1771_Open_Text.style.display='none'; Codehighlighter1_482_1771_Closed_Image.style.display='inline'; Codehighlighter1_482_1771_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_482_1771_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_482_1771_Closed_Text.style.display='none'; Codehighlighter1_482_1771_Open_Image.style.display='inline'; Codehighlighter1_482_1771_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_482_1771_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_482_1771_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            <br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_524_1736_Open_Image" onclick="this.style.display='none'; Codehighlighter1_524_1736_Open_Text.style.display='none'; Codehighlighter1_524_1736_Closed_Image.style.display='inline'; Codehighlighter1_524_1736_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_524_1736_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_524_1736_Closed_Text.style.display='none'; Codehighlighter1_524_1736_Open_Image.style.display='inline'; Codehighlighter1_524_1736_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />            </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">start; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> end; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_524_1736_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_524_1736_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">                method = new GetMethod("/download/SoftDown.asp?ID=1000" + i);</span><span style="COLOR: #008000"><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">                <br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                method.setPath(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/download/SoftDown.asp?ID=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> i));<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                method.setRequestHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cookie</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                        </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ASPSESSIONIDQQRRRDRR=IACDBGAAMNMOCCBIFADECAJL</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                client.executeMethod(method);<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(method.getStatusLine().getStatusCode()</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">)<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_845_1731_Open_Image" onclick="this.style.display='none'; Codehighlighter1_845_1731_Open_Text.style.display='none'; Codehighlighter1_845_1731_Closed_Image.style.display='inline'; Codehighlighter1_845_1731_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_845_1731_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_845_1731_Closed_Text.style.display='none'; Codehighlighter1_845_1731_Open_Image.style.display='inline'; Codehighlighter1_845_1731_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                </span><span id="Codehighlighter1_845_1731_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_845_1731_Open_Text"><span style="COLOR: #000000">{                    <br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                    String response </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> method.getResponseBodyAsString();<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_937_1725_Open_Image" onclick="this.style.display='none'; Codehighlighter1_937_1725_Open_Text.style.display='none'; Codehighlighter1_937_1725_Closed_Image.style.display='inline'; Codehighlighter1_937_1725_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_937_1725_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_937_1725_Closed_Text.style.display='none'; Codehighlighter1_937_1725_Open_Image.style.display='inline'; Codehighlighter1_937_1725_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (response </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_937_1725_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_937_1725_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zip</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1008_1194_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1008_1194_Open_Text.style.display='none'; Codehighlighter1_1008_1194_Closed_Image.style.display='inline'; Codehighlighter1_1008_1194_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1008_1194_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1008_1194_Closed_Text.style.display='none'; Codehighlighter1_1008_1194_Open_Image.style.display='inline'; Codehighlighter1_1008_1194_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                        </span><span id="Codehighlighter1_1008_1194_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1008_1194_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> response.substring(response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1114_1186_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1114_1186_Open_Text.style.display='none'; Codehighlighter1_1114_1186_Closed_Image.style.display='inline'; Codehighlighter1_1114_1186_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1114_1186_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1114_1186_Closed_Text.style.display='none'; Codehighlighter1_1114_1186_Open_Image.style.display='inline'; Codehighlighter1_1114_1186_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                                    response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zip</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_1114_1186_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1114_1186_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                                System.out.println(StringUtils.iso2gb(x)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zip</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);                        <br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                            }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                        }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rar</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1270_1456_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1270_1456_Open_Text.style.display='none'; Codehighlighter1_1270_1456_Closed_Image.style.display='inline'; Codehighlighter1_1270_1456_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1270_1456_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1270_1456_Closed_Text.style.display='none'; Codehighlighter1_1270_1456_Open_Image.style.display='inline'; Codehighlighter1_1270_1456_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                        </span><span id="Codehighlighter1_1270_1456_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1270_1456_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> response.substring(response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1376_1448_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1376_1448_Open_Text.style.display='none'; Codehighlighter1_1376_1448_Closed_Image.style.display='inline'; Codehighlighter1_1376_1448_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1376_1448_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1376_1448_Closed_Text.style.display='none'; Codehighlighter1_1376_1448_Open_Image.style.display='inline'; Codehighlighter1_1376_1448_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                                    response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rar</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_1376_1448_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1376_1448_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                                System.out.println(StringUtils.iso2gb(x)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rar</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);                        <br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                            }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                        }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exe</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1532_1718_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1532_1718_Open_Text.style.display='none'; Codehighlighter1_1532_1718_Closed_Image.style.display='inline'; Codehighlighter1_1532_1718_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1532_1718_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1532_1718_Closed_Text.style.display='none'; Codehighlighter1_1532_1718_Open_Image.style.display='inline'; Codehighlighter1_1532_1718_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                        </span><span id="Codehighlighter1_1532_1718_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1532_1718_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((x </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> response.substring(response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ftp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1638_1710_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1638_1710_Open_Text.style.display='none'; Codehighlighter1_1638_1710_Closed_Image.style.display='inline'; Codehighlighter1_1638_1710_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1638_1710_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1638_1710_Closed_Text.style.display='none'; Codehighlighter1_1638_1710_Open_Image.style.display='inline'; Codehighlighter1_1638_1710_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />                                    response.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exe</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_1638_1710_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1638_1710_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />                                System.out.println(StringUtils.iso2gb(x)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exe</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);                        <br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                            }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                        }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            method.releaseConnection();<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1797_1825_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1797_1825_Open_Text.style.display='none'; Codehighlighter1_1797_1825_Closed_Image.style.display='inline'; Codehighlighter1_1797_1825_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1797_1825_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1797_1825_Closed_Text.style.display='none'; Codehighlighter1_1797_1825_Open_Image.style.display='inline'; Codehighlighter1_1797_1825_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />        }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (HttpException e) </span><span id="Codehighlighter1_1797_1825_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1797_1825_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1849_1877_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1849_1877_Open_Text.style.display='none'; Codehighlighter1_1849_1877_Closed_Image.style.display='inline'; Codehighlighter1_1849_1877_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1849_1877_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1849_1877_Closed_Text.style.display='none'; Codehighlighter1_1849_1877_Open_Image.style.display='inline'; Codehighlighter1_1849_1877_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" />        }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException e) </span><span id="Codehighlighter1_1849_1877_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_1849_1877_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span>
						<span style="COLOR: #000000">
								<br />
								<img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="/Images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34990#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Nov 2006 23:18:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34990</link>
        <guid>http://security.javaeye.com/blog/34990</guid>
      </item>
      <item>
        <title>[原创]国内大部分的USBKey通过B/S方式（CAPICOM）产生数字签名的严重安全漏洞</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34991" style="color:red;">http://security.javaeye.com/blog/34991</a>&nbsp;
          发表时间: 2006年11月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">很多人喜欢使用UsbKey产生数字签名的方式提交到服务器，最近我做的几个省厅的项目均如此，利用USBKey提供的ActiveX插件（更常见的是CAPICOM接口）通过USBKey厂商提供的WindowsCSP去调用UsbKey产生数字签名。<br /><br />1，<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户在页面浏览文书</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">      2，<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户对页面中的</span>
				<span lang="EN-US">Form</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据进行签名</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">      3，<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在本地产生数字签名</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">      4，<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数字签名提交到服务器<br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<br />   大家都认为以上的方案非常可靠，但这种方案存在一个极为严重的安全问题——诱导签名。<br />   UsbKey的用户在大多数情况下无法确认自己看到的数据就是自己说签名的数据！因为，签名数据源是通过</span>
				<span lang="EN-US">JavaScript</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">去控制的，而不是用户。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我举一个简单的例子，如下面的页面</span>
				<span lang="EN-US">, </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户看到并以为自己产生签名的源数据是“逮捕张子强及其同伙”</span>
				<span lang="EN-US">, </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但其实不是！</span>
		</p>
		<table class="MsoTableGrid" cellspacing="0" border="1" cellpadding="0" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 23.4pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext">
				<tbody>
						<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
								<td valign="top" width="480" style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 360pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;script src="Sign.js"&gt;&lt;/script&gt;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;OBJECT id="oCAPICOM" <o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">codeBase="capicom.cab#version=2,0,0,3" classid="clsid:A996E<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="48" numbertype="1" negative="False" w:st="on" unitname="C">48C</st1:chmetcnv>-D3DC-4244<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="89" numbertype="1" negative="True" w:st="on" unitname="F">-89F</st1:chmetcnv>7-AFA33EC60679"&gt;&lt;/OBJECT&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p> </o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;br&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;form id="writeSig" method="post" name="writeSig" action="/SignServlet" target="_top"&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看上去进行签名的数据：</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;input <span style="COLOR: blue">name="data"<span style="mso-spacerun: yes">  </span>value="</span></span>
												<span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">逮捕张子强及其同伙</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: blue">"</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p> </o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;br&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;!-- </span>
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实际上进行签名的数据：</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">"</span>
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">释放张子强及其同伙</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">" --&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;input type="hidden" <span style="COLOR: red">name="data_danger" value="</span></span>
												<span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">释放张子强及其同伙</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: red">"</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;br&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p> </o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数字签名结果：</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;textarea cols="100" rows="20" id="theSignedData"&gt;&lt;/textarea&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;br&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;INPUT TYPE="button" name=t1 <o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">value="</span>
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">签名数据</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">" onclick="theSignedData.value=pkiSignData(<span style="COLOR: red">data_danger.value</span>)"&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;/form&gt;</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上面的恶意例子能够运行于所有的</span>
				<span lang="EN-US">USBKey</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的页面，用户签名的数据其实是“释放张子强及其同伙”。但由于数据被隐藏于页面之后，用户根本看不到，以至于产生恶意诱导签名的严重后果。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">防止这种恶意诱导签名的办法通常是在服务器要确保所有的涉及数字签名的页面在传递到客户端</span>
				<span lang="EN-US">IE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">浏览器前，都不会被篡改，但这种方法不能保证</span>
				<span lang="EN-US">100%</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安全，因为在用户那一端，仍然存在一种非常高风险的诱导签名的可能，甚至是未经用户许可，直接调用用户</span>
				<span lang="EN-US">USBKey</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">去产生恶意数字签名，看下面的例子：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户在浏览页面的时候，已经在页面背后无声无色地产生了数字签名，而且用户根本无法知道自己已经对“</span>
				<span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我今天去好又多偷了几包烟</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”这样的内容进行了签名！</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下面的例子是真实的例子，能够运行于任何的</span>
				<span lang="EN-US">IE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">浏览器，最后的结果是，页面通过用户的</span>
				<span lang="EN-US">UsbKey</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生了恶意签名并送到</span>
				<span lang="EN-US">
						<a href="http://www.danger.com/">www.danger.com</a>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<table class="MsoTableGrid" cellspacing="0" border="1" cellpadding="0" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN: auto auto auto 23.4pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext">
				<tbody>
						<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
								<td valign="top" width="492" style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 369pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;script src="Sign.js"&gt;&lt;/script&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;OBJECT id="oCAPICOM" <o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">codeBase="capicom.cab#version=2,0,0,3" classid="clsid:A996E<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="48" numbertype="1" negative="False" w:st="on" unitname="C">48C</st1:chmetcnv>-D3DC-4244<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="89" numbertype="1" negative="True" w:st="on" unitname="F">-89F</st1:chmetcnv>7-AFA33EC60679"&gt;&lt;/OBJECT&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;body onLoad="signWithAllowed()"&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;br&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;form<span style="mso-spacerun: yes">  </span>id="writeSig" method="post" name="writeSig" action="/SignServlet" target="_top"&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你在浏览文书：</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;input name="data"<span style="mso-spacerun: yes">  </span>value="</span>
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">逮捕张子强及其同伙</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">"&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你以为这是仅仅是一个用于浏览的页面！！</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p>
														</o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p> </o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;/body&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p> </o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;script&gt;<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">function signWithAllowed()<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">{<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<span style="mso-tab-count: 1">         </span>//alert('</span>
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">恶意签名执行</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">, </span>
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以下的签名将不知不觉地被产生，并保存到某个地方</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt">');<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<span style="mso-tab-count: 1">         </span>var sign_value=pkiSignData('</span> <span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我今天去好又多偷了几包烟 s</span><span lang="EN-US" style="FONT-SIZE: 9pt">');<o:p></o:p></span></p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<span style="mso-tab-count: 1">         </span>//alert(sign_value);<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<span style="mso-tab-count: 1">         </span>sendSignValueToDangerPalce();<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">}<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<o:p> </o:p>
												</span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">function sendSignValueToDangerPalce()<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">{<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">
														<span style="mso-tab-count: 1">         </span>/<span style="COLOR: red">/Send Signvalue to www.danger.com</span><o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">}<o:p></o:p></span>
										</p>
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
												<span lang="EN-US" style="FONT-SIZE: 9pt">&lt;/script&gt;</span>
										</p>
								</td>
						</tr>
				</tbody>
		</table>       在目前大多数Usbkey中均存在诱导签名的问题，在第一次产生数字签名的时候，USBKey会提示用户输入PIN，但在第2次，第3次签名动作产生的时候，这些都已经是用户无法感知的事实！<br />      这就是我为什么不希望使用B/S，而是C/S方式手段产生数字签名的原因。<br />       我的另外一篇文章提到如何通过Java调用CryptoAPI: <br />      <a href="/security/archive/2006/07/11/java_cryptoapi_csp_signature.html">http://www.blogjava.net/security/archive/2006/07/11/java_cryptoapi_csp_signature.html</a>, 已经被用于SecureX Eclipse Plugin（securex.sourceforge.net）当中。<br />      <br />      在我负责的多个业务系统中的数字签名/印章中，均存在上面的危险！除非我们能够确保恶意页面不存在，否则，某个程序员在系统中，哪怕是Insert很小一段JS代码到某个不显眼的页面，后果是非常严重的。
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34991#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Nov 2006 11:06:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34991</link>
        <guid>http://security.javaeye.com/blog/34991</guid>
      </item>
      <item>
        <title>SecureX Eclipse Plugin Alpha2发布</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34992" style="color:red;">http://security.javaeye.com/blog/34992</a>&nbsp;
          发表时间: 2006年11月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>
				<br />-----BEGIN PGP SIGNED MESSAGE-----<br />Hash: SHA1</p>
		<p>在Alpha1(<a href="/security/archive/2006/11/08/SecureX-Eclip">http://www.blogjava.net/security/archive/2006/11/08/SecureX-Eclip</a><br />sePlugin.html)的基础上<br />增加了一下Feature:<br />支持向导创建KeyStore<br />支持创建KeyPair<br />修正了Alpha1的Editor没有Titile的Bug<br />实现缓存KeyStore密码，免去开发阶段不断输入KeyStore密码<br />的繁琐</p>
		<p>UpdateSite: <a href="http://securex.sourceforge.net/updatesite">http://securex.sourceforge.net/updatesite</a></p>
		<p>
				<br />Sourceforge下载地址<br /><a href="http://sourceforge.net/project/securex">http://sourceforge.net/project/securex</a></p>
		<p>下一个版本将提供一个PGP Eclise<br />Plugin，作为SecureX的一个标准插件。<br />1，集成PGP文件加密/签名的PGP，为SecureX PGP Eclipse<br />Plugin提供一个雏形<br />1）PGP文件加密，PGP文本CopyClipboard加密<br />2）浏览，导入，导出PGP Key<br />3）浏览，导入，导出PGP Keyring<br />4）Upload PGP钥匙到pgp.org.cn</p>
		<p>-----BEGIN PGP SIGNATURE-----<br />Version: PGP Desktop 9.0.5 - Enterprise license<br />Comment: <a href="http://www.pgp.org.cn">http://www.pgp.org.cn</a></p>
		<p>iQA/AwUBRWB1202j31FcBpdPEQKJewCgtM1prtvdmEC5OEVCiDZw4+TpQvkAoK9T<br />KES1VLW/1EHNyOGQDmtTOrYB<br />=8mix<br />-----END PGP SIGNATURE-----<br /></p>
		<p>
		</p>
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34992#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 11 Nov 2006 13:56:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34992</link>
        <guid>http://security.javaeye.com/blog/34992</guid>
      </item>
      <item>
        <title>发布SecureX Eclipse Plugin 2.0.0 alpha版本</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34993" style="color:red;">http://security.javaeye.com/blog/34993</a>&nbsp;
          发表时间: 2006年11月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          What's New in  SecureX 2.0<tr><td class="bodyText"><p><strong>SecureX</strong> is a powerful java library for security developerment purpose. SecureX contains three parts:</p><p>1, SecureX-Keytool Eclipse Plugin [GNU License] </p><p>Provide a set of Classes that can use for Java Key/Cerficate Management</p><p>2, SecureX-SecureSign Library [Apache License] </p><p>3, SecureX-CryptoAPI [Apache License] <br /></p></td></tr><tr><td class="subHeader" id="monthformat"><br />4, SecureX PGP Eclipse Plugin [Bouncy Castle License, Still developing]<br /> <br />SecureX Keytool Library Features </td></tr><tr><td class="bodyText" valign="top"><p>1, Support RSA/DSA Digital Signature Agorithms<br />2, Support MD5/SHA/RIPEMD Digest Agorithms<br />3, Support DES/IDEA/TripleDES/Blowfish Cryptography Agorithms<br />4, Support X.509v1, X.509v3 and CRL Standard<br />5, Support Keystore management for various keystore types including:<br />JKS JCEKS PKCS #12 BKS UBER <br />6, Support add/delete/rename entry(trustcert and keyentry) of Keystore<br />7, Support cacerts configuration for JAVA 1.3/1.4/1.5<br />8, Support PrivateKey(PKCS#12) Import/Export<br />9, Support CSR Generation and CA-Reply Import<br />10, Support Password management for KeyStore and PrivateKey<br />11, Support TreeView for X.509 Certificate, CRL and CRL entry X.509 V3 extensions<br />12, Support certificates export in these formats : X.509/PKCS #7/DER/PEM<br /></p></td></tr><tr><td class="subHeader" id="monthformat"> <br />SecureX SecureSign Library Features </td></tr><tr><td class="bodyText" valign="top"><p>1, Support Yallow and JCE Secure Random<br />2, Support XML Signature Standard<br />3, Support BMP Watermark (Build in with SecureRandom Bitmap Stream Embbed technology)<br />4, Support GIF Watermark (Build in RSA-OAEP Embbed technology)<br />5, Support PNG Watermark (Build in Secure Random and LSB Techonnlogy)</p></td></tr><tr><td class="subHeader" id="monthformat"> <br />SecureX CryptoAPI Library Features </td></tr><tr><td class="bodyText" valign="top"><ul><li>Management X.509 certificates and RSA private keys in Windows CertStores 
</li><li>Set/Get/List/Remove Trust Cerficate and KeyEntry on Windows CertStores(MY, ROOT, CA, ADDRESS_BOOK etc) 
</li><li>Support for Certificate Chain Building. 
</li><li>Create/Verify signatures with RSA private keys using the following algorithms: 
<ul><li>SHA1withRSA 
</li><li>MD5withRSA 
</li><li>MD2withRSA </li></ul></li><li>Encrypt/decrypt data with RSA public/private keys using the following algorithm, mode and padding: 
<ul><li>RSA/ECB/PKCS1Padding </li></ul></li><li>Wrap and unwrap symmetric- and asymmetric keys with RSA key pairs through Microsoft CryptAPI and PKCS#11. 
</li><li>Management for MS CSP and PKCS#11 CSP 
</li><li>PIN Call Back interface for Private key 
</li><li>Set and get Microsoft CryptoAPI friendly names for certificates. 
</li><li>Get Microsoft CryptoAPI friendly names for system (certificate) stores. 
</li><li>Get detailed information about PKCS#11 hardware token </li></ul><p> </p></td></tr><tr><td class="subHeader" id="monthformat"> <br />SecureX Eclipse Plugin </td></tr><tr><td class="bodyText" valign="top"><ul><li>Eclipse 3.1 UpdateSite:    <a href="http://securex.sourceforge.net/updatesite">http://securex.sourceforge.net/updatesite</a></li></ul><p><br /><a href="/security/articles/SecureX_EclipsePlugin_Setup.html">Install SecureX</a><br /><br /><a href="/security/articles/use_SecureX_Eclipse_Plugin.html">Guide of SecureX</a><br /><br /></p></td></tr>
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34993#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Nov 2006 16:45:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34993</link>
        <guid>http://security.javaeye.com/blog/34993</guid>
      </item>
      <item>
        <title>[转载]推荐一下CSDN《程序员》的《开源大本营》</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34994" style="color:red;">http://security.javaeye.com/blog/34994</a>&nbsp;
          发表时间: 2006年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>战战兢兢，如履薄冰。这是形容在制作这本增刊时的心情，因为《程序员》杂志创刊6年来，出增刊还是第一次。主题选择是否正确？价格是否合理？能否得到读者的认可？这些问题都使我们忐忑不安。</div>
		<div>
		</div>
		<div>
				<br />像战士一样去战斗。这是形容工作状态。虽然心情种种不安，但宣传刊登出之后，发行部的电话就没有停歇过，基本上每天都能收到读者的来电，询问增刊事宜。是压力也是挑战，因为我们知道在开发的一线阵营里，有人在关注着这本杂志的进展。确实，像战士一样，联系业界的技术专家，沟通稿件模式，整整的两个月的时间里，除了《程序员》杂志的正常出版外，我们倾尽全力扑在这个项目上。每个人心中着一个倒计时表。我们幸运，开源这一选题得到专家的热烈响应，他们欣然接受邀请，参与到增刊的撰稿中来。中国开源软件推进联盟主席陆首群先生闻听此讯，也特别撰稿分享中国开源软件的现状与未来。他们都是战士！</div>
		<div>
		</div>
		<div>
				<br />我们的心愿。当最后一篇稿件完成时，我们能感受到稿件背后的能量。软件开发领域日新月异，特别是在开源方面，中国开源已经启航，我们期望2006年的这本有关开源的有让更多的读者了解开源软件，进而投入到开源世界的怀抱中来!</div>
		<div>
		</div>
		<div>
				<br />本增刊共分二十个篇章，根据软件开发生命周期的各技术点划分，包括开源协议、操作系统、数据库、应用服务器、开发平台、编译器、动态语言、开发框架、建模工具、项目管理、版本控制、软件测试、缺陷管理、代码优化、Cache、安全、SOA&amp;Web Services、微软开源技术及开源世界里的故事等，一网打尽开源领域里所有重点而实用的软件。</div>
		<div>
		</div>
		<div>
				<br />篇章架构主要包括（针对此领域重点软件）软件基本介绍、软件架构与应用、最新版本与特性、Step by Step、背后的故事、FAQ、推荐书目及推荐网络资源等，力争在最短的篇幅内包罗最详尽的信息。</div>
		<div>
		</div>
		<div>
				<br />这不是一本针对某一软件的参考指南，这是一本针对整个开源软件领域的参考指南！</div>
		<div>
		</div>
		<div>
				<br />最后再做一个广告：二十个领域，数十位专家，你值得信赖的《开源大本营》！</div>
		<div>
				<strong>随刊附赠1CD</strong>
		</div>
		<div>
		</div>
		<div>
		</div>
		<div>在线订阅：<a href="http://www.dearbook.com.cn/opensource2/index.aspx">http://www.dearbook.com.cn/opensource2/index.aspx</a><br />在线讨论：<a href="http://community.csdn.net/Expert/topic/5035/5035613.xml">http://community.csdn.net/Expert/topic/5035/5035613.xml</a></div>
		<div>
		</div>
		<div>
		</div>
		<div>
		</div>
		<div>
		</div>
		<div>
		</div>
		<div>
		</div>
		<div align="center">
				<strong>
						<font size="6">目 录</font>
				</strong>
		</div>
		<div>
		</div>
		<div>
				<strong>开源协议篇</strong>
				<br />序言... 2<br />开源软件定义... 3<br />自由软件与开源软件的区别... 3<br />软件许可证分类... 4<br />开源组织... 7<br />相关人物... 8<br />推荐书目... 10<br />相关资源网站... 11</div>
		<div>
		</div>
		<div>
				<br />
				<strong>操作系统篇... 12</strong>
				<br />序言... 13<br />Solaris 14<br />Red Hat 19<br />SUSE. 21<br />FreeBSD.. 23<br />Debian. 25<br />商业同类产品... 26<br />推荐书目... 28<br />相关资源网站... 29</div>
		<div>
		</div>
		<div>
				<br />
				<strong>数据库篇... 31</strong>
				<br />序言... 32<br />PostgreSQL. 33<br />MySQL. 36<br />FireBird. 36<br />商业同类产品... 38<br />推荐书目... 38<br />相关资源网站... 39</div>
		<div>
		</div>
		<div>
				<br />
				<strong>应用服务器篇... 40</strong>
				<br />序言... 41<br />Tomcat 42<br />JBoss 45<br />Apache Geronimo. 47<br />GlassFish. 48<br />商业同类产品... 48<br />推荐书目... 49<br />相关资源网站... 50</div>
		<div>
		</div>
		<div>
				<br />
				<strong>开发平台篇... 51</strong>
				<br />序言... 52<br />Eclipse. 53<br />NetBeans 58<br />其它开源平台... 59<br />商业同类产品... 60<br />平台发展趋势... 62<br />推荐书目... 62<br />相关资源网站... 63</div>
		<div>
		</div>
		<div>
				<br />
				<strong>编译器篇... 64</strong>
				<br />序言... 65<br />ANTLR... 66</div>
		<div>
		</div>
		<div>动态语言篇... 76</div>
		<div>
		</div>
		<div>序言... 77<br />Ruby on Rails 78<br />Python. 83<br />Groovy. 86<br />推荐书目... 88<br />相关资源网站... 89</div>
		<div>
		</div>
		<div>
				<br />
				<strong>开发框架篇... 90</strong>
				<br />序言... 91<br />WebWork. 92<br />Spring Framework. 101<br />相关资源网站... 106<br />Hibernate. 107<br />推荐书目... 116<br />相关资源网站... 117</div>
		<div>
		</div>
		<div>
				<br />
				<strong>建模工具篇... 118</strong>
				<br />序言... 119<br />StarUML. 120<br />ArgoUML. 121<br />Umbrello. 122<br />推荐书目... 123</div>
		<div>
		</div>
		<div>
				<br />
				<strong>项目管理篇... 125</strong>
				<br />序言... 126<br />Teamwork. 127<br />GanttProject 132<br />XPlanner 134<br />Tudu Lists 136<br />商业同类产品... 137<br />推荐书目... 139<br />相关资源网站... 140</div>
		<div>
		</div>
		<div>
				<br />
				<strong>版本管理篇... 142</strong>
				<br />序言... 143<br />CVS. 144<br />Subversion. 148<br />Git 151<br />商业同类产品... 155<br />推荐书目... 155</div>
		<div>
		</div>
		<div>
				<br />
				<strong>软件测试篇... 156</strong>
				<br />序言... 157<br />JUnit 158<br />jMock. 166<br />Selenium.. 167<br />Apache JMeter 168<br />商业同类产品... 169<br />推荐书目... 171<br />相关资源网站... 172</div>
		<div>
		</div>
		<div>
				<br />
				<strong>缺陷管理篇... 174</strong>
				<br />序言... 175<br />Scarab. 178<br />TrackIt 182<br />ITracker 184<br />Bugzilla. 185<br />商业同类产品... 187<br />推荐书目... 188<br />相关资源网站... 189</div>
		<div>
		</div>
		<div>
				<br />
				<strong>代码检测篇... 191</strong>
				<br />序言... 192<br />Checkstyle. 193<br />FindBugs 199<br />Jalopy. 201<br />PMD.. 202<br />商业同类产品... 204<br />推荐书目... 205<br />相关资源网站... 207</div>
		<div>
		</div>
		<div>
				<br />
				<strong>Cache篇... 208</strong>
				<br />序言... 209<br />Cache指南... 210<br />ORM里的Cache. 214<br />Web里的Cache. 216<br />总结... 219</div>
		<div>
		</div>
		<div>
				<br />
				<strong>安全篇... 220</strong>
				<br />序言... 221<br />Web Services安全... 222<br />PGP. 225<br />SSO (Single Sign-on) 229<br />推荐书目... 237<br />相关资源网站... 238</div>
		<div>
		</div>
		<div>
				<br />
				<strong>AJAX开发篇... 239</strong>
				<br />序言... 240<br />Prototype. 241<br />Dojo. 244<br />DWR. 246<br />其他开源框架... 250<br />推荐书目... 252<br />推荐资源网站... 253</div>
		<div>
		</div>
		<div>
				<br />
				<strong>性能剖析篇... 254</strong>
				<br />序言... 255<br />TPTP. 256<br />Eclipse Profiler Plugin. 263<br />P6Spy. 264<br />SQL Profiler 264<br />IronTrack SQL. 265<br />商业同类产品... 265<br />推荐书目... 267<br />相关资源网站... 268</div>
		<div>
		</div>
		<div>
				<br />
				<strong>.NET开源篇... 269</strong>
				<br />序言... 270<br />微软与开源全方面对比... 271<br />.NET开源代码库与开源框架... 275</div>
		<div>
		</div>
		<div>
				<br />
				<strong>开源故事篇... 280</strong>
				<br />蓝色巨人的开源之路... 281<br />剑走偏锋：BEA的混合策略... 285<br />JSF、Ajax双剑合壁... 288<br />2006北京开源高峰论坛纪实... 292</div>
		<div>
		</div>
		<div>
				<br />
				<strong>附录　</strong>开源厂商与组织... 297</div>
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34994#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 06 Nov 2006 08:54:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34994</link>
        <guid>http://security.javaeye.com/blog/34994</guid>
      </item>
      <item>
        <title>用JSR181驱动SpringSide Web Services</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34995" style="color:red;">http://security.javaeye.com/blog/34995</a>&nbsp;
          发表时间: 2006年10月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>和小白一起探讨，觉得如果XFire用JSR181去驱动，一定会非常简洁。<br />从JSR175发展过来的JSR181，早期实现于Weblogic Workshop 7.1，我们<br />对@WebService, @WebMethod这些标记的最初理解是将Java类通过Annotation<br />直接编译成Weblogic的JWS，BEA作为JSR181标准的Leader，很大胆地将<br />JSR181用于Weblogic 9.1，去驱动Weblogic下一代的WebService框架。<br /><br />SpringSide团队开始选用XFire作为SS 1.0的时候，已经充分考虑Xfire在JSR181<br />支持上的优势(对比于Axis)。<br /><br />作为Spring Web Services的一个最佳实践，我们已经开始考虑基于JSR181驱动的<br />Web Service框架，我们一致认为JSR181能够为架构解耦提供非常切实有效的<br />途径。<br /><br />在下一个SS2.0版本中，我们考虑提供以下的DEMO：<br />1，基于Security的JSR181 DEMO<br />2，基于Conversation的JSR181 DEMO<br />3，基于Transaction的JSR181 DEMO<br />4，基于Context的JSR181 DEMO<br /><br />另外，在框架考虑上，会使用JSR标记Handlers的方式(配置文件也是可以，但放在<br />Annotation，带来的是更好的易读性)<br /></p>
		<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: #000000">    </span>
				<span style="COLOR: #0000ff">package</span>
				<span style="COLOR: #000000"> examples.webservices.handlers;<br /><br />    @WebService ()<br />    @SOAPMessageHandlers ( {<br />      @SOAPMessageHandler (<br />       className</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">examples.webservices.soap_handlers.simple.ServerHandler1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">),<br />      @SOAPMessageHandler (<br />       className</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">examples.webservices.soap_handlers.simple.ServerHandler2</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />    } )<br /><br />    </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> HandlersImpl {<br />            </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">Your Code</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">    }</span>
		</div>
		<br />
		<br />另外，在SS2.0的下一个版本中，提供SOAPBinding，可以设置其Style为Document或者RPC，Encode和Literal也是能够定制的（跟Workshop一样方便），也是一件简单的事情：<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"><img src="/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">@WebService<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />@SOAPBinding(style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">SOAPBinding.Style.DOCUMENT,<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />use</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">SOAPBinding.Use.LITERAL,<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />parameterStyle</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">SOAPBinding.ParameterStyle.BARE)<br /><img src="/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_161_364_Open_Image" onclick="this.style.display='none'; Codehighlighter1_161_364_Open_Text.style.display='none'; Codehighlighter1_161_364_Closed_Image.style.display='inline'; Codehighlighter1_161_364_Closed_Text.style.display='inline';" align="top" /><img src="/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_161_364_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_161_364_Closed_Text.style.display='none'; Codehighlighter1_161_364_Open_Image.style.display='inline'; Codehighlighter1_161_364_Open_Text.style.display='inline';" align="top" style="DISPLAY: none" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> EchoService </span><span id="Codehighlighter1_161_364_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="/Images/dot.gif" /></span><span id="Codehighlighter1_161_364_Open_Text"><span style="COLOR: #000000">{<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />@WebMethod(action</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">echo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />@WebResult(targetNamespace</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">“http:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">www.springside.org.cn”, name="echoResult")</span><span style="COLOR: #008000"><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String echo(<br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" />@WebParam(targetNamespace</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">“http:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><span style="COLOR: #008000">www.springside</span>.org.cn”, name="echoMsg") String msg){</span><span style="COLOR: #008000"><br /><img src="/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> msg;<br /><img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />}</span></div><br />同时，考虑很多人喜欢搞作SOAP Header，利用它来做一些业务标记处理，我们会支持下面的方式<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: #000000">@WebMethod<br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String echo(<br />@WebParam(name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">myHeader</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />header</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,<br />mode</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">WebParam.Mode.INOUT) StringHolder header,<br />String msg){<br />String ret </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> header.value </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> msg;<br />header.value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">got it</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> ret;<br />}</span></div>来自：<br />[<a href="/security/archive/2006/10/31/Spring_JSR181_XFire_WebService.html" title="view: 用JSR181驱动SpringSide Web Services" id="Editor_Edit_hlEntryLink" target="_blank"><font color="#002c99">http://www.blogjava.net/security/archive/2006/10/31/Spring_JSR181_XFire_WebService.html</font></a>]
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34995#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 31 Oct 2006 09:47:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34995</link>
        <guid>http://security.javaeye.com/blog/34995</guid>
      </item>
      <item>
        <title>PHP与CAS做SSO</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34996" style="color:red;">http://security.javaeye.com/blog/34996</a>&nbsp;
          发表时间: 2006年10月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天在CAS Server 3.0+CAS Client 2.0.11环境中，增加了一台PHP的Web Server，<br />使用PHPCAS做SSO，按照以往的思路，配置了一下PHPCAS的CAS目录下的<br />2个php文件，指定了CAS Server的位置，一连就OK了。<br />[附：<br />   需要Enable几个PHP的Extension，包括SSL, DOM, ZIP等等<br />]<br />PHPCAS的实现比较随便，默认配置下，客户端连CAS Server(HTTPS)都不去做<br />证书校验。
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34996#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 26 Oct 2006 08:04:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34996</link>
        <guid>http://security.javaeye.com/blog/34996</guid>
      </item>
      <item>
        <title>PGP论坛开始启用(pgp.sourceforge.net/forum)</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/28458" style="color:red;">http://security.javaeye.com/blog/28458</a>&nbsp;
          发表时间: 2006年10月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://pgp.sourceforge.net/forum">http://pgp.sourceforge.net/forum</a>
		<br />欢迎探讨PGP技术
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/28458#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Oct 2006 20:22:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/28458</link>
        <guid>http://security.javaeye.com/blog/28458</guid>
      </item>
      <item>
        <title>Federate Portal，面向SOA的Portal</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/34998" style="color:red;">http://security.javaeye.com/blog/34998</a>&nbsp;
          发表时间: 2006年10月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这段时间对Federate的应用蛮感兴趣，Weblogic Portal 9.2是第一个实现Federate Portal的产品，它紧紧依赖WSRP协议，让多个Portal之间实现真正的分布式Porlet调用。<br />1，Federate Portal是真正的分布式结构，Porlet都是远程部署的，然后通过WSRP集成到Federate Portal中<br />2，完全松耦合的架构设计，远程porlet都是可以独立于Federate Portal进行设计/开发/维护<br />3，远程Porlet可以协作交互，包括数据交换<br />4，如果你要使用那些远程的porlet，你无需懂得编写程，那只是click几下的功夫<br />5，Federate支持最新的SOA标准，包括WSRP, SOAP, WSDL, SAML, UDDI, WS-Security等等<br /><br />下图是BEA提出的Producer-Consumer模式，体现了Federate Portal的一种应用场景。<br />我们可以看到，由于porlet的标准化(JSR168)，WSRP可以调用多个平台上的Porlet，包括weblogic, websphere, Jobss, sun, oracle.....<br /><br /><img src="/images/blogjava_net/security/federateportal.jpg" border="0" height="377" alt="federateportal.jpg" width="587" /><br /><br />用户面向的是Conusmer，而Consumer起了一个集成者的角色，同时向用户综合多种<br />资源，形成一个统一门户中心的作用，Consumer与其他Producers是通过WSRP协议，<br />基于SOAP/HTTP的传输协议获取远程porlet的信息，返回给用户。<br /><img src="/images/blogjava_net/security/federateportal_call.jpg" border="0" height="233" alt="federateportal_call.jpg" width="600" /><br /><br />上图一个非常关键的技术是WSRP, WSRP是Web Services for Remote Portlets的简称。很明显，这是一种基于Web Services的集成技术。<br /><br /><br /><br />FederatePortal和WSRP的相关参考资料<br /><ul><li><a href="http://www.oasis-open.org/committees/download.php/3343/oasis-200304-wsrp-specification-1.0.pdf">WSRP 1.0 Specification</a></li><li><a href="http://www.oasis-open.org/committees/download.php/11177">WSRP 1.0 Primer</a>. </li><li><a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp">WSRP Technical Committee home page</a>.</li><li><a href="http://jcp.org/en/jsr/detail?id=168">Java Portlet API (JSR168)</a></li><li><a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss">Web Services Security</a></li><li><a href="http://edocs.beasys.com/wlp/docs81/wsrp/index.html">WebLogic Portal Documentation on WSRP</a></li><li><a href="http://edocs.beasys.com/wlp/docs81/index.html">WebLogic Portal Documentation</a></li><li><a href="http://dev2dev.bea.com/products/wlportal81/articles/portlet_preferences.jsp">Portlet Preferences, article</a></li><li><a href="http://dev2dev.bea.com/products/wlportal81/articles/urls_in_portal.jsp">URLs in WebLogic Portal - A Tutorial</a></li><li><a href="http://edocs.beasys.com/wls/docs81/dvspisec/ia.html">WebLogic Server documentation on Identity Assertion Providers</a></li></ul>
          <br/>
          <span style="color:red;">
            <a href="http://security.javaeye.com/blog/34998#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Oct 2006 22:25:00 +0800</pubDate>
        <link>http://security.javaeye.com/blog/34998</link>
        <guid>http://security.javaeye.com/blog/34998</guid>
      </item>
      <item>
        <title>Yale CAS as an Acegi Client in SpringSide</title>
        <author>security</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://security.javaeye.com">security</a>&nbsp;
          链接：<a href="http://security.javaeye.com/blog/28460" style="color:red;">http://security.javaeye.com/blog/28460</a>&nbsp;
          发表时间: 2006年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>First,  Set <a href="http://www.springside.org.cn" title="SpringSide" target="_blank">SpringSide</a>'s web.xml,  we use Acegi CAS Filter:</p>
		<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: 55.15%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 85px; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter-mapping</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">filter-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">hibernateFilter</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter-name</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">url-pattern</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">/j_acegi_cas_security_check</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">url-pattern</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">filter-mapping</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
		</div>
		<p>We Should Set Main ACEGI application Context：<br />1) <font color="#0000ff">filterChainProxy </font>should add a cas filter as Acegi's Sample, but here, we reuse <br />authenticationProcessingFilter, which we act as cas client filter.</p>
		<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: 59.79%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 190px; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">bean </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="filterChainProxy"</span>
				<span style="COLOR: #ff0000">
						<br />          class</span>
				<span style="COLOR: #0000ff">="org.acegisecurity.util.FilterChainProxy"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">property </span>
				<span style="COLOR: #ff0000">name</span>
				<span style="COLOR: #0000ff">="filterInvocationDefinitionSource"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">value</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON<br />                PATTERN_TYPE_APACHE_ANT<br />                /**=httpSessionContextIntegrationFilter,anonymousProcessingFilter,authenticationProcessingFilter,rememberMeProcessingFilter,logoutFilter,channelProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,exceptionTranslationFilter,filterInvocationInterceptor<br />            </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">value</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">property</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">bean</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<br />2) <font color="#0000ff">authenticationProcessingFilter</font>, of course, play the most important role in this<br />applicationContext_acegi.xml. <br />In <a href="http://www.springside.org.cn" title="SpringSide" target="_blank">SpringSide</a>,  /admin  is protected resource, so defaultTargetUrl protected it<br />and all those request to the target url must be authenticated by <font color="#0000ff">authenticationManager.</font><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: 62.71%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 360px; BACKGROUND-COLOR: #eeeeee"><img src="/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="authenticationProcessingFilter"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.ui.cas.CasProcessingFilter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="authenticationManager"</span><span style="COLOR: #ff0000"> ref</span><span style="COLOR: #0000ff">="authenticationManager"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="authenticationFailureUrl"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/security/login.jsp?login_error=1</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="defaultTargetUrl"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/admin/</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="filterProcessesUrl"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/j_acegi_cas_security_check</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="rememberMeServices"</span><span style="COLOR: #ff0000"> ref</span><span style="COLOR: #0000ff">="rememberMeServices"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="exceptionMappings"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />                org.acegisecurity.userdetails.UsernameNotFoundException=/security/login.jsp?login_error=user_not_found_error<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />                org.acegisecurity.BadCredentialsException=/security/login.jsp?login_error=user_psw_error<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />                org.acegisecurity.concurrent.ConcurrentLoginException=/security/login.jsp?login_error=too_many_user_error<br /><img src="/Images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="/Images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div><br /><br />3) Then, we set all the needed beans in CAS Filter<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: 62.63%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 1006px; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000"> =========  Acegi as a CAS Client的配置============= </span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"> <br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="exceptionTranslationFilter"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.ui.ExceptionTranslationFilter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="authenticationEntryPoint"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="casProcessingFilterEntryPoint"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    <br />   </span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000"> cas config </span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="casProcessingFilterEntryPoint"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="loginUrl"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">https://sourcesite:8443/cas/login</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceProperties"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="serviceProperties"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    <br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="authenticationManager"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.providers.ProviderManager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="providers"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">list</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />                </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="casAuthenticationProvider"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">list</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    <br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="casAuthenticationProvider"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.providers.cas.CasAuthenticationProvider"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="casAuthoritiesPopulator"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">bean</span><span style="COLOR: #0000ff">="casAuthoritiesPopulator"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="casProxyDecider"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="casProxyDecider"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="ticketValidator"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="casProxyTicketValidator"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="statelessTicketCache"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="statelessTicketCache"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="key"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">my_password_for_this_auth_provider_only</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="casProxyTicketValidator"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="casValidate"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">https://sourcesite:8443/cas/proxyValidate</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceProperties"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="serviceProperties"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000"> <br />    &lt;bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.AcceptAnyCasProxy" /&gt;<br />    </span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="casProxyDecider"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.providers.cas.proxy.RejectProxyTickets"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />    <br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="serviceProperties"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.ui.cas.ServiceProperties"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="service"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">http://gzug:8080/springside/j_acegi_cas_security_check</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="sendRenew"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">false</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    <br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="statelessTicketCache"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="cache"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="org.springframework.cache.ehcache.EhCacheFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />                </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="cacheManager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />                    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />                </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />                </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="cacheName"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="userCache"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />            </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    <br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="casAuthoritiesPopulator"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="userDetailsService"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="jdbcDaoImpl"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><br />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="casProcessingFilter"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.acegisecurity.ui.cas.CasProcessingFilter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="authenticationManager"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">local</span><span style="COLOR: #0000ff">="authenticationManager"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="authenticationFailureUrl"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/casfailed.jsp</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="defaultTargetUrl"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="filterProcessesUrl"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/j_acegi_cas_security_check</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div><br /><font color="#0000ff">casProcessingFilterEntryPoint </font>is very critical, <br /><font color="#0000ff">loginUrl </font>is the CAS Server's /login url, you should set up your CAS Server(2.0 or 3.0) and config for<br />those JKS keystore after enable SSL in Tomcat(Tomcat 5.5/conf/server.xml) and place the cacerts that<br />have the CAS Server's public cert to Acegi Client's <a href="http://java.sun.com/" title="JDK" target="_blank">JDK</a>/jre/lib/security/<br />Check <font color="#0000ff">serviceProperties </font>to make sure that <a href="http://www.springside.org.cn" title="SpringSide" target="_blank">SpringSide</a> Service url is config as /j_acegi_cas_security_check<br /><br />because Yale CAS use ticket cache for SSO impl, so we should config for <font color="#0000ff">statelessTicketCache</font><br />Just use springframework's <font color="#0000ff">ehcache</font> for <font color="#0000ff">cacheManager.</font><br /><br /><a href="http://www.springside.org.cn" title="SpringSide" target="_blank">SpringSide</a> use jdbcDaoImpl which perform database authentication. So I am very happy to use it<br />as <font color="#0000ff">casAuthoritiesPopulator</font> , which will set use detail for the user. And these info are very useful for<br />application authorization.<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: 58.79%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 280px; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="jdbcDaoImpl"</span><span style="COLOR: #ff0000"><br />          class</span><span style="COLOR: #0000ff">="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="dataSource"</span><span style="COLOR: #ff0000"> ref</span><span style="COLOR: #0000ff">="dataSource"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style=