å¯ä»¥ä»ŽsetUp()ä¸çœ‹åˆŽÍ¼Œå®ƒéœ€è¦ç”¨åˆîC¸€ä¸ªå«SeleniumServerçš„æœåС噍åQŒè¿™ä¸ªæœåŠ¡å™¨çš„ä½œç”¨ä¸»è¦æ˜¯ä»£ç†çš„ä½œç”¨ï¼Œå› äØ“same origin policy(ž®±æ˜¯ä¸€ä¸ªè„šæœ¬åªèƒ½åœ¨å®ƒè‡ªå·²çš„æºç«™ç‚¹ä¸Š˜q行åQŒæˆ‘˜q™æ ·ç†è§£çš„,ä¸äº†çš„å¯ä»¥æŸ¥çœ‹å®˜æ–ÒŽ–‡æ¡?的关¾p»ï¼Œæ‰€ä»¥éœ€è¦åŠ ä¸€å±‚åŽ»å–å¾—¾|‘页òq¶èƒ½åœ¨ä¸Šé¢è¿è¡Œæµ‹è¯•脚本的æœåŠ¡å™¨ï¼Œä¹Ÿå°±æ˜¯æˆ‘ä»¬çš„SeleniumServer了,所以æ‰å«Selenium Remote ControlåQŒæˆ‘们的‹¹‹è¯•ç”¨ä¾‹ä¸»è¦æ˜¯åŽ»˜qžå®ƒåQŒè€Œä¸æ˜¯çœŸæ£ç›´æŽ¥åŽ»˜qžæŽ¥google˜q›è¡Œçš„æµ‹è¯•。以åŽä¸ç”¨æƒ³æ€Žä¹ˆå†™æµ‹è¯•用例了åQŒSelenium Coreä¸»è¦æ˜¯å†™htmlæ¥è¿›è¡Œæµ‹è¯•,ä¸è¿‡åŒæ ·ä¹Ÿå¯ä»¥ç”¨Selenium IDEæ¥è‡ªåŠ¨ç”ŸæˆhtmlåQŒç„¶åŽå°†ç”Ÿæˆçš„一个html攑ֈ°ä¸€èµøP¼Œå¼€å¯TestRunner.html˜q›è¡Œè‡ªåЍ‹¹‹è¯•åQŒé€Ÿåº¦åˆ†ä¸‰æ¥ï¼Œrun,walk,step,run模å¼ä¸‹çœ‹ä¸ŠåŽ»˜q˜æ˜¯å¾ˆè¿‡ç˜„¡š„åQŒåŽŸæ¥javascriptå¯ä»¥å†™å‡º˜q™ä¹ˆç‰›çš„软äšgåQŒå‘µå‘µï¼Œjava6也支æŒjavascript脚本了,看楘q™é—¨è¯è¨€˜q˜æ˜¯å€¼å¾—å¥½å¥½ç ”ç©¶ä¸€ä¸‹ï¼Œä¸èƒ½æ€ÀL˜¯åœç•™åœ¨çœ‹å¾—懂的水òqŸë€?br />注æ„åQšä¸Šé¢è¯´çš„æœåŠ¡å™¨åœ?\selenium-remote-control-0.8.1\server下é¢
å¯åЍ命ä×oä¸?java -jar selenium-server.jar
傿•° -interactive ä¸ÞZ‹É用交互模å¼ï¼Œž®±æ˜¯å¯ä»¥ç›´æŽ¥åœ¨å‘½ä»¤è¡Œ˜q›è¡Œ‹¹‹è¯•
         -multiWindow 为多½H—体åQŒæˆ‘试了下,ä¸è¿‡å¥½åƒä¸è¡Œ
çš?SSO(single sign-on) çš„æœåŠ?ä¸»è¦æ˜?.0åQŒåˆ°3.0为ja-sig)ã€?
关键å?
TGC(ticket-granting cookie)--------- å—æƒçš„票æ®è¯æ˜?
KDC( Key Distribution Center ) ---------- 坆钥呿”¾ä¸å¿ƒ
Service ticket(ST) --------- æœåŠ¡¼œ¨æ®åQ?ç”?KDC çš?TGS 呿”¾ã€?ä»ÖM½•一å?Workstation éƒ½éœ€è¦æ‹¥æœ‰ä¸€å¼ 有效的 Service Ticket æ‰èƒ½è®‰K—®åŸŸå†…部的应用 (Applications) ã€?如果能棼‹®æŽ¥æ”?Service Ticket åQŒè¯´æ˜Žåœ¨ CASClient-CASServer 之间的信ä»Õd…³¾pÕd·²¾l被æ£ç¡®å»ºç«‹èµäh¥ , 通常ä¸ÞZ¸€å¼ æ•°å—åŠ å¯†çš„è¯ä¹¦
Ticket Granting tieckt(TGT) --------- ¼œ¨æ®æŽˆæƒ¼œ¨æ®åQŒç”± KDC çš?AS 呿”¾ã€‚å³èŽ·å–˜q™æ ·ä¸€å¼ 票æ®åŽåQŒä»¥åŽç”³è¯·å„¿Uå…¶ä»–æœåŠ¡ç¥¨æ?(ST) 便ä¸å¿…å†å?KDC æäº¤íw«ä†¾è®¤è¯ä¿¡æ¯ ( å‡†ç¡®æœ¯è¯æ˜?Credentials) ã€?
authentication service (AS) --------- 认è¯ç”¨æœåŠ¡ï¼Œç´¢å– Crendential åQŒå‘æ”?TGT
ticket-granting service (TGS) --------- ¼œ¨æ®æŽˆæƒæœåŠ¡åQŒçƒ¦å?TGT åQŒå‘æ”?ST
CAS å•点æœåŠ¡å™¨çš„è®¤è¯˜q‡ç¨‹åQŒæ‰€æœ‰åº”用æœåŠ¡å™¨æ”¶åˆ°åº”ç”¨è¯äh±‚åŽï¼Œ‹‚€æŸ?ST å’?TGT åQŒå¦‚果没有或ä¸å¯¹åQŒè{åˆ?CAS è®¤è¯æœåŠ¡å™¨ç™»é™†é¡µé¢ï¼Œé€šè¿‡å®‰å…¨è®¤è¯åŽå¾—åˆ?ST å’?TGT å†é‡å®šå‘到相兛_º”用æœåС噍åQŒåœ¨ä¼šè¯ç”Ÿå‘½å‘¨æœŸä¹‹å†…如果å†å®šå‘到别的应用åQŒå°†å‡ºç¤º
ST å’?TGT ˜q›è¡Œè®¤è¯ , æ³¨æ„ , å–å¾— TGT 的过½E‹æ˜¯é€šè¿‡ SSL 安全åè®®çš?( æ¢å¥è¯è¯´ž®±æ˜¯å¦‚æžœä¸ç”¨ ssl åè®® , æ¯è®¿é—®ä¸€ä¸ªåº”用æœåŠ¡ï¼Œž®±å¾—釿–°åˆ°è®¤è¯æœåŠ¡ä¸å¿ƒè®¤è¯ä¸€‹Æ?) åQŒå…³äº?SSL 的相å…Ïx˜q°å¯ä»¥æŸ¥çœ‹é™„å½?.
ç™½è¯æè¿° :
å•点登陆 , æ— éžž®±æ˜¯æä¾›¾l™ç”¨æˆ·ä¸€‹Æ¡ç™»é™?, 多个¾pÈ»Ÿå…׃ín用户信æ¯çš„æ“ä½?.
˜q™ä¸ªæ˜¯æ€Žä¹ˆæ“作的呢 ? 有简å•çš„æ–ÒŽ³• , 当用戯‚®¿é—®å…¶ä»–ç³»¾lŸçš„æ—¶å€?, 写个 URL 带上用户çš?ID å’?PASS æäº¤åˆ°ç›¸åº”çš„¾pÈ»Ÿž®±å¯ä»¥äº† . ˜q™ä¹Ÿæ˜¯ä¸€¿Uæ–¹æ³?
é‚?CAS 是怎么æ“作的呢 ? 或则æ˜?KRB(Kerberos æ˜¯ä¸€ä¸ªåŠ å¯†è®¤è¯å议,å…许¾|‘络用户ä¸ä‹É用明文密ç 访问æœåŠ¡ï¼Œä¸€ä¸ªæ™®é€?
çš„å议实现包æ‹?LOGIN æœåŠ¡å˜åœ¨ä¼ªé€ 欺骗对 Key Distribution Center çš„å“åº?ã€?
) 怎么æ“作的呢 ?
ä»–åÆˆä¸æ˜¯å¾ˆå¤æ?, 他先是å¾ç«‹ä¸€ä¸?专门认è¯ç”¨æˆ·çš?æœåŠ¡ (SERVER) ˜q™ä¸ªæœåŠ¡åªåšä¸€ä»¶äº‹ , 负责验è¯ç”¨æˆ·çš?ID å’?PASS æ˜¯å¦æ˜¯æ£¼‹?, 在棼‹®çš„æƒ…况æä¾›ç”¨æˆ·ä¸€ä¸ªåä¸?TGT 的票æ?,
ç›¸å½“ä½ è¦åŽÀL¸¸ä¹åœºçŽ?, é¦–å…ˆä½ è¦åœ¨é—¨å£æ£€æŸ¥ä½ çš„èínä»?( å?CHECK ä½ çš„ ID å’?PASS), å¦‚æžœä½ é€šè¿‡éªŒè¯ , æ¸æ€¹åœºçš„é—¨å« (AS) åÏxä¾›ç»™ä½ ä¸€å¼ é—¨å?(TGT).
˜q™å¼ å¡ç‰‡çš„用处就是告è¯?æ¸æ€¹åœºçš„å„个场所 , ä½ æ˜¯é€šè¿‡æ£é—¨˜q›æ¥ , è€Œä¸æ˜¯åŽé—¨å·çˆ¬è¿›æ¥çš„ , òq¶ä¸”也是获喘q›å…¥åœºæ‰€ä¸€æŠŠé’¥åŒ?.
好的 , çŽ°åœ¨ä½ æœ‰å¼ å¡ , 但是˜q™å¯¹ä½ æ¥ä¸é‡è¦?, å› äØ“ä½ æ¥æ¸æ€¹åœÞZ¸æ˜¯äؓ了拿˜q™å¼ å¡çš„ , 好的 , 我们å‘ä½ çš„ç›®çš„å‡ºå?, æ?, ä½ æ¥åˆîC¸€ä¸ªæ‘©å¤©æ¥¼ , ä½ æƒ³˜q›å…¥çŽ©çŽ© ,
˜q™æ—¶æ‘©å¤©è½®çš„æœåŠ¡å‘?(client) 拦下ä½?, å‘ä½ è¦æ±‚摩天轮的 (ST) ¼œ¨æ® , ä½ è¯´ä½ åªæœ‰ä¸€ä¸ªé—¨å?(TGT), 好的 , é‚£ä½ åªè¦æŠ?TGT 攑֜¨ä¸€æ—çš„¼œ¨æ®æŽˆæƒæœ?(TGS) 上刷一ä¸?,
¼œ¨æ®æŽˆæƒæœ?(TGS) ž®±æ ¹æ®ä½ 现在所在的摩天è½?, ¾l™ä½ ä¸€å¼ æ‘©å¤©è½®çš„ç¥¨æ?(ST), å“?, ä½ æœ‰æ‘©å¤©è½®çš„¼œ¨æ® , çŽ°åœ¨ä½ å¯ä»¥ç•…é€šæ— é˜Èš„˜q›å…¥æ‘©å¤©è½®é‡Œæ¸¸çŽ©äº?.
å½“ç„¶å¦‚æžœä½ çŽ©å®Œæ‘©å¤©è½®å?, 惛_Ž»æ¸æ€¹å›çš„咖啡厅休æ¯ä¸‹ , é‚£ä½ ä¸€æ ·åªè¦å¸¦ç€é‚£å¼ é—¨å¡ (TGT). 到相应的咖啡厅的¼œ¨æ®æŽˆæƒæœ?(TGS) 刷一ä¸?, 得到咖啡厅的¼œ¨æ® (ST) ž®±å¯ä»¥è¿›å…¥å’–啡厅
å½“ä½ ¼›Õd¼€æ¸æ€¹åœºåŽ , 想用˜q™å¼ TGT åŽÕdˆ·æ‰“的回家的费ç”?, 呵呵 , 对ä¸èµ?, ä½ çš„ TGT 已绘q‡æœŸäº?, åœ¨ä½ ¼›Õd¼€æ¸æ€¹åœºé‚£åˆÕd¼€å§?, ä½ çš„ TGT ž®±å·²¾l销æ¯äº† ~
Yale CAS Server 的酾|®è¿‡½E?
CAS (Central Authentication Service) æ˜?Yale 大å¦çš?ITS å¼€å‘的一å¥?JAVA 实现的开æº?
çš?SSO(single sign-on) çš„æœåŠ¡ã€‚è¯¥æœåŠ¡æ˜¯ä»¥ä¸€ä¸?java web app(eg:cas.war) æ¥è¿›è¡ŒæœåŠ¡çš„åQ?
使用旉™œ€è¦å°† cas.war å‘布åˆîC¸€ä¸?servlet2.3 兼容的æœåŠ¡å™¨ä¸Šï¼Œòq¶ä¸”æœåŠ¡å™¨éœ€è¦æ”¯æŒ?SSL åQ?
在需è¦ä‹É用该æœåŠ¡çš„å…¶ä»–æœåС噍åQˆå®¢æˆøP¼‰åQŒåªè¦è¿›è¡Œç®€å•çš„é…ç½®ž®±å¯ä»¥å®žçŽ?SSO 了ã€?
CAS 的客æˆïL«¯å¯ä»¥æœ‰å¾ˆå¤šç§åQŒå› 为验è¯çš„¾l“果是以 XML çš„æ ¼å¼è¿”回的åQ?CAS 的客æˆïL«¯å·?
打包˜q›åŽ»çš„æœ‰ java,perl,python,asp,apache module ½{‰å¥½å‡ ç§å®¢æˆ·ç«¯ç¤ºä¾‹ï¼Œä½ 还å¯ä»¥æ ÒŽ®
需è¦å®žçŽîC¸€ä¸ªè‡ªå·Þqš„客户端,éžå¸¸½Ž€å?!~
䏋颿ˆ‘们ä»?tomcat 5.0 ä½œäØ“ CAS Server(server1) åQŒå¦å¤–一å?tomcat5.0 ä¸?client(client1)
ä¸ÞZ¾‹˜q›è¡Œè¯´æ˜Žã€?
1. ä¸‹è² cas-server å’?cas-client( å¯é€‰ï¼Œå»ø™®®ä½¿ç”¨åQ?
http://www.ja-sig.org/downloads/cas/cas-server-3.0.5.zip
http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1.1.zip
2. ž®?cas-server-3.0.5.zip 解压åQŒåƈž®?lib/cas.war 拯‚´åˆ?server1 çš?webapps ä¸?
3. 产生 SERVER çš„è¯ä¹?
PS: 傿•°ä¸Žå„¾pÈ»Ÿæœ¬èín一è‡?
%JAVA_HOME%\bin\keytool -delete -alias tomcat -keypass changeit
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA
%JAVA_HOME%\bin\keytool -export -alias tomcat -keypass changeit -file %FILE_NAME%
%JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts
%JAVA_HOME%\bin\keytool -import -file server.crt -keystore %JAVA_HOME%\jre\lib\security\cacerts
4. åœ?server1 é…ç½® tomcat 使用 HTTPS
$CATALINA_HOME/conf/server.xml �
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https"
secure="true">
<Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory"
keystoreFile="/path/to/your/keystore-file"
keystorePass="your-password" clientAuth="false" protocol="TLS" />
</Connector>
5. 在è¦ä½¿ç”¨ CAS 的客æˆïL«¯ client1 里设¾|®ï¼ˆä»?servlets-examples ˜q™ä¸ª APP ä¸ÞZ¾‹åQ‰ï¼Œæˆ‘们使用
ServletFilter(CAS client 里æä¾›çš„ ) æ¥å®žçŽ?SSO 的检查ã€?
修改 servlets-examples/WEB-INF/web.xml
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://your.cas.server.name(eg:server1):port/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://your.cas.server.name(eg:server1):port/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serviceUrl</param-name>
<param-value>your.client.server.ip(eg:127.0.0.1):port</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
PS: åœ?client 端酾|?filter æ—?, 需è¦å°† CAS çš?filter 攑֜¨ web.xml 最上端 ,. å¦‚æžœåœ¨ä½ çš?web.xml 有类ä¼?encodingFilter çš?filter 也需è¦å°†˜q™ä¸ª filter 攑֜¨ CAS filter ä¸‹é¢ , å¦åˆ™ä½ 会å‘çŽ°æ¯æ¬¡è®‰K—®æ—‰™ƒ½éœ€è¦ä½ ˜q›è¡ŒéªŒè¯ .
6. ž®?cas-client-java-2.1.1.zip 解压åQŒæŠŠ java/lib/casclient.jar 拯‚´åˆ?client1 æœåŠ¡å™¨ä¸Šçš?
webapps/servlets-examples/WEB-INF/lib 目录下(如果没有ž®±å¾ä¸€ä¸ªï¼‰
7. 导出 SERVER çš„è¯ä¹¦ï¼Œç”¨æ¥¾l™æ‰€æœ‰éœ€è¦ç”¨åˆ°çš„客户端导å…?
keytool -export -file server.crt -alias my-alias-name -keystore keystore-file
8. 在客æˆïL«¯çš?JVM 里导入信ä»Èš„ SERVER çš„è¯ä¹?( æ ÒŽ®æƒ…况有å¯èƒ½éœ€è¦ç®¡ç†å‘˜æƒé™ )
keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file server.crt -alias my-alias-name
9.test & done.
æŠ?server1 å’?client1 分别èµäh¥åQŒæ£€æŸ¥å¯åŠ¨çš„ LOG æ˜¯å¦æ£å¸¸åQŒå¦‚果一åˆ?OK åQŒå°±è®‰K—®
http://client1:8080/servlets-examples/servlet/HelloWorldExample
¾pÈ»Ÿä¼šè‡ªåŠ¨èŸ©è½¬åˆ°ä¸€ä¸ªéªŒè¯é¡µé¢ï¼Œéšä¾¿è¾“入一个相åŒçš„è´¦å· , 密ç åQŒä¸¥æ£é€šè¿‡ä¹‹åŽž®×ƒ¼šè®‰K—®
到真æ£çš„ HelloWorldExample ˜q™ä¸ª servlet äº?
实现自已的认è¯ä»£ç ?(java 代ç 和相å…Ïx³¨é‡?, 需è¦?cas-server-3.0.5.jar åŒ?)
Â
Â
然厞®†è¿™ä¸ªç±»é…ç½®åˆ?deployerConfigContext.xml æ–‡äšgé‡?, 替代 <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
å¯èƒ½è¦ç”¨åˆ°æ•°æ®åº“˜qžæŽ¥ä¹‹ç±»çš„é…¾|®ï¼Œå…·ä½“å¯å‚ç…?spring framework 相关文档
åœ?client 端å–到登陆相关信æ¯åŠç™Õd‡º¾pÈ»Ÿ
1. å–得用用æˆ?ID
ä»¥ä¸‹ä¸¤ç§æ–¹å¼éƒ½å¯ä»?
session.getAttribute(CASFilter.CAS_FILTER_USER);
session.getAttribute("edu.yale.its.tp.cas.client.filter.user");
也å¯ä»¥ç›´æŽ¥å–得认è¯?java 对象
session.getAttribute(CASFilter.CAS_FILTER_RECEIPT);
session.getAttribute("edu.yale.its.tp.cas.client.filter.receipt");
JSP2.0 æ ‡å‡†å†™æ³•
<c:out value="${sessionScope['edu.yale.its.tp.cas.client.filter.user']}"/>
åœ?jsp ä¸ä‹Éç”?CAS Tag Library æ ‡ç¾
除实çŽîC»¥ä¸ŠåŠŸèƒ½å®Œ˜q˜å¯ä»¥å®žçŽ°ç™»å‡ÞZ¹‹¾cÈš„相关功能åQŒå…·ä½“å‚ç…?cas 官方文档
http://www.ja-sig.org/products/cas/client/jsp/index.html
附录
1 åQ?SSL(Server Socket Layer) ½Ž€ä»?
在网¾lœä¸Šä¿¡æ¯åœ¨æº - å®¿çš„ä¼ é€’è¿‡½E‹ä¸ä¼šç»˜q‡å…¶å®ƒçš„计算机。一般情况下åQŒä¸é—´çš„计算æœÞZ¸ä¼šç›‘å¬èµ\˜q‡çš„ä¿¡æ¯ã€‚但在ä‹É用网上银行或者进行信用å¡äº¤æ˜“的时候有å¯èƒ½è¢«ç›‘视,从而导致个人隿U的泄露。由äº?Internet å’?Intranet 体系¾l“æž„çš„åŽŸå› ï¼Œæ€ÀLœ‰æŸäº›äºø™ƒ½å¤Ÿè¯»å–åÆˆæ›¿æ¢ç”¨æˆ·å‘出的信æ¯ã€‚éšç€¾|‘ä¸Šæ”¯ä»˜çš„ä¸æ–å‘展,äºÞZ»¬å¯¹ä¿¡æ¯å®‰å…¨çš„è¦æ±‚‘Šæ¥‘Šé«˜ã€‚å› æ?Netscape å…¬å¸æå‡ºäº?SSL åè®®åQŒæ—¨åœ¨è¾¾åˆ°åœ¨å¼€æ”„¡½‘¾l?(Internet) 上安全ä¿å¯†åœ°ä¼ 输信æ¯çš„目的,˜q™ç§åè®®åœ?WEB 上获得了òq¿æ³›çš„应用ã€?ä¹‹åŽ IETF(ietf.org) å¯?SSL ä½œäº†æ ‡å‡†åŒ–ï¼Œå?RFC2246 åQŒåƈž®†å…¶¿UîCØ“ TLS åQ?Transport Layer Security åQ‰ï¼Œä»ŽæŠ€æœ¯ä¸Šè®ÔŒ¼Œ TLS1.0 ä¸?SSL3.0 的差别éžå¸¸å¾®ž®ã€?
2 åQ?SSL 工作原ç†
SSL å议使用ä¸å¯¹¿U°åŠ å¯†æŠ€æœ¯å®žçŽîC¼šè¯åŒæ–¹ä¹‹é—´ä¿¡æ¯çš„å®‰å…¨ä¼ é€’ã€‚å¯ä»¥å®žçŽîC¿¡æ¯ä¼ 递的ä¿å¯†æ€§ã€å®Œæ•´æ€§ï¼Œòq¶ä¸”会è¯åŒæ–¹èƒ½é‰´åˆ«å¯¹æ–¹èín份。ä¸åŒäºŽå¸¸ç”¨çš?http åè®®åQŒæˆ‘们在与网站å¾ç«?SSL 安全˜qžæŽ¥æ—¶ä‹Éç”?https åè®®åQŒå³é‡‡ç”¨ https://ip:port/ çš„æ–¹å¼æ¥è®‰K—®ã€‚当我们与一个网站å¾ç«?https ˜qžæŽ¥æ—Óž¼Œæˆ‘们的æµè§ˆå™¨ä¸?Web Server 之间è¦ç»˜q‡ä¸€ä¸ªæ¡æ‰‹çš„˜q‡ç¨‹æ¥å®Œæˆèín份鉴定与密钥交æ¢åQŒä»Žè€Œå¾ç«‹å®‰å…¨è¿žæŽ¥ã€‚具体过½E‹å¦‚下:
用户‹¹è§ˆå™¨å°†å…?SSL 版本å—÷€åŠ å¯†è®¾¾|®å‚æ•°ã€ä¸Ž session 有关的数æ®ä»¥åŠå…¶å®ƒä¸€äº›å¿…è¦ä¿¡æ¯å‘é€åˆ°æœåС噍ã€?
æœåС噍将å…?SSL 版本å—÷€åŠ å¯†è®¾¾|®å‚æ•°ã€ä¸Ž session 有关的数æ®ä»¥åŠå…¶å®ƒä¸€äº›å¿…è¦ä¿¡æ¯å‘é€ç»™‹¹è§ˆå™¨ï¼ŒåŒæ—¶å‘ç»™‹¹è§ˆå™¨çš„˜q˜æœ‰æœåŠ¡å™¨çš„è¯ä¹¦ã€‚如果酾|®æœåС噍çš?SSL 需è¦éªŒè¯ç”¨æˆ¯‚ín份,˜q˜è¦å‘出è¯äh±‚è¦æ±‚‹¹è§ˆå™¨æä¾›ç”¨æˆ¯‚¯ä¹¦ã€?
客户端检查æœåС噍è¯ä¹¦åQŒå¦‚果检查失败,æç¤ºä¸èƒ½å»ºç«‹ SSL ˜qžæŽ¥ã€‚如果æˆåŠŸï¼Œé‚£ä¹ˆ¾l§ç®‹ã€‚客æˆïL«¯‹¹è§ˆå™¨äؓ本次会è¯ç”Ÿæˆ pre-master secret åQŒåƈž®†å…¶ç”¨æœåŠ¡å™¨å…¬é’¥åŠ å¯†åŽå‘é€ç»™æœåŠ¡å™¨ã€‚å¦‚æžœæœåŠ¡å™¨è¦æ±‚鉴别客户íw«ä†¾åQŒå®¢æˆïL«¯˜q˜è¦å†å¯¹å¦å¤–一些数æ®ç¾ååŽòq¶å°†å…¶ä¸Žå®¢æˆ·ç«¯è¯ä¹¦ä¸€èµ·å‘é€ç»™æœåС噍ã€?
如果æœåŠ¡å™¨è¦æ±‚鉴别客戯‚ín份,则检查羾|²å®¢æˆ¯‚¯ä¹¦çš„ CA 是å¦å¯ä¿¡ã€‚如果ä¸åœ¨ä¿¡ä»Õdˆ—表ä¸åQŒç»“æŸæœ¬‹Æ¡ä¼šè¯ã€‚如果检查通过åQŒæœåŠ¡å™¨ç”¨è‡ªå·Þqš„¿U钥解密收到çš?pre-master secret åQŒåƈ用它通过æŸäº›½Ž—æ³•ç”Ÿæˆæœ¬æ¬¡ä¼šè¯çš?master secret ã€?
客户端与æœåС噍å‡ä½¿ç”¨æ?master secret ç”Ÿæˆæœ¬æ¬¡ä¼šè¯çš„会è¯å¯†é’?( 对称密钥 ) ã€‚åœ¨åŒæ–¹ SSL æ¡æ‰‹¾l“æŸåŽä¼ 递ä“Q何消æ¯å‡ä½¿ç”¨æ¤ä¼šè¯å¯†é’¥ã€‚è¿™æ ·åšçš„主è¦åŽŸå› æ˜¯å¯¹ç§°åŠ å¯†æ¯”éžå¯¹ç§°åŠ å¯†çš„è¿½Ž—é‡ä½Žä¸€ä¸ªæ•°é‡çñ”以上åQŒèƒ½å¤Ÿæ˜¾è‘—æé«˜åŒæ–¹ä¼šè¯æ—¶çš„è¿½Ž—é€Ÿåº¦ã€?
客户端通知æœåС噍æ¤åŽå‘é€çš„æ¶ˆæ¯éƒ½ä‹É用这个会è¯å¯†é’¥è¿›è¡ŒåŠ å¯†ã€‚åÆˆé€šçŸ¥æœåС噍客æˆïL«¯å·²ç»å®Œæˆæœ¬æ¬¡ SSL æ¡æ‰‹ã€?
æœåŠ¡å™¨é€šçŸ¥å®¢æˆ·ç«¯æ¤åŽå‘é€çš„æ¶ˆæ¯éƒ½ä‹É用这个会è¯å¯†é’¥è¿›è¡ŒåŠ å¯†ã€‚åÆˆé€šçŸ¥å®¢æˆ·ç«¯æœåС噍已ç»å®Œæˆæœ¬æ¬¡ SSL æ¡æ‰‹ã€?
æœ¬æ¬¡æ¡æ‰‹˜q‡ç¨‹¾l“æŸåQŒä¼šè¯å·²¾lå¾ç«‹ã€‚åŒæ–¹ä‹É用åŒä¸€ä¸ªä¼šè¯å¯†é’¥åˆ†åˆ«å¯¹å‘é€ä»¥åпޥå—的信毘q›è¡ŒåŠ ã€è§£å¯†ã€?
Â
ä»¥ç¬¬äºŒå‚æ•°æ¥æŒ‡æ˜Žä¸åŒºåˆ†å¤§ž®å†™,在ä‹É用groovy我å‘çŽ?˜q™æ‹›ä¸çµäº†ï¼Œå› äØ“åœ¨groovy䏿£åˆ™è¡¨è¾‘ּ是在è¯è¨€ä¸çš„
def pattern = ~/(?i)(.*)/˜q™æ ·ž®±å¾—åˆîCº†ä¸€ä¸ªpatternåQŒå¦‚æžœè¦æŒ‡å®šä¸åŒºåˆ†å¤§ž®å†™åQŒä¸Žperl,rubyè¯è¨€æœ‰äº›ä¸åŒåQŒæŸ¥jdk官方æ–ÒŽ¡£å¾—知,如上代ç åŠ??i)ž®±ï¼¯åQ«äº†åQ?br />注æ„åQšåœ¨groovyä¸å¯ä»¥è¿™æ ·å†™
æ¤æ—¶çš„patternä¸ÞZ¸²åQŒè€Œä¸èƒ½æ˜¯æ£åˆ™è¡¨è¾¾å¼?
3.javaä¸çš„匿å¾cÖM¸Žgroovyä¸çš„é—包
生戽E‹åºéš‘Ö…è¦ç¢°åˆîC¸Žç›®å½•相关的æ“作程åºï¼Œä¸€èˆ¬åœ¨java䏿–‡ä»¶è¿‡æ»¤éƒ½˜q™ä¹ˆå†?br />
æŸ¥éæ‰€æœ‰groovy文档å‘现òq¶æ²¡æœ‰ç›´æŽ¥ä‹É用é—包æ¥å®Œæˆä»¥ä¸Š½E‹åºåQŒåœ¨groovyä¸ç”¨é—包代替内部¾cÈš„åªèƒ½ç”¨åœ¨swing¾cÖM¸é‚£äº›listener的接å£ï¼Œå…·ä½“¾l†èŠ‚æŸ¥çœ‹å®˜æ–¹æ–‡æ¡£åQ?a >http://groovy.codehaus.org/Groovy+Beans
è¦ç”¨groovyæ¥å®Œæˆä¸Šé¢çš„½E‹åºæœ‰ä¸¤¿U方法,½W¬ä¸€ž®±æ˜¯ç”¨java完æˆåŽï¼Œæä¾›¾l™groovyæ¥è°ƒç”¨ï¼Œ½W¬äºŒä¸‹ç›´æŽ¥ç”¨groovy实现åQŒå…¶å®žå¾ˆ½Ž€å•,代ç 如下åQ?br />
主è¦ç”׃¸¤ä¸ªå‡½æ•°å®Œæˆï¼Œ½W¬ä¸€ä¸ªè¿‡æ»¤ï¼Œ½W¬äºŒä¸ªåŒ¹é…?