Google SAML implementation

看了一下GOOGLE的SAML实现,大跌眼镜,他不是像Windows Live ID一样提供身份信息的,相反,他是google application作为service provider,接收3rdparty传过来的saml assertion的。google现在卖他们的gmail等服务,其实就是以前做得企业邮箱,当然,还有gtalk,google doc之类的程序,这些东西加起来,卖50$一个账号。这也挺好的,我老婆这样的单位就不需要买一个服务器做邮箱了,还老维护,还老当机。 话说回来,Google把这些服务卖给一个公司之后,可以接收这个公司传给google的saml2的token,这样,google可以不维护身份信息,也不维护密码。要是windows live id可以提供saml2 token的话,他们两个就可以连起来了,哈哈。 当然,要一个公司实现一个saml2 token的producer,也不容易,google提供了sample。我诧异于这个sample的实现。他使用了一个最简单的xml生成办法,文本替换。做了一个template文件,然后替换其中的某些特殊符号,就生成了xml文档。当然,xml文档的签名没法这么做,只能programmatically的实现。这个很像hydra以前用php实现移动的的web service接口的方法,也是类似的。xml parsing也只是字符串搜索,嗯,其实,这样只要结果是对的,who cares? 哪天用weblogic做一个identity provider,看看能不能跟google连起来。不过似乎要一个域名,也挺麻烦。

九月 19, 2007 · Shawn Ma

Windows Live ID internals

Windows Live ID(WLID)本身是一个identity provider,他负责维护用户的用户名,密码。 作为一个想使用WLID的网站,需要首先注册成为Windows Live application。注册的时候,你先需要有一个WLID! 注册的目标是双方需要有一个PSK——preshared key(WLID叫Secret Key)。这个key是用来验证WLID传回来的token的。注册的同时要求给WLID提供一个Return URL,当用户登录成功,或者logout的时候,WLID会调用这个页面,并且加上一些parameter,其中一个重要的就是stoken,这个参数含有一个WLID传回来的用户相关信息。 我也注册了一个, return URL=http://sma01:8080/wlid/return.jsp secret key=thisisaverylongkey Application ID=<span>00163FFF8000412B</span> WLID认证成功之后,他就redirect用户到Return URL,相当于SAML的ACS service。另外还要加上token之类的参数。 WLID给用户浏览器返回一个post form,内容如下 <html> <head> <noscript> JavaScript required to sign in <meta http-equiv="Refresh" content="0; URL=https://login.live.com/jsDisabled.srf?lc=1033&#8243;/> </noscript> <title>Continue</title> <script type="text/javascript"> function OnBack(){} function DoSubmit(){var subt=false;if(!subt){subt=true;document.fmHF.submit();}} </script> </head> <body onload="javascript:DoSubmit();"> <form name="fmHF" id="fmHF" action="<a href="http://sma01:8080/webauth/sample/webauth-handler.jsp">http://sma01:8080/webauth/sample/webauth-handler.jsp</a>" method="post" target="_top"> <input type="hidden" name="stoken" id="stoken" value="DvJ%2BtIPK9bn%2FKlG7PjSB7FNPFEzlX5g9HtHcBGGv2r2h5s1VsnzoRlI7GnSRNK%2Bo3pn87YJCJnTi1jtKgXEh3TLxASGCSt3Okju7MK51VDXz4KGSemv%2BARYN4WJ33FIoHoZ3aVvF19wsNq2YRnM8npmfgVh5ZDVtu%2FXA9FaUqKLRAsOR377dMpDXEWSOrsRQBsmRUy7dZPdZSW4F9%2F%2Fyow%3D%3D"> <input type="hidden" name="action" id="action" value="login"> </form> </body> </html> 再看看那个token的具体内容。token首先是base64编码的byte array。前16个字节是IV,剩下来的是加密的内容。加密是用的AES,准确的说,AES/CBC/PKCS5Padding。解密之后的东西居然可以直接得到一个string,看来是iso-8859-1字符集的。顺便说一下,那个decryption key是PSK加上一个前缀"ENCRYPTION",然后做SHA-256,获得的。没有使用PBE的PBRDF2算法,呵呵,让我平衡的很多。我自己做的也只是用SHA-1 hash两次,不过SHA-256可以一次获得16byte的key,的确很省事。 ...

九月 19, 2007 · Shawn Ma

Lost my phone…again

So bad… I’m very depressed not because I lost it, but the way I react when I found I lost it. I hate myself. When you do hate yourself most?

九月 19, 2007 · Shawn Ma

Windows Live ID and identity federation

