??xml version="1.0" encoding="utf-8" standalone="yes"?>91成人高清,超碰在线免费看,精品久久人人做人人爱http://www.aygfsteel.com/security/category/8296.htmlJava Security, CAPICOM, CryptoAPI/CSP, BouncyCastle, Openssl, JCE/JCA, SSO, CAS, Tivoli, CA, PKI <br> <font color="#00f100">本站内容只兼容IE览?lt;/font> <br> <font color="#00f100">重要的文章包均含本h的PGP{֐Q本人愿意对自己的言?lt;/font> <br>zh-cnTue, 04 Sep 2007 17:51:02 GMTTue, 04 Sep 2007 17:51:02 GMT60关于配置Weblogic的NodeManager服务http://www.aygfsteel.com/security/archive/2007/09/04/weblogic_Nodemanager_configuration.htmldavid.turingdavid.turingTue, 04 Sep 2007 07:20:00 GMThttp://www.aygfsteel.com/security/archive/2007/09/04/weblogic_Nodemanager_configuration.htmlhttp://www.aygfsteel.com/security/comments/142632.htmlhttp://www.aygfsteel.com/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/142632.htmlhttp://www.aygfsteel.com/security/services/trackbacks/142632.html阅读全文

david.turing 2007-09-04 15:20 发表评论
]]>
[原创] Pass SSL Certificate to Weblogic Cluster through Apache Proxy under SSL http://www.aygfsteel.com/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.htmldavid.turingdavid.turingSat, 13 Jan 2007 11:19:00 GMThttp://www.aygfsteel.com/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.htmlhttp://www.aygfsteel.com/security/comments/93632.htmlhttp://www.aygfsteel.com/security/archive/2007/01/13/PassSSLCertificateToApacheProxy.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/93632.htmlhttp://www.aygfsteel.com/security/services/trackbacks/93632.htmlthrough Apache Proxy under SSL.
Before you read this paper, please read another blog of mine( but not
necessary).

<>
http://www.aygfsteel.com/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html  阅读全文

david.turing 2007-01-13 19:19 发表评论
]]>
[原创]Apache Proxy with Weblogic Cluster under SSLhttp://www.aygfsteel.com/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.htmldavid.turingdavid.turingSun, 07 Jan 2007 06:34:00 GMThttp://www.aygfsteel.com/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.htmlhttp://www.aygfsteel.com/security/comments/92211.htmlhttp://www.aygfsteel.com/security/archive/2007/01/07/WeblogicClusterWithApacheProxyUnderSSL.html#Feedback1http://www.aygfsteel.com/security/comments/commentRss/92211.htmlhttp://www.aygfsteel.com/security/services/trackbacks/92211.html阅读全文

david.turing 2007-01-07 14:34 发表评论
]]>
发布一个简易版本的SecureXRCPhttp://www.aygfsteel.com/security/archive/2007/01/07/SecureXRCP.htmldavid.turingdavid.turingSun, 07 Jan 2007 03:16:00 GMThttp://www.aygfsteel.com/security/archive/2007/01/07/SecureXRCP.htmlhttp://www.aygfsteel.com/security/comments/92191.htmlhttp://www.aygfsteel.com/security/archive/2007/01/07/SecureXRCP.html#Feedback1http://www.aygfsteel.com/security/comments/commentRss/92191.htmlhttp://www.aygfsteel.com/security/services/trackbacks/92191.html阅读全文

david.turing 2007-01-07 11:16 发表评论
]]>
[原创]国内大部分的USBKey通过B/S方式QCAPICOMQ生数字签名的严重安全漏洞http://www.aygfsteel.com/security/archive/2006/11/13/capicom_usbkey_danger.htmldavid.turingdavid.turingMon, 13 Nov 2006 03:06:00 GMThttp://www.aygfsteel.com/security/archive/2006/11/13/capicom_usbkey_danger.htmlhttp://www.aygfsteel.com/security/comments/80837.htmlhttp://www.aygfsteel.com/security/archive/2006/11/13/capicom_usbkey_danger.html#Feedback6http://www.aygfsteel.com/security/comments/commentRss/80837.htmlhttp://www.aygfsteel.com/security/services/trackbacks/80837.html阅读全文

david.turing 2006-11-13 11:06 发表评论
]]>
SecureX Eclipse Plugin Alpha2发布http://www.aygfsteel.com/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.htmldavid.turingdavid.turingSat, 11 Nov 2006 05:56:00 GMThttp://www.aygfsteel.com/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.htmlhttp://www.aygfsteel.com/security/comments/80572.htmlhttp://www.aygfsteel.com/security/archive/2006/11/11/SecureX_Keytool_Eclipse_Plugin.html#Feedback9http://www.aygfsteel.com/security/comments/commentRss/80572.htmlhttp://www.aygfsteel.com/security/services/trackbacks/80572.html阅读全文

david.turing 2006-11-11 13:56 发表评论
]]>
发布SecureX Eclipse Plugin 2.0.0 alpha版本http://www.aygfsteel.com/security/archive/2006/11/08/SecureX-EclipsePlugin.htmldavid.turingdavid.turingWed, 08 Nov 2006 08:45:00 GMThttp://www.aygfsteel.com/security/archive/2006/11/08/SecureX-EclipsePlugin.htmlhttp://www.aygfsteel.com/security/comments/79890.htmlhttp://www.aygfsteel.com/security/archive/2006/11/08/SecureX-EclipsePlugin.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/79890.htmlhttp://www.aygfsteel.com/security/services/trackbacks/79890.html阅读全文

