当前位置

qyb的博客

Authentication War

昨天读到了一条消息,Yahoo 刚刚发布了基于 Web 认证 Yahoo! ID 的服务——BBAuth。现在加上微软的 LiveID,Google 的 Account,三个世界上最大的 Web 服务提供商,或者也可以说三个全球知名度最高的免费邮件提供商,现在开始了一场"Web认证之战"。

当我 2005 年开始设计 eyou.com 的 passport 机制的时候,当时就考虑到可以开放我们的服务,鼓励第三方开发人员来基于 eyou.com 的 passport 创建应用。甚至还提出了把这个 passport 网络扩展到我们部署在 CERNET 内所有的邮件服务器上。不过现在 eyou 已经专注在"占座"上,我也没有机会去实现这个疯狂的念头

拥有用户的认证信息对于有责任心的厂商而言是一个很不轻松的负担——你必须承担起安全存储它们的任务。提供 HTTPS 连接,雇佣可靠的员工来维护数据库,防御黑客的攻击...。另一方面,吸引用户来你的网站注册又是如此困难,甚至认证邮箱现在从技术上因为 SPAM 防御的因素也越来越困难。因此对于创业网站来说,LiveID,Google Account,BBAuth 这种服务就很有吸引力,你无需再关心怎样吸引用户在你这里注册,而专注在自己的核心竞争力上。

当然事情远远不是我上面所宣称的那般美妙。在 BBAuth 之前,我就已经尝试利用 LiveID 或 Google Account 的 API 来写个测试程序,结果发现目前为止还是困难重重。微软 LiveID Web 版本的 API 要到 2007 年才发布(Client 版本则看起来今年能发布,从这件小事可以看出微软在 Web 服务竞争中的尴尬局面),而且迄今还没有一个明确的关于此服务是否收费的政策。要知道如果加入 Passport (LiveID 的前一个版本)的话,每年的年费至少上万美元;虽然在 Google/Yahoo! 的竞争压力下它应该会包括免费的服务,但如果现在就计划把服务依赖于 LiveID 则必须承担风险。Google Account API 倒是非常简单,我很容易找到了一个 PHP 的例子然后修改了一下就通过了测试,但现在可用的服务仅限于 Google Calendar!就是说如果一个 Google Account 没有注册 Google Calendar 服务,那么我的应用可以确认一个人通过了 Google 的口令认证,但我无法获得这个人的邮件地址!

Google Account 服务包括两个步骤(Yahoo BBAuth 同样如此,估计 LiveID 也差不多):认证和授权。校验邮件地址/口令是否匹配属于认证过程,第三方是否可以获得用户的服务信息,比如邮件地址则属于授权过程。对于用户体验来说就是这样:用户在第三方网站上点击登录,重定向到认证服务的地址,通常是一个 https 连接;用户输入邮件地址和口令,校验正确后进入授权页面,提示用户这个第三方网站将获得用户的某些信息;用户确认后返回到第三方网站同时带有一个 token;第三方网站根据这个 token 来确认用户的确已经通过口令校验,并获得用户的相关信息。

就网上讨论的情况来看,Google 目前仅有 Calendar 一种授权服务,还没有人反映 gmail 已经可以被授权。最让人失望的是,google group 上来自 google 的支持非常少,同样 MSDN 上 LiveID 相关的讨论组里面,也罕有微软的人发言,都是开发人员自己在猜测。

所以欢迎加入 Authentication War, Yahoo!。希望能刺激一下微软和 Google,让竞争来得更猛烈些吧。

Topic: 

DV-2-XviD 0.7 发布

DV-2-XviD 0.6 版本发布整整一个月后,0.7 版热辣出炉啦..

ChangeLog:
1. 增加了 comptest 步骤以更有效的控制最终文件大小。(请参考XviD 压缩后文件大小不符合预期结果的原因和解决方法,目前的方案是根据 comptest 结果修正最终分辨率大小)

2. 新开一个线程去执行压缩任务... 这样主窗口不会失去响应

3. 修改了好多以前不了解 Python 时写下的弱智代码.

4. 增加了英文版的 README,中文版的 README 也改成 UTF-8 编码。打包的路径稍稍有些改动。

5. 二进制文件里面去掉了 MSVCR71.dll,因为我没有购买 VC7,因此也没有重新分发该文件的权利。

Topic: 

最近在 Python 上的开发

周末经过艰苦的努力,终于可以在我的 R520 和本地的 sqlite 之间同步了!!

不过和西门子 cx65 同步还有问题.

这两天开始尝试别人送给我的 N3650,发现它对同步支持的很弱,好像只能作为 SyncML 客户端同步,但不能作为服务器让别人通过 obex 来同步。据说从 S60 2nd 开始(除了 6600)才能支持 SyncML。就是说除了 7650/3650/N-Gage/3600/6600/3660/3620/QD 的 S60 都支持。

计划在买新手机(目前看好 6630)前做好这么几件事情:

1. 支持 qyt 同志的西门子
R520 的 vcard 是 UTF-7 编码,西门子是 UTF-8 编码再 BASE64.. 另外感觉这个西门子的红外连接不稳定,要么就是我的红外适配器有问题,或者其它什么故障..

2. OBEX over Bluetooth ..
由于我 R520 上的蓝牙坏了,所以只能先拿这个 3650 测试了..另外昨天晚上发现 Python 的蓝牙支持似乎并不包括 win32 平台,至少 2.4.x 是这样

3. Thunderbird 扩展.
希望最后能和 TB 来同步地址本,我的终极目标,hehe

Topic: 

Thunderbird 也在 mashup

刚刚弄明白了 Mashup 的意思,现在总算知道别人在讨论 Mashup 的时候是在说什么了..