晚上心血来潮,想起来要是做web sso似乎只有saml这个东西,就想看看微软的passport,Google,以及open ID都是怎么实现的,应该用的不是saml吧? 随便search了一下,发现windows live id刚刚发布了SDK,里面有perl,java,ruby等等的的实现,java的实现居然只有两个class,其中一个还是base64的code,很有意思,今天没时间了,改天研究一下。原来好像passport使用kerberos的,似乎那段代码很简单,没有kerberos的迹象啊。 (忍不了maxthon了,随便敲几个字就这么慢。。。杀。o, 又试了试ie…也是有问题,狂吃cpu。去死吧。。。难道是这个控件跟ie6合不来?嗯,转换到html格式下就好了。。。那就html吧。) 其他的几个发现: 这位作者做了一些有意思的东西,并且介绍了ADFS(Active Directory Federation Service)。没时间仔细看,先记下来。 ADFS好像用的是WS-Federation,这个很奇怪,WS-F不是只能给WS用么?然后他们用的token似乎又是saml。 波音公司在做identity federation的deployment。他们说,原因有三,第一个是user experience好,第二个是省钱,每帐号每月省500刀,这个我想不明白。第三个,是帐号有一个集中管理的地方,比如某人从boeing公司辞职了,那么他在其他partner那里的帐号也就失效了。波音的方案提供商好像是Ping identity,一个我觉得不错的小公司,有一些值得学习的地方。 google也在提供帐号服务,好像是提供saml接口的,哪天看看。 Open ID呢? Liberty Alliance的saml 2.0网页上居然没有CA的site minder,有意思。。。当然,也没有weblogic server。。。But I’m very interested with interop with those! espcially, google saml2 impl. 睡觉了,有时候,我很赞同我老婆的一个观点,觉得睡觉真无聊,人要是可以不睡觉多好呢。。。

九月 18, 2007 · Shawn Ma

firefox extension: refcontrol

最近用google reader读一些blog。其中sina,baidu这两个空间的图片全部做了referrer检查,用咱们中文说,叫做“防止盗链”。举例来说,baidu和sina的图片在google reader中会显示成下面这个样子。 (XXX: 好像我这里又好了?) 这是非常SB的一件事情,在看一些blog的时候还真不得不打开某些网页去看,很麻烦。于是就想到了无所不能的firefox插件,搜了一下,果然有人做了,叫做refControl。试了一下,的确很不错。现在这两个图片都能显示了……没有subscribe任何sohu的blog,不知道sohu有没有这个问题。 这个东西也就是简单的篡改refer的URL。只要hiphotos.baidu.com和album.sina.com.cn都Forge一下就可以了。。

八月 19, 2007 · Shawn Ma

我的firefox插件们

firefox的确是个很不错的浏览器,至少,他不支持activeX,所以安全了一些……现在那些网站开发的所谓安全控件,有时候却还同时给别人开了后门,还是很恐怖的。 现在firefox用的越来越顺手了,插件是少不了的。但是它的毛病是,插件多了,firefox还是挺吃内存的,而且启动超慢——这点ie快很多。。 于是,我只装几个常用的插件,如下: ABP (adblock plus) 0.7.5.1. 这个东西很好,所有的广告统统block掉,甚至文字广告。他的原理主要是URL过滤,支持regular expr. 支持css selector。比如这个规则可以干掉sina的嵌入广告:sina.com.cn#*(id^=PublicRelation) Drag De Go 0.2.5. 让firefox支持手势,拖拉一个url可以打开一个tab,拖拉一个文字自动google搜索。差不多了。这个是maxthon养成的习惯,所以要装。哦,它还可以快速的保存图片…咳咳。 Stylish 0.5.2 乖乖,这个更厉害了,可以写一个css override页面的style,这样,可以让一些不好看的网页好看起来。当然,也可以让一些广告元素消失(display:none)。有人就用这个把google页面变成黑的,也满酷的……我主要用来调整一些难看的网页,比如我们公司的bug tracking系统,我给他写了如下的css: @-moz-document domain(“bugs.bea.com”) { TR[bgcolor=”#ffffdd”] {background-color:#FFdd99 !important } TR[bgcolor=”#aaaaaa”] {background-color:#bbFFff !important } TR[bgcolor=”#dddddd”] {background-color:#aaFFaa !important } table[border=”1″] { border: 1px solid #C0C0C0!important ; border-collapse: collapse !important; } TH[bgcolor=”#cccccc”] { font: bold 10px tahoma!important; background-color: #ddddaa !important } DIV[align=”center”][class=”header”]{background-color:#ddddaa !important} } 其他的就没有了,偶尔用一下DOM inspector,是用来找到某一个元素,并找出其selector的。。。 TMP这样的tab管理工具似乎没啥用了,所以也不装了。。。

八月 16, 2007 · Shawn Ma

gmail mobile and e680