david.turing 2006-11-08 16:45 发表评论
]]>
[转蝲]推荐一下CSDN《程序员》的《开源大本营?/title><link>http://www.aygfsteel.com/security/archive/2006/11/06/opensource_security.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Mon, 06 Nov 2006 00:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/11/06/opensource_security.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/79309.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/11/06/opensource_security.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/79309.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/79309.html</trackback:ping><description><![CDATA[     摘要: 推荐仅仅因ؓ自己~写了安全那部分:) 旉很紧Q如有纰漏,h?nbsp; <a href='http://www.aygfsteel.com/security/archive/2006/11/06/opensource_security.html'>阅读全文</a><img src ="http://www.aygfsteel.com/security/aggbug/79309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-11-06 08:54 <a href="http://www.aygfsteel.com/security/archive/2006/11/06/opensource_security.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Yale CAS as an Acegi Client in SpringSidehttp://www.aygfsteel.com/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.htmldavid.turingdavid.turingSun, 15 Oct 2006 15:53:00 GMThttp://www.aygfsteel.com/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.htmlhttp://www.aygfsteel.com/security/comments/75320.htmlhttp://www.aygfsteel.com/security/archive/2006/10/15/Acegi_as_CAS_client_Configuration.html#Feedback1http://www.aygfsteel.com/security/comments/commentRss/75320.htmlhttp://www.aygfsteel.com/security/services/trackbacks/75320.html环境是CAS Server 3.0+Acegi 1.0+Tomcat  阅读全文

david.turing 2006-10-15 23:53 发表评论
]]>
[原创] SSO(Single Sign-on) in Action(上篇)http://www.aygfsteel.com/security/archive/2006/10/02/sso_in_action.htmldavid.turingdavid.turingMon, 02 Oct 2006 08:27:00 GMThttp://www.aygfsteel.com/security/archive/2006/10/02/sso_in_action.htmlhttp://www.aygfsteel.com/security/comments/73199.htmlhttp://www.aygfsteel.com/security/archive/2006/10/02/sso_in_action.html#Feedback12http://www.aygfsteel.com/security/comments/commentRss/73199.htmlhttp://www.aygfsteel.com/security/services/trackbacks/73199.html阅读全文

david.turing 2006-10-02 16:27 发表评论
]]>
Tomcat/Weblogic在SSL握手中,IE提交证书H口为空的问?/title><link>http://www.aygfsteel.com/security/archive/2006/09/27/ssl_cacerts_no_certificate.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 27 Sep 2006 03:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/09/27/ssl_cacerts_no_certificate.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/72258.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/09/27/ssl_cacerts_no_certificate.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/72258.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/72258.html</trackback:ping><description><![CDATA[最q有|友在Dev2dev问,<br />讉K<a href="https://yourmachine:8843/webapp">https://yourmachine:8843/webapp</a>的时候,客户端提交了I的证书H口Q如下图所C?br /><img height="302" alt="no_certificate_for_ssl.gif" src="http://www.aygfsteel.com/images/blogjava_net/security/no_certificate_for_ssl.gif" width="378" border="0" /><br /><br />如果使用的是TomcatQ则需要检查JDK/Jre/lib/security下的cacerts是否包含了客L用户<br />的Key所对应的CA证书Q如果没有,则客L出现上述H口Q因为,服务器端?br />会不信Q为客L的Private Key所{֐的ca证书Q?br /><br />如果使用WeblogicQ需要要区分Use Custom Indentity和Use Java Keystore两种方式Q?br />前者,往Weblogic的JKS导入客户端PK所对应的CA证书Q链Q,后者,?br />Jre/lib/security的cacertsQ做法跟上面一栗?img src ="http://www.aygfsteel.com/security/aggbug/72258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-09-27 11:38 <a href="http://www.aygfsteel.com/security/archive/2006/09/27/ssl_cacerts_no_certificate.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发现GDCA USBKey(电子钥匙)的CSP数字{֐实现存在~陷http://www.aygfsteel.com/security/archive/2006/09/26/gdca_signature_problem.htmldavid.turingdavid.turingTue, 26 Sep 2006 09:33:00 GMThttp://www.aygfsteel.com/security/archive/2006/09/26/gdca_signature_problem.htmlhttp://www.aygfsteel.com/security/comments/72073.htmlhttp://www.aygfsteel.com/security/archive/2006/09/26/gdca_signature_problem.html#Feedback5http://www.aygfsteel.com/security/comments/commentRss/72073.htmlhttp://www.aygfsteel.com/security/services/trackbacks/72073.html阅读全文

