Yahoo 的 OpenID 還要再加把勁兒
2008 年 八月 13 日 (星期三) 2:30 am分類:電腦
標籤: programming, Web2.0, BBAuth, OpenID, yahoo
我在〈Yahoo 也加入開放 API 的戰局〉一文提過,Yahoo 提供兩種 single sign-on (SSO) 機制:自家的 BBAuth 專屬機制,以及 OpenID 開放標準(還宣稱支援到 2.0 版)。如今半年過去了,正好看到〈Yahoo! 奇摩第四季推 OpenID 正式版〉報導,便一時興起,試看看這兩種 SSO 機制好不好用。
實驗之後,感想是:Yahoo 對於開放標準的輕忽,對於網路新興使用行為的漠視,都應該有所改進。
以 BBAuth 而言,登入認證完畢,我們只能從 Yahoo 取得一個長得像「3×45Bp52Mfle9tI1YAA-」的 “userhash”。這玩意兒的官方說法是:
the Yahoo! login server includes an unique identifier for a particular user in your endpoint URL. With the userhash you can identify a returning user [...] The identifier is bound to a specific appid.
可是它有幾個缺點:
- 毫無辨識性:你看得出「3×45Bp52Mfle9tI1YAA-」這一串符號背後的任何意義嗎?
- Yahoo 也不提供 API 讓我們透過它(以及 token)去進一步查詢 user profile [註],即使這個帳號擁有者早已在 Yahoo「會員公開檔案」後台授權開放部份個人資料(譬如:暱稱、個人網頁、自我介紹……)。
- 更嚴重的是:這個 “userhash” 還會隨著 application ID 變動而變動,而 application ID 又會隨著 endpoint URL 變動而變動。換句話說,只要後兩者一有變動,舊的 userhash 就完全失效,無法如官方所宣稱的 “With the userhash you can identify a returning user”。
BBAuth 的 “userhash” 限制如此之多,難怪地圖日記產品經理吳伯毅會如此評論:
雖然擁有 Yahoo! 奇摩這個品牌背書,但衍生的缺點卻是地圖日記無法確實掌握使用者的詳細資料,他開玩笑說,「畢竟魚與熊掌不能兼得囉。」
User profile 完全被 BBAuth 漠視。
反觀 OpenID,打從骨子裡就很有 user profile 意識,又是開放標準,所以像 myOpenID 或 VeriSign 等 OpenID provider 大廠,登入認證完畢,consumer 都可順利取得 OpenID Simple Registation 所定義的幾種個人資料(譬如:全名、暱稱、email……)。
對於 OpenID,Yahoo 又有什麼樣的表現呢?
很遺憾的,上述個人資料完全闕如。這表示:不但漠視 user profile、data portability 等網路新興使用行為,更輕忽 OpenID 開放標準。
Aristotle Balogh 七月來台時曾豪氣干雲宣示:「我們將解開社交網路的枷鎖!」我們也希望 Yahoo 能再多加把勁兒,而且……請先解開自家 API 的枷鎖吧。
﹝註﹞
本文發表後,感謝 smallufo 的提醒,透過 Yahoo! Mail API 即可讀取部份 user profile。我的回應是:
透過 UserSendPref 的確可以取得更多帳號資料(像
defaultID、loggedInAlias、firstName、lastName都很好用)。不過這又有點兒過頭了:Yahoo 的 Mail API 可是具有讀寫權力的呀,帳戶擁有者似乎也沒有辦法只授權部份權力給 consumer 網站使用,太 coase-grained 了。更可怕的是:不管 consumer 是透過 (1) 單純的 BBAuth、還是 (2) 再加上 Mail API 去進行 SSO 登入認證,Yahoo 秀給使用者看的「自動登入服務條款」大體而言還是同一份,也沒有明確告知 Yahoo 將開放多少權限給 consumer;這等於是將使用者曝於更危險的情境。
我還是傾向於將這帳號資料讀取權力放在 BBAuth 和 OpenID 裡。


追蹤留言回應:以
引用通告 (trackback):![[add to funP]](http://william.cswiz.org/blog/wp-content/themes/william/images/add-funp.png)
![[add to HEMiDEMi]](http://www.hemidemi.com/sticker/user/roxytom.bluecircus.net.gif)
![[add to udn bookmark]](http://bookmark.udn.com/html/help/80_20_02.gif)

2008 年 八月 13日 於 8:12 am
BBAuth is more like what OAuth is trying to do, so identity issues aren’t really what it is trying to solve.
As for Yahoo’s OpenID, which is actually quite a driver for the much-improved 2.0 (imho the id_selector thing is the most important one)… in terms of email and other info, they are defined as the sreg extension, which is up to the OP to provide, due to privacy consideration…. I do agree Yahoo should have options for users consent sreg requests from OpenID RP, but it’s not an issue of the openid standard itself, and I’d rather not accuse them for ignoring standards.
2008 年 八月 13日 於 10:14 am
@clkao:
先謝謝你的回應。
對於 BBAuth,既然這是 Yahoo 自己的專屬協定,愛開放多少,其實外人是沒什麼權力要求的;頂多是選擇要不用採用而已。
問題是,對於 OpenID 這個已經是開放標準,而且早有業界經驗可循的先例,Yahoo 顯然做得還不夠:
再對照今天自由時報〈申設公共金鑰終結混「帳」〉的報導:
我真的覺得,Yahoo 的 OpenID 應該要更努力一點,做個表率。
2008 年 八月 15日 於 11:10 am
剛剛用 Yadis 查了一下,Yahoo 的 OpenID 居然只提供兩種服務:
說實在的,真是有點少呀。