现在我的 email client 是 Thunderbird,前不久发现它居然也包含有一个很酷的 Mashup 应用:就是如果你在 addressbook 里面给联系人指定地址以后,会出现一个 "Get Map" 的按钮,点击后进入 google map 自动搜索。是不是足够有创意?至少 gmail 现在还没有这个功能

不过 thunderbird 是去美国查找,可以说本地化很不好。期望着有谁能做一个 Thunderbird 插件,去 go2map 或者什么别的地图查中文地名就好了

Topic: 

You've Got Mail

你有多久没有写信了?我的意思是用纸和笔给远方的人写一封真正的邮件

上个月我就写了两封。因为达达回湖北过暑假了,在她读的图画书里面有不少关于收信的情节——米菲和梅儿互相通信,鼹鼠莫迪和小野兔弗拉布斯互相通信,小妖怪阿奇收到圣诞老人的礼物是请柬...——于是老婆买了很漂亮的信封和信纸,暑假里我们一共给她写了四封信。小信封上写着"邱可心亲启",然后把小信封装在邮政信封里寄给她爷爷。

幸好平时写 blog,提笔的时候还不至于太生疏:向她汇报北京的大彩虹,告诉她奶奶要过生日了代替爸爸和叔叔亲奶奶两下...

据爷爷奶奶说,她收到信后可高兴了,拿着信封在新认识的小朋友那里臭显。后来看到一个很成功的商业模式:父母给某人汇10美元,然后这个人以圣诞老人的口吻给他们的孩子写信,并奉上一个圣诞礼物。现在觉得他的商业头脑简直太天才了,这需求是多么强劲啊.

所以,还是给你爱的人写封信吧。

附:
前天晚上和宝贝玩指五官的游戏——就是一个人说五官的名字,另一个人就用手指..

她负责念名字:鼻子、耳朵、眼睛.... [feieieieieis]

我愣了好一会才明白她在说 face.

再附:前不久一个曾有业务往来的人说要给我寄中秋礼物,还很贴心的问是不是写老婆或者小孩的名字。于是还是让他寄给我们家宝宝,昨天月饼收到了,达达也非常得意。

Topic: 

关于 MySQL 里面的 COLLATE 属性

关于这条 MySQL 技巧好像很多人都还不知道,所以这里说一下。

那天在用 phpmyadmin 的时候,无意中发现 varchar 字段有一个"整理"的属性,怀着好奇之心看看都有什么选项,结果发现有 gbk_chinese_ci。怀着激动的心情测试了一下,果然和我预想的一样!加上这个属性后 order by 就会按照汉语拼音去排序结果!!即使数据是按 UTF-8 编码存储的仍然如此!!!

这个特性真的很不错,以前还特意写了一个 PHP 函数来做拼音排序,现在直接从 MySQL 的结果集里面查询就好了。

呵呵,看来从 phpmyadmin 里面也能发现宝藏... 比啃 MySQL 手册强多了

Topic: 

zh_CN.UTF-8 环境下 Putty 的配置

当前的 Linux 发行版,选择中文环境后,缺省的 Locale 设置基本都是 zh_CN.UTF-8。由于我们Win32缺省的字符集环境通常是 GBK/GB18030,导致 putty 登录上去后访问 UTF-8 编码的中文文件不正常。以前我只是修改环境变量为 zh_CN.GB2312,然后只操作 GB 编码的文件;最近已经完全调整为纯的 UTF-8 工作环境了。

首先选择一个中文字体,可能有人喜欢 Fixedsys (我以前一直用的是从 NetTerm 提供的 isi_oem 字体),但是很遗憾,必须选择一种 TrueType 字体,比如新宋体才能在 UTF-8 环境下用。

然后将字符集转换(charactor set translation)从 "Use font encoding" 改为 "UTF-8"

现在你就可以在 putty 里面自如的阅读和输入 UTF-8 中文了!

Topic: 

限制 sftp 的方案

经常可以看到这样的需求:需要给用户开建 sftp 或 cvs 帐号,但不希望给其一个 shell。今天发现有一个工具叫 rssh,正好可以用来干这个。

rssh 还有另外一个很重要的功能,就是使 sftp 用户登录后被 chroot,不能进入到其它目录。这样也没有必要去安装什么经过 chroot 补丁的 sshd 了。

用 yum 或者 apt 安装 rssh,缺省的几个比较重要的文件应该是安装在

  1. /usr/bin/rssh
  2. /usr/lib/rssh/rssh_chroot_helper
  3. /etc/rssh.conf

/etc/shells 文件里面也应该包含有 /usr/bin/rssh

或者您自己编译源码,然后手工修改 /etc/shells 去,强烈建议新手这么去 configure:

  1. ./configure --prefix=/usr --sysconfdir=/etc

修改用户的 shell 为 /usr/bin/rssh , 这样这个用户就不能 ssh 登录了

  1. sudo usermod -s /usr/bin/rssh test

然后创建用户 sftp 的 chroot 目录。本来 rssh 自带一个脚本,不过在我的 ubuntu 工作有些问题,主要是 ldd 获得所依赖的库不准确。所以修改了一下,见附件。

给对应的 test 帐号设置一个 chroot 目录的命令:

  1. sudo sh rssh_mkchroot.sh /home/rssh_chroot/test test 0755

最后修改 /etc/rssh.conf:

  1. 首先确认 allowsftp 被设置
  2.  
  3. 再添加一行配置:user=test:077:00010:/home/rssh_chroot/test
  4. 077 是给 sftp 上来的用户分配缺省 umask
  5. 00010 是 access bits, 倒数第二个 '1' 表示给该用户 sftp 权限
附件大小
Plain text 图标 rssh_mkchroot_sh.txt4.54 KB
Topic: 
订阅 RSS - qyb的博客