david.turing 2006-09-26 17:33 发表评论
]]>
9?3日成都WS-Security演讲内容E?/title><link>http://www.aygfsteel.com/security/archive/2006/09/22/WS_Security.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Thu, 21 Sep 2006 17:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/09/22/WS_Security.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/71223.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/09/22/WS_Security.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/71223.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/71223.html</trackback:ping><description><![CDATA[     摘要: 在网上收集了不少WS-Security的资料,l织了一下成都BEA UserGroup之WS-Security演讲的PPT初稿Q不知道是否有遗漏,Ƣ迎指点?nbsp; <a href='http://www.aygfsteel.com/security/archive/2006/09/22/WS_Security.html'>阅读全文</a><img src ="http://www.aygfsteel.com/security/aggbug/71223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-09-22 01:03 <a href="http://www.aygfsteel.com/security/archive/2006/09/22/WS_Security.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java安全概述http://www.aygfsteel.com/security/archive/2006/09/21/java_security_summary.htmldavid.turingdavid.turingWed, 20 Sep 2006 16:39:00 GMThttp://www.aygfsteel.com/security/archive/2006/09/21/java_security_summary.htmlhttp://www.aygfsteel.com/security/comments/70959.htmlhttp://www.aygfsteel.com/security/archive/2006/09/21/java_security_summary.html#Feedback2http://www.aygfsteel.com/security/comments/commentRss/70959.htmlhttp://www.aygfsteel.com/security/services/trackbacks/70959.html阅读全文

david.turing 2006-09-21 00:39 发表评论
]]>
[原创]实施WebService Security[WS-Security1.0]的Encrypt和Sign模式(XFire+WSS4J)http://www.aygfsteel.com/security/archive/2006/08/08/xfire_wss4j.htmldavid.turingdavid.turingTue, 08 Aug 2006 01:09:00 GMThttp://www.aygfsteel.com/security/archive/2006/08/08/xfire_wss4j.htmlhttp://www.aygfsteel.com/security/comments/62283.htmlhttp://www.aygfsteel.com/security/archive/2006/08/08/xfire_wss4j.html#Feedback26http://www.aygfsteel.com/security/comments/commentRss/62283.htmlhttp://www.aygfsteel.com/security/services/trackbacks/62283.html阅读全文

david.turing 2006-08-08 09:09 发表评论
]]>
在SpringSide实现XFire Webservice认证http://www.aygfsteel.com/security/archive/2006/07/25/XFire_Webservice_Authentication.htmldavid.turingdavid.turingTue, 25 Jul 2006 15:48:00 GMThttp://www.aygfsteel.com/security/archive/2006/07/25/XFire_Webservice_Authentication.htmlhttp://www.aygfsteel.com/security/comments/60090.htmlhttp://www.aygfsteel.com/security/archive/2006/07/25/XFire_Webservice_Authentication.html#Feedback3http://www.aygfsteel.com/security/comments/commentRss/60090.htmlhttp://www.aygfsteel.com/security/services/trackbacks/60090.htmlXFire跟Spring的天然融合,让我们可以少努力10q就能简单地在Spring中用Webservice的强大魅力,我从AXIS专向XFire有一些冲动,也吃了不亏Q但受REST一族的强力ҎQ感觉还是值得试的,因此Q在公司的系l中也把Axisd换了XFire?br />
回到SpringSideQ我大概介绍一下如何配|一个真正实用的XFire验证服务?br />SpringSide中的XFire配置文g攑֜Q?br />SpringSide-bookstore\src\org\springside\bookstore\plugins\webservice\applicationContext-webservice-server.xml
我们在里面定义各个WebserviceQ该文g其实对应于XFire官方的XFire-Servlet.xml
看看下面的BookServiceQ这是一个典型的Webservice服务Q红色的inHandlers是我挂上ȝ。它的意思是所有访问BookService的请求都会被先送到authenticationHandlerd理,我们的验证逻辑可以在里面进行?br />    <!--Web Service 在SpringMVC中的URL 路径映射-->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <value>/BookService=bookWebService</value>
        </property>
        <property name="inHandlers">
            <ref bean="authenticationHandler"/>
        </property>

    </bean>

我们接着看看authenticationHandler的代码:
我们在SpringSide中通过header方式向服务器提供验证信息Q另外一U更单的方式是创Z个Login的webservice服务Q然后在XFire Session中徏立Token信息Q?br />
package org.springside.bookstore.plugins.webservice.authentication;

import org.apache.log4j.Logger;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.exchange.InMessage;
import org.codehaus.xfire.fault.XFireFault;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
import org.jdom.Namespace;