I have an GPRS plan with 10M data per month, 5RMB, and tried a few new things with my e680i. Two major things: one is google reader, the other is gmail. Gmail is accessible through mobile phone at http://m.gmail.com. However, they also provide a Java version gmail client, which is an MIDP 2.0 application. I downloaded one, and tried it with my little e680i (flashed with e680g). The application accesses the network through HTTPS. I firstly tried cmwap connection, but failed. Then I tried cmnet, which is direct internet connection. This time it complains that no certificates available for authentication the server. That is very odd. I checked gmail mobile help. They say the client requires a certificate from VeriSign root CA. Then I goto the browser configuration in e680. Surprisely, I found 4 root certificate there, but 3 named “CFCA xxx”, and one from “Jettronic”. Three CFCA are CA certificates from some organization in China, and the last one is from a company from Shanghai. There is no certificate from VeriSign or Thawte. This means, the browser will never be able to access any https pages over the internet. The resolution is straightforward, I exported the certificate from my IE. Internet Explorer->Tools->Options->Content->click Certificates->select Trusted Root CA tab->find the certificate named “Class 3 Public Primary Certification Authority” and serial # 70:BA:E4:1D:10:D9:29:34:B6:38:CA:7B:03:CC:BA:BF ->click Export->Next->DER encoded binary X509->select file name->finish->copy the file to the phone->browser->settings->SSL certificates->Insert Ok. I now can run the gmail java app on the mobile. It seems to be a little faster than the web version…I’m also surprised by its GUI, seems they do the GUI using CustomItem directly, they even make their own menus!

七月 19, 2007 · Shawn Ma

Talking about 变形金刚,我觉得很烂

周末我也去看Transformer了。比较同意chengmo的观点,不是特好看。也许就是所谓“期望越大,失望越大”吧。 情节上比较弱智。而且又一些不明白为什么的地方。比如那个眼睛上应该encode的是那个盒子还在北极呢,汽车人怎么知道在胡佛大坝底下呢? 打斗的部分也比较没意思,如果把他们换成人,就变成了普通的好莱坞版的打斗了,他们也不靠任何武器制胜,却只靠空手道互相打。。。我想看的是动画里面的那些呢,什么能量块,组合机器人之类的。还有会计算的那个汽车人,每次计算命中比率的那个。录音机也不可爱。。。更不用说机器恐龙什么的了。嗯,比较起来,柯南的剧场版都比它好。 还有比较郁闷的是看的英文版,结果听不到那个经典的“汽车人,变形,出发”,却听到“Autobox, roll out”,一点感觉也没有…… 比较有意思的一个场景是这帮机器人躲在男主角家外面yard里的时候,还是挺乐的……别的就没啥印象了。。。 Quote 变形金刚,我觉得很烂 上午去看了《变形金刚》,说说感觉:很烂! 要说缺点,什么机器人形象较原版动画改变过大、剧情弱智、打斗过于恍眼睛等等,在BBS上都被说烂了,我就不多说,只说讲故事的能力。导演4迈克尔.贝是拍MTV起家,据说他四五岁的时候就用玩具排演外星人入侵,结果差点把自家房子给烧了,后来拍动作片也颇有成绩(票房成绩),比如《珍珠港》,但是个人觉得此人处理细节和大场面还有点功夫,能够把场面拍出来,但是讲故事的能力实在一般,协调各方面拍摄制作一个大场面是一个技术问题,把这个大场面融入到电影之中就是艺术问题,迈克尔.贝能做好前者,后者就看不到什么作为。不管某个场景有多酷,如果不能为整个电影服务,就显得多余,大决战部分,每个独立的战斗镜头拿来当MTV片断都没有问题,但是组合在一起就显得相当混乱。

七月 16, 2007 · Shawn Ma

IPhone disassembled

有人把新买的iphone给拆了。。。 貌似还是传统的BP/AP结构。这个家伙有个1G内存的ARM processor,不过我觉得他们说得“内存”不是真的“内存”,而是Flash memory.. http://www.anandtech.com/printarticle.aspx?i=3026

七月 2, 2007 · Shawn Ma

哼!

本来想写恨来着。。。因为刚才写了一半的”unix tools for windows”,没想到这个机器居然出错,把我得IE crash掉了,全白写了。 刚才写的是,为了不装cygwin, mks tool kit那么大的东西来模拟unix的环境,找了一个简单的toolset,都是native windows port, only depends on microsoft C runtime library. 它的内容还是挺丰富的,基本够用了: bzip diff fileutils(cp dd du ls mkdir mv rm touch) find gawk grep gzip sed shellutils(basename date echo env hostname id nohup printf pwd seq sleep tee test who) tar textutils(cat cksum cut fmt md5sum od sort sum tail uniq wc head) unrar wget 就差一个bash了!

六月 26, 2007 · Shawn Ma