??xml version="1.0" encoding="utf-8" standalone="yes"?>
高javascriptȝ
1.函数也是对象
老婆是操作系l,一旦安装卸载十分麻烦;二奶是互联网Q风光无限花׃断;蜜是桌面,只要你有兴趣天天可以更换?
我}代表党中央,国务院,全国人大Q中央军委,港澳台办公室向你提出强烈抗议Q你昨晚床留下的中国地图ؓ啥没有台湾!Q!今晚记得补上Q!Q?
蚂蚁娶了蜈蚣为妻Q洞房之夜后Q问蚂蚁有何感想Q蚂蚁愤愤的_扛_一条腿不是Q又扛_一条腿也不?.....妈的扳了一晚上的腿Q?
一个赌徒的名字在每个国安不一P在日本叫倒光银子Q俄|斯叫苏斯里娃,韩国叫金徯Q在国叫约约,在中国叫苏安逸,在d国叫里瓦贝斯?
某男入厕便秘Q忽见一人飞奔而入Q顷刻风雨交加。“哥们,真M慕你Q那么快Q”“M慕啥Q!q没p子呢Q!?
上联Q想当初Q红c饭南瓜汤,老婆一个孩子一班?
下联Q看今天Q白c饭王八汤,孩子一个老婆一班?
横批Q与时俱q?
公牛出差Q恐母牛无h照顾。便L:猴子狡猾Q老虎凶残Q唯大象可靠。不日公牛归来从象处领回夫hQ次日公牛怒斥Q牛B大了Q?
一夫妇带吃奶的孩子去餐厅用,孩子哭闹Q女紧掀,服务生制止,奛_怒:Nq也不行吗?服务生说Q露胸可以但不能自带饮料?
计生办的工作人员C个山村去查工作,发现生很严重,问老乡Q“你们这儿怎么生q么严重呢?”老乡{道Q“没电”。“没电就生呀Q”当官的生气地说。“没甉|事干”。“没事干咋了Q”当官的一脸困惑。“没事干Q就q那事呗。?
那英zM-N看花。毛宁撒?淘声依旧。董文华初夜-血染的风采。陈U捉?常回家看看。彭丽媛大便-在希望的田野上。杨玉莹攑ֱ-轻轻的告诉你?
有两个傻子想开鞋店Q听说鳄鱼的鞋值钱Q他们就L里抓鳄鱼了,q真没少抓,?0多只了。一个傻子说Q“大哥,抓到W?0只鳄鱼它要是再没IK咱就别抓了!Q!?
你拉着一头猪逛街Q很q福的样子,我经q满怀同情的说Q“看一个h的ơ,q他跟谁在一赗”话未说完,q那猪很鄙L弃你而去Q?
一hӞ一x嫁,l媒Zl两人结合,L自我介绍Q一杆枪Q两颗蛋Q?8q没抗战。女的:一扇窗Q两扇门Q?6q没qh。媒人曰Q傻比傻蛋?
油田Q一Ҏ人刚完婚。对镉K来一副对联,上联Q新人新井新d。下联:钻深出沏V横批:月明松。(明字分开d可)
一个男生很喜欢一个女孩,一直都紧追不舍Q女孩对L又不感冒Q由于男生死~烂打,l于有一天女生在上课的时候{w大力的拍了桌子Q大声对L_你到底喜Ƣ我什么阿Q!我改q不行么Q?Q?
瘸子和瞎子同骑一辆R外出。瞎子骑Q瘸子看路。突然瘸子发现前面有一条深沟,急呼Q“沟沟沟Q”瞎子回唱到Q噢?噢嘞 噢嘞Q二Zh入沟中?
׃扫盲Q老师在黑板上写“日”和“天”说Q一天就是一日,一日就是一天。下边一农妇_老师你说的不对,一天一日行Q一日一天俺可受不了?
某h在老婆怀?个月q同房,一月后生下个男孩,一出生问Q我爸爸是谁Q他_是我啊!于是男孩用手指狂戳他爸的头说Q这h你疼不疼Q疼不疼Q?
好朋友就象胸|舒服脓心永q支撑着你,象内裤就你大v大落他永q包容着你,q象卫生巾你伤心血他帮你擦Q更象避孕套你捅了多大的娄子他都帮你兜着Q?
一老农伟哥之效Q拿来喂公鸡Q次日老农发现全村母鸡都被q死。抬头见公鸡立于树梢Q问其故Q鸡曎ͼ“想日老鹰?
我真的好累,你让我不停的换体位,换了前位换后位,你让我射了还不让我睡Q最后还让我谈体会,哎,t球真的好篏?
la油的牧畜芽,大姑娘小媛_地里爬,谁要在来L畜,U一地大肌八。稀奇稀奇真E奇,哪有地里U刁的,要是你家的刁丰收了,你要预备多少大闺奟?
和绅考纪晓岚Q出上联Q树上有只鸟Q鸟摇树也摇Q鸟都飞CQ树q摇三摇。纪晓岚对下联:和绅d,鸟摇也摇,K完了,鸟还摇三摇?/p>
白天停水Q晚上停电,发不出工资,C了面Q打开邓选找C{案Q原来是C会M初阶段。往后一,我操/一癑ֹ不变/q可咋办Q?
和ȝ睡觉叫国睡,和乞丐睡觉叫地睡Q和老婆睡觉叫所得睡Q和姨子睡觉叫增值睡Q和情h睡觉叫偷睡,和小姐睡觉叫印花睡?
丈夫开灯时不小心把手印留在刚刷qa漆的墙壁上。次日,d叫来Ҏ工:我想让你看看昨晚我丈夫摸q的地方。a漆工晕倒…?
明Q爸爸,古时候,皇帝自称寡hQ那皇后该自UC么?父亲Q傻孩子Q那皇后当然U寡妇啦Q?
护士看到病h在病房喝酒,pq去声叮嘱_“小心肝Q”病人微W道Q“小宝贝。?
生活好多幸,朋友很多不孤独。勇敢向前不服输Q幽默短信发l猪Q猪接短信就W了Q回信我也不要了Q就当给猪上料了Q效果我也知道了?
机密案Q姓名:董全瑞;l号四虎子;M原因Q连长说Q炸药包一面有强力Ӟ单手托v_在堡下就行了Q;l遗aQ连长我操你妈!两面都有胶?
那天我看见你了,在超市,你悄悄地把手伸到条码扫描器上Q只见屏q显C猪y?元,你以为机器坏了,把脸凑过ȝQ结果屏q显C猪头肉5元?
十岁男孩鸡鸡,二十岁男孩侦察鸡Q三十岁战斗鸡,四十岁蘪炔RQ五十岁滑翔鸡,六十岁手扶拖拉鸡Q七十岁隐型鸡,八十岁停鸡?
一农妇刚进城当保姆Q给Mh收拾床时发现一用过避孕套,不知是何物,侉K女主人?
女主人反问:你们不做爱吗Q农妇回{:做,但没你们q磨狂,都脱皮了?
我昨天才知道Q有一位MM愿意为我失去生命Q呵呵,好感动!Ҏ钉截铁对我说Q你再缠着我,我就L......
某困山区,因无钱,男h皆用素袋做内裤Q一日某Chl婚Q男除去长裤Q新娘惊叫晕倒,只见内裤正面华ͼ净?5公斤?
可以从setUp()中看刎ͼ它需要用C个叫SeleniumServer的服务器Q这个服务器的作用主要是代理的作用,因ؓsame origin policy(是一个脚本只能在它自已的源站点上q行Q我q样理解的,不了的可以查看官Ҏ?的关p,所以需要加一层去取得|页q能在上面运行测试脚本的服务器,也就是我们的SeleniumServer了,所以才叫Selenium Remote ControlQ我们的试用例主要是去q它Q而不是真正直接去q接googleq行的测试。以后不用想怎么写测试用例了QSelenium Core主要是写html来进行测试,不过同样也可以用Selenium IDE来自动生成htmlQ然后将生成的一个html攑ֈ一P开启TestRunner.htmlq行自动试Q速度分三步,run,walk,step,run模式下看上去q是很过瘄Q原来javascript可以写出q么牛的软gQ呵呵,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) 的服?主要?.0Q到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 之间的信dpdl被正确建立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 的相xq可以查看附?.
白话描述 :
单点登陆 , 无非是提供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客PQ只要进行简单的配置可以实?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)
Zq行说明?
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 ZQ,我们使用
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 分别hQ检查启动的 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 端取到登陆相关信息及dpȝ
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可以实现登Zcȝ相关功能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ƈ其UCؓ 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客Lq要再对另外一些数据签名后q将其与客户端证书一起发送给服务器?
如果服务器要求鉴别客戯n份,则检查签|客戯书的 CA 是否可信。如果不在信d表中Q结束本ơ会话。如果检查通过Q服务器用自qU钥解密收到?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一个patternQ如果要指定不区分大写Q与perl,ruby语言有些不同Q查jdk官方Ҏ得知,如上代码??i)OQ了Q?br />注意Q在groovy中可以这样写
此时的patternZQ而不能是正则表达?
3.java中的匿名cMgroovy中的闭包
生成E序隑օ要碰C目录相关的操作程序,一般在java中文件过滤都q么?br />
查遍所有groovy文发现q没有直接用闭包来完成以上E序Q在groovy中用闭包代替内部cȝ只能用在swingcM那些listener的接口,具体l节查看官方文Q?a >http://groovy.codehaus.org/Groovy+Beans
要用groovy来完成上面的E序有两U方法,W一是用java完成后,提供lgroovy来调用,W二下直接用groovy实现Q其实很单,代码如下Q?br />
主要׃个函数完成,W一个过滤,W二个匹?