/**
 * XFire的回调的HandlerQ在XFire配置文g中配|?br /> * Server端的认证模块Q回调处理模?br /> * 
 * ClientAuthHandler跟AuthenticationHandler要一LQ或者都不用
 * 
 * 
@author  david.turing
 * @blog  openssl.blogjava.net
 *
 
*/
public class AuthenticationHandler extends AbstractHandler {
    
private static final Logger log = Logger.getLogger(AuthenticationHandler.class);
    
    
public void invoke(MessageContext context) throws Exception {
        
        log.info(
"#AuthenticationHandler is invoked");
        InMessage message
=context.getInMessage();
        
        
final Namespace TOKEN_NS = Namespace.getNamespace("SpringSide","http://service.webservice.plugins.bookstore.springside.org");  
        
        
if(message.getHeader()==null)
        {
            
throw new XFireFault("GetRelation Service Should be Authenticated",
                    XFireFault.SENDER);
        }
        
        Element token 
= message.getHeader().getChild("AuthenticationToken", TOKEN_NS);
        
if (token == null)
        {
            
throw new XFireFault("Request must include authentication token.",
                                 XFireFault.SENDER);
        }

        String username 
= token.getChild("Username", TOKEN_NS).getValue();
        String password 
= token.getChild("Password", TOKEN_NS).getValue();

        System.out.println(
"username="+username);        
        System.out.println(
"password="+password);
        
        
if(username==null||password==null)
            
throw new XFireFault("Supplied Username and Password Please",
                    XFireFault.SENDER);
        
        
/**
         * 查用户名密码是否正确
         
*/
        PasswordAuthenticationManager pamanager
=new PasswordAuthenticationManager();
        
if(!pamanager.authenticate(username,password))
            
throw new XFireFault("Authentication Fail! Check username/password",
                    XFireFault.SENDER);
 
        
    }
}
注意QXFireFault异常是往客户端抛的,Webservice Client应该学会catch XFireFault.

服务器端是q么单,看看客户端的TestCase
package org.springside.bookstore.plugins.webservice.service;

import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import java.util.List;

import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.springside.bookstore.commons.domain.Book;
import org.springside.bookstore.plugins.webservice.authentication.ClientAuthHandler;

import junit.framework.TestCase;

public class BookServiceWithAuthenticationTestCase extends TestCase {

    
protected void setUp() throws Exception {
        
super.setUp();
    }

    
protected void tearDown() throws Exception {
        
super.tearDown();
    }
    
    
public void getBookFromWebservice() throws Exception{
    
          Service serviceModel 
= new ObjectServiceFactory()
                .create(BookService.
class);
        BookService service 
= null;
        
        
try {
            service
=(BookService) new XFireProxyFactory().create(
                    serviceModel,
                    
"http://localhost:8080/springside/service/BookService");
        } 
catch (MalformedURLException e) {
            e.printStackTrace();
        }
        
        Client client 
= ((XFireProxy) Proxy.getInvocationHandler(service)).getClient();
        
//挂上ClientAuthHandlerQ提供认?/span>
        client.addOutHandler(new ClientAuthHandler());
        List list 
= service.findBooksByCategory(null);
        assertNotNull(list);
        
for(int i=0;i<list.size();i++)
            System.out.println(((Book)list.get(i)).getName());
    }

}

你应该看C面的client.addOutHandler(new ClientAuthHandler());
没错Q它跟服务器端的AuthenticationHandler是一对,一起用的Q?br />也就是,每个被送往WebService服务的请求都被ClientAuthHandler处理q了?br />看看ClientAuthHandler做了些什么:
package org.springside.bookstore.plugins.webservice.authentication;

import org.apache.log4j.Logger;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
import org.jdom.Namespace;

/**
 * 客户端端的认证模块,回调处理模块
 * 每个需要认证的WebServiceҎ都可以挂q个Handler
 * 
 * 仅用于DemoQ从解耦和易用性出发,
 * 没有跟Acegil合Q你可以L扩展
 * 默认用户?密码是admin/admin
 * 
 * ClientAuthHandler跟AuthenticationHandler要一LQ或者都不用
 * 
 * 
@author  david.turing
 *
 * @blog openssl.blogjava.net
 
*/    
public class ClientAuthHandler extends AbstractHandler {
        
private static final Logger log = Logger.getLogger(ClientAuthHandler.class);
        
        
//客户端自己配|用户名密码或者更安全的KeyStore方式
        private String username = "admin";
        
private String password = "admin";
        
        
public ClientAuthHandler() {
        }
        
        
public ClientAuthHandler(String username,String password) {
            
this.username = username;
            
this.password = password;
        }
        
        
public void setUsername(String username) {
            
this.username = username;
        }
        
        
public void setPassword(String password) {
            
this.password = password;
        }
        
        
public void invoke(MessageContext context) throws Exception {
                        
            
/*******************************************
             * Soap Header方式
             * 从Soap Header中获取用户名密码
             ******************************************
*/
            
final Namespace ns = Namespace.getNamespace("SpringSide","http://service.webservice.plugins.bookstore.springside.org");  
            Element el 
= new Element("header",ns);

            Element auth 
= new Element("AuthenticationToken", ns);
            Element username_el 
= new Element("Username",ns);
            username_el.addContent(username);
            Element password_el 
= new Element("Password",ns);
            password_el.addContent(password);
            auth.addContent(username_el);
            auth.addContent(password_el);
            el.addContent(auth);            
            context.getCurrentMessage().setHeader(el);            
            log.info(
"ClientAuthHandler done!");
        }
    }

不就是往header里面注入username,passwordQ?br />
在SpringSide中,所有的Spring配置文g都被白分散到各个Module中去了,Wuyu原先是在Plugin中提供Webservice功能Q因此,我仍然在Plugin中创建XFire接口?br />SpringSide的Spring配置文g攑֜:
SpringSide-bookstore\webapp\WEB-INF\springmvc-servlet.xml
该文件定义了Plugin的xml:
AuthenticationHandlerq个Bean需要先定义在Plugins-servlet.xml中,其它很简单,大家去Try一下就知道了?img src ="http://www.aygfsteel.com/security/aggbug/60090.html" width = "1" height = "1" />

david.turing 2006-07-25 23:48 发表评论
]]>
How to use Java produce Signature by USBKey under CryptoAPI/CSPhttp://www.aygfsteel.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.htmldavid.turingdavid.turingTue, 11 Jul 2006 05:24:00 GMThttp://www.aygfsteel.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.htmlhttp://www.aygfsteel.com/security/comments/57638.htmlhttp://www.aygfsteel.com/security/archive/2006/07/11/java_cryptoapi_csp_signature.html#Feedback1http://www.aygfsteel.com/security/comments/commentRss/57638.htmlhttp://www.aygfsteel.com/security/services/trackbacks/57638.html阅读全文

david.turing 2006-07-11 13:24 发表评论
]]>
A Java Sample For jCaptchahttp://www.aygfsteel.com/security/archive/2006/06/20/jcaptcha_sample.htmldavid.turingdavid.turingTue, 20 Jun 2006 14:10:00 GMThttp://www.aygfsteel.com/security/archive/2006/06/20/jcaptcha_sample.htmlhttp://www.aygfsteel.com/security/comments/54077.htmlhttp://www.aygfsteel.com/security/archive/2006/06/20/jcaptcha_sample.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/54077.htmlhttp://www.aygfsteel.com/security/services/trackbacks/54077.html阅读全文

david.turing 2006-06-20 22:10 发表评论
]]>
CAS协议的抓包分?/title><link>http://www.aygfsteel.com/security/archive/2006/05/26/sso_cas_traffic.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Fri, 26 May 2006 03:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/05/26/sso_cas_traffic.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/48284.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/05/26/sso_cas_traffic.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/48284.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/48284.html</trackback:ping><description><![CDATA[     摘要: CAS抓包分析Q简单看看从login到serviceValidate的参C递过E?nbsp; <a href='http://www.aygfsteel.com/security/archive/2006/05/26/sso_cas_traffic.html'>阅读全文</a><img src ="http://www.aygfsteel.com/security/aggbug/48284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-05-26 11:27 <a href="http://www.aygfsteel.com/security/archive/2006/05/26/sso_cas_traffic.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>邮件与PGPl定Q徏立安全n份认证基http://www.aygfsteel.com/security/archive/2006/05/10/45547.htmldavid.turingdavid.turingWed, 10 May 2006 14:24:00 GMThttp://www.aygfsteel.com/security/archive/2006/05/10/45547.htmlhttp://www.aygfsteel.com/security/comments/45547.htmlhttp://www.aygfsteel.com/security/archive/2006/05/10/45547.html#Feedback13http://www.aygfsteel.com/security/comments/commentRss/45547.htmlhttp://www.aygfsteel.com/security/services/trackbacks/45547.html阅读全文

david.turing 2006-05-10 22:24 发表评论
]]>
关于[深入Java 2q_安全--体系架构、API设计和实玎ͼW二版)]的翻译质?/title><link>http://www.aygfsteel.com/security/archive/2006/05/03/44452.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 03 May 2006 08:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/05/03/44452.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/44452.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/05/03/44452.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/44452.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/44452.html</trackback:ping><description><![CDATA[q日, 朋友告诉?lt;<<strong>深入Java 2q_安全--体系架构、API设计和实玎ͼW二版)>></strong>q本书已l出版:<br /><a >http://www.china-pub.com/computers/common/info.asp?id=14712</a><br />英文原版的书名是<br /><table cellspacing="0" cellpadding="0" width="469" border="0"><tbody><tr valign="top"><td class="v2" colspan="3" height="20"><b>Inside <a title="Sun" href="www.sun.com">Sun</a>?2 Platform Security: Architecture, API Design, and Implementation, Second Edition</b></td></tr></tbody></table>我粗看了一下,发现书评中很多对本书译质量的怀疑,下蝲了Sample章节Q粗看了一下,发现?br />h意,实会给读者的理解带来很大的困难?br />我觉得Security的兴者无需太关注中文译作,也不需质疑译者和出版商,因ؓ译Security Topic的书c?br />本n是一仉常困隄事情Q除非译者对Java Security的概念非常清晎ͼ否则即哪怕是一个概念上的误译,<br />到可能会D读者生很谱的误解?br /><a title="Sun" href="www.sun.com">Sun</a> Security的内容不象一些实跉|的topicQ如SpringQHibernateQAjax那样Q可以通过大量的Sample来解释,<br />它需要读者具备一定的Security概念基础后,才能解释清楚Q即概念的理解门槛比较高Q?br />所以,我还是徏议,对于宫力大牛的大作,q是d看英文版和JDK SpecificationQ其实Sun的Java Security?br />Spesification很多都是宫力之手Q看着些Spesification当然没有看故事书那么舒服Q但认真咀嚼几ơ,效果<br />L看那些容易导致误解的译作要好得多?br /><br />目前QJava Security的书基本上有两本Q?br />IBM专家l们~写的:<br /><table cellspacing="0" cellpadding="0" width="469" border="0"><tbody><tr valign="top"><td class="v2" colspan="3" height="20"><b>Enterprise <a title="Sun" href="www.sun.com">Sun</a> Security: Building Secure J2EE Applications</b></td></tr><tr><td class="v2" colspan="3" height="18">By <a class="v1" target="_new">Marco Pistoia</a>, <a class="v1" target="_new">Nataraj Nagaratnam</a>, <a class="v1" target="_new">Larry Koved</a>, <a class="v1" target="_new">Anthony Nadalin</a></td></tr><tr><td class="v2" width="68" height="18"> </td><td class="v2" align="right" colspan="2"></td></tr><tr><td class="v2" align="right" width="68" height="18">Publisher</td><td class="v2" colspan="2">: Addison Wesley</td></tr><tr><td class="v2" align="right" width="68" height="18">Pub Date</td><td class="v2" colspan="2">: February 20, 2004</td></tr><tr><td class="v2" align="right" width="68" height="18">ISBN</td><td class="v2" colspan="2">: 0-321-11889-8</td></tr><tr><td class="v2" align="right" width="68" height="18">Pages</td><td class="v2" colspan="2">: 608</td></tr><tr><td class="v2" align="right" width="68" height="18">Slots</td><td class="v2">: 1.0</td></tr></tbody></table><br />Sun专家l编写的Q?br /><table cellspacing="0" cellpadding="0" width="469" border="0"><tbody><tr valign="top"><td class="v2" colspan="3" height="20"><b>Inside <a title="Sun" href="www.sun.com">Sun</a>?2 Platform Security: Architecture, API Design, and Implementation, Second Edition</b></td></tr><tr><td class="v2" colspan="3" height="18">By <a class="v1" target="_new">Li Gong</a>, <a class="v1" target="_new">Gary Ellison</a>, <a class="v1" target="_new">Mary Dageforde</a></td></tr><tr><td class="v2" width="68" height="18"> </td><td class="v2" align="right" colspan="2"></td></tr><tr><td class="v2" align="right" width="68" height="18">Publisher</td><td class="v2" colspan="2">: Addison Wesley</td></tr><tr><td class="v2" align="right" width="68" height="18">Pub Date</td><td class="v2" colspan="2">: June 06, 2003</td></tr><tr><td class="v2" align="right" width="68" height="18">ISBN</td><td class="v2" colspan="2">: 0-201-78791-1</td></tr><tr><td class="v2" align="right" width="68" height="18">Pages</td><td class="v2" colspan="2">: 384</td></tr><tr><td class="v2" align="right" width="68" height="18">Slots</td><td class="v2">: 1</td></tr></tbody></table><br />q两本书Q前者更x于J2EE实践的角度出发,后者更偏重于从基础概念与Java Platform的角度出发,都是很好的书Q?br />很容易就能Emule到这两本书?br />我个人更偏向读者先l读后一本,然后再粗看前一本书的一些topic?br />两本书都基本上都没有花很大力去解析Java沙箱(SandBox)QJava权限控制模型{这些比较难搞得概念Q有炚w憾,希望<br />自己也能快抽时间提供一深入浅ZJava Security的文?)<img src ="http://www.aygfsteel.com/security/aggbug/44452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-05-03 16:26 <a href="http://www.aygfsteel.com/security/archive/2006/05/03/44452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何从pfx/p12文g中提取RSA密钥长度及其他相关信?/title><link>http://www.aygfsteel.com/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sat, 29 Apr 2006 01:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/43934.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/43934.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/43934.html</trackback:ping><description><![CDATA[     摘要: 本文介绍了如何(用BouncyCastle提供的SecurityProviderQ从pfx/p12证书文g中提取信息(如算法类型,法长度QSubject信息QIssuer信息{)  <a href='http://www.aygfsteel.com/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html'>阅读全文</a><img src ="http://www.aygfsteel.com/security/aggbug/43934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-04-29 09:38 <a href="http://www.aygfsteel.com/security/archive/2006/04/29/Java_Pfx_Pkcs12_x509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剖析CAS Proxy的设计原?/title><link>http://www.aygfsteel.com/security/archive/2006/04/26/SSO_CASProxy.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Wed, 26 Apr 2006 15:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/04/26/SSO_CASProxy.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/43441.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/04/26/SSO_CASProxy.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/43441.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/43441.html</trackback:ping><description><![CDATA[     摘要: 本文要介l如何CAS Proxy的原理及配置  <a href='http://www.aygfsteel.com/security/archive/2006/04/26/SSO_CASProxy.html'>阅读全文</a><img src ="http://www.aygfsteel.com/security/aggbug/43441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-04-26 23:54 <a href="http://www.aygfsteel.com/security/archive/2006/04/26/SSO_CASProxy.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Confluence和AD的集成认?/title><link>http://www.aygfsteel.com/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Mon, 24 Apr 2006 14:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/42907.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/42907.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/42907.html</trackback:ping><description><![CDATA[在GZFB听Rayman_要搞Confluence跟AD的集成认证,׃没听清楚Q还以ؓ是SSOQ立马打开Confluence跟LDAP集成的文档,l看了一把,发现q没有实现域用户到Confluence的SSOQ只是Confluence做了一个LdapProviderQ能够让用户的认证实现{UdLDAP上?br /><a >http://confluence.atlassian.com/display/DOC/Enable+LDAP+authentication</a><br /><br />该文档是完整q且正确的,配置也非常简单,Rayman很快配|好了。我后来发现他的配置Ҏ跟上q方法不一P他是Ҏ以下的文档配|的Q?br /><a >http://confluence.atlassian.com/display/DEV/Confluence+LDAP+Integration</a><br /><br />q两U配|方式由比较大的区别Q如果你的Confluence跟JIRA捆绑Q请使用前者,否则Q徏议用后者?br /><br />最后,隆重推荐Rayman的BlogQ?a >http://raymanzhang.cnblogs.com/</a><br />一个曾l编写了MDict的好同志<img src ="http://www.aygfsteel.com/security/aggbug/42907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-04-24 22:42 <a href="http://www.aygfsteel.com/security/archive/2006/04/24/confluence_sso_with_AD_authentication.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WeblogicServerl定AD认证 http://www.aygfsteel.com/security/archive/2006/04/02/38718.htmldavid.turingdavid.turingSun, 02 Apr 2006 04:05:00 GMThttp://www.aygfsteel.com/security/archive/2006/04/02/38718.htmlhttp://www.aygfsteel.com/security/comments/38718.htmlhttp://www.aygfsteel.com/security/archive/2006/04/02/38718.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/38718.htmlhttp://www.aygfsteel.com/security/services/trackbacks/38718.html2Q构造该域里面的用户
weblogic The default administration user DefaultAuthenticator
user0001 weblogic DefaultAuthenticator
user0002 user0002 DefaultAuthenticator
3Q徏立一个组QweblogicAdminQ同时在AD中也建立一个这Ll?br />注意Q在AD中的users而不是Builtin里面建组Q因Z者的DN是不一L?br />4Q将所有Weblogic中的user0001用户都加入到改组?br />5Q测试AD的可q接性,下蝲一个LDAP Browser?br />6Q在Weblogic Console中的Security->Realm的Authentication配置一个新的LDAP ProviderQ类型ؓQConfigure a new Active Directory Authenticator...
7Q配|参敎ͼ
i) 转到Active Directory那一Tab,看到HOST了吧Q?br />HOSTZ的AD的IP或者主机名QAD默认端口?89
ii) Principal为CN=user0001,CN=Users,DC=dlsvr,DC=com
其中QDC=dlsvr,DC=com为我的服务器的RootDNQ例如DC=ibmQDC=comQ?br />很讨厌AD的一个地Ҏ它采用与其他LDAP不一L命名ҎQ他用CN=User而不是OU=....Q所以我前面的步骤才需要徏立一个welogicAdmin的组?br />iii)Credential为AD中user0001的密码?br />注意Qii)和iii)是用于连接AD用的Q构造一个LDAPConnection需要用户名密码的,懂不懂:Q?br />转到user tab
iv) User Name AttributeQuser0001
v) User Base DNQCN=Users,DC=dlsvr,DC=com
转到group tab
vi) Group Base DN:CN=weblogicAdmin,CN=Users,DC=dlsvr,DC=com
vii) weblogicAdmin
保存
关键的步骤到了:
Security->Realms->myrealm->Providers->Authentication
有没有看到Re-order the Configured Authentication Providers
对,是q里需要调整一下顺序?br />把ActiveDirectoryAuthenticator调整到最上面Q优先最高)
然后讄ActiveDirectoryAuthenticator的General里面的Control Flag为Required?br />接着DefaultAuthenticator里面的设成是OPTIONAL?br />于是QAD取代了以前的DefaultAuthenticator了,如果两个都RequriedQ那么也你要接受双重认证Q汗......一般不需要这栗?br />注意:boot.properties里面的默认的Weblogic启动账号同样受AD影响Q你如果在AD里面止了Weblogicq个账号Q我保证你WLS启动不了

david.turing 2006-04-02 12:05 发表评论
]]>
CAS集成Weblogic的ServletAuthentication调用 http://www.aygfsteel.com/security/archive/2006/04/02/38716.htmldavid.turingdavid.turingSun, 02 Apr 2006 04:02:00 GMThttp://www.aygfsteel.com/security/archive/2006/04/02/38716.htmlhttp://www.aygfsteel.com/security/comments/38716.htmlhttp://www.aygfsteel.com/security/archive/2006/04/02/38716.html#Feedback1http://www.aygfsteel.com/security/comments/commentRss/38716.htmlhttp://www.aygfsteel.com/security/services/trackbacks/38716.html本来Q用j_security_check是最单的Build-in认证方式Q但CAS有自qd入口Q即login servletQ如果用该servletQ必自己动手完成JAAS的登录。于是,开始扩展CAS的edu.yale.its.tp.cas.auth.providerQ在该包中的provider都扩展自authHandler接口Q而CAS是在web.xml中定义了最l用哪一个authHandler?br />
edu.yale.its.tp.cas.authHandler
edu.yale.its.tp.cas.auth.provider.WeblogicHandler

我自己写了一个WeblogicHandler(edu.yale.its.tp.cas.auth.provider包中)Q专门让CASd到Weblogic ServerQ事实上Q将来如果不用WLSQ还可能使用WebsphereQJbossQAD之类?/p>

后来发现Q虽然能loginContext拿到SubjectQ但该Subject的Principal不能被页面的request.getPrincipal()所取得Q醒悟自己在做JAAS LoginQ查看weblogic文档Q原来Weblogic提供?br />weblogic.servlet.security.ServletAuthentication
用于在Servlet端调用JAAS接口q行dQ通过该接口登录后Q就如同User使用了标准的d机制d了Weblogic?br />于是Q立即修改了login servlet试一下,加入

try {
CallbackHandler handler = new SimpleCallbackHandler(
request.getParameter("username"),
request.getParameter("password"));
Subject mySubject = weblogic.security.services.Authentication
.login(handler);
weblogic.servlet.security.ServletAuthentication.runAs(
mySubject, request);
System.out.println("mySubject[" +mySubject.toString()+"]"+
"写入Session");
} catch (LoginException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

然后Q页面果然就能拿到Pincipal了?/p>

david.turing 2006-04-02 12:02 发表评论
]]>
Tomcat(直至5.5.9版本)不支持KeyStore和KeyEntry使用不同的password http://www.aygfsteel.com/security/archive/2006/04/02/38715.htmldavid.turingdavid.turingSun, 02 Apr 2006 04:00:00 GMThttp://www.aygfsteel.com/security/archive/2006/04/02/38715.htmlhttp://www.aygfsteel.com/security/comments/38715.htmlhttp://www.aygfsteel.com/security/archive/2006/04/02/38715.html#Feedback0http://www.aygfsteel.com/security/comments/commentRss/38715.htmlhttp://www.aygfsteel.com/security/services/trackbacks/38715.html今天Q有朋友在配|Tomcat SSL的时候,出现如下的异常:
java.security.UnrecoverableKeyException: Cannot recover key
而且他已l正配|了keystoreFile和keystorePass?br />后来我发玎ͼ他对Keystore中的Key使用了Password保护Q而且
保护q个KeyEntry的KeyPass!=KeyStore的KeypassQ导致出错,
Tomcat SSL要求q两个密码必ȝ{?br />解决办法Q?br />keytool -keypasswd -v -alias mykeyalias -keypass noequalpass -new equalpass -keystore mykeystore.jks -storepass equalpass
其中Q?mykeyalias是key在keystore中的别名Q?keypass后面跟key的旧密码"noequalpass", -new 是新密码"equalpass",注意新密码跟storepass一致?/p>

附:Weblogic是支持不一致的KeystorePass和KeyPass的?/p>

david.turing 2006-04-02 12:00 发表评论
]]>
JVM是怎樣進行授權控制?/title><link>http://www.aygfsteel.com/security/archive/2006/04/02/38714.html</link><dc:creator>david.turing</dc:creator><author>david.turing</author><pubDate>Sun, 02 Apr 2006 03:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/security/archive/2006/04/02/38714.html</guid><wfw:comment>http://www.aygfsteel.com/security/comments/38714.html</wfw:comment><comments>http://www.aygfsteel.com/security/archive/2006/04/02/38714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/security/comments/commentRss/38714.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/security/services/trackbacks/38714.html</trackback:ping><description><![CDATA[     摘要: 如果不是從PirvilegedAction中擴展的,那麼調用其中的方法JVM還會不會埯Ɗ限檢查Q?nbsp; <a href='http://www.aygfsteel.com/security/archive/2006/04/02/38714.html'>阅读全文</a><img src ="http://www.aygfsteel.com/security/aggbug/38714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/security/" target="_blank">david.turing</a> 2006-04-02 11:53 <a href="http://www.aygfsteel.com/security/archive/2006/04/02/38714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发布SecureX 2.0.0——KeyTool Eclipse Plugin+CryptoAPI Integrated+Java Watermarkhttp://www.aygfsteel.com/security/archive/2006/03/17/SecureX.htmldavid.turingdavid.turingFri, 17 Mar 2006 02:38:00 GMThttp://www.aygfsteel.com/security/archive/2006/03/17/SecureX.htmlhttp://www.aygfsteel.com/security/comments/35781.htmlhttp://www.aygfsteel.com/security/archive/2006/03/17/SecureX.html#Feedback8http://www.aygfsteel.com/security/comments/commentRss/35781.htmlhttp://www.aygfsteel.com/security/services/trackbacks/35781.html版本1.0.0  阅读全文

david.turing 2006-03-17 10:38 发表评论
]]>
使用PGP你的文章q行{֐http://www.aygfsteel.com/security/archive/2006/03/09/34511.htmldavid.turingdavid.turingThu, 09 Mar 2006 09:24:00 GMThttp://www.aygfsteel.com/security/archive/2006/03/09/34511.htmlhttp://www.aygfsteel.com/security/comments/34511.htmlhttp://www.aygfsteel.com/security/archive/2006/03/09/34511.html#Feedback5http://www.aygfsteel.com/security/comments/commentRss/34511.htmlhttp://www.aygfsteel.com/security/services/trackbacks/34511.html阅读全文

david.turing 2006-03-09 17:24 发表评论
]]>
վ֩ģ壺 | µ| | ɽ| | | ҵ| ¡| ɽ| ̨| | ƽ| | | Ѷ | ɽ| ̺| | | ƺ| | | ۷| | ²| ƶ| | | | μԴ| Ϫ| | Ī| ¡| | | | ߷| ӳ| | Ϸ|