請以身作則支持 OpenID

月初五家公司,Microsoft,Yahoo!,Google,IBM 以及 VeriSign 宣佈加入 OpenID Foundation,對增加 OpenID 認受性來說是件好事。MS 早前宣佈會將此技術和旗下 CardSpace 作出整合,VeriSign 本身則早已是 OpenID Provider,Yahoo! 在消息宣佈前幾天推出讓會員設定 OpenID 的服務。Google 則在上個月讓瀏覽者到 blogger 服務留言可以使用 OpenID 辨別其身份。

各位在以上的內容找到甚麼特別之處?這幾家公司裏就只有 Google 願意成為 OpenID Consumer。不是說 IBM 沒有貢獻,相信它最後也會將 OpenID 帶到其產品之中,例如 WebSphere Portal Server 吧。不過,買軟件的人卻可以有權拒絕使用 OpenID,那其實還是沒有甚麼實質幫助嘛。OpenID 不是技術問題讓人卻步,而是可以用它的地方少得可憐。就像曾經在香港推出過的 Mondex 電子貨幣一樣。

歸根究底,大家還是在搶顧客,但就是不肯接納人家的顧客。這正是 OpenID 的設計與那伙人的分歧。

所以嘛,還請口裏說著支持 OpenID 的,至少讓自己的網誌支援 OpenID 吧。不要學 WordPress.com,死還是不可以用 OpenID 留言,卻跑去當 Provider。

OpenID 2.0

也不是這幾天的新聞,OpenID Foundation 終於正式公佈 OpenID 2.0 的規格,也已有一系列的程式庫跟 OpenID 服務供應商宣佈支援新規格,包括比較流行的 JanRain PHP LibraryMyOpenID

在普通用家角度來說,這更新有甚麼意義呢?OpenID Foundation還同時公佈了交換個人資料的協定規格,除了可以讓服務提供的第三方向 OpenID 提供者要求更多樣化的使用者資訊,更可以將用戶儲存於服務商的資訊回傳到 OpenID 提供者。比方說,只要在以 OpenID 登記過的相片網站設定好頭像,這頭像設定也會隨著你的 OpenID 四處走。用戶也可以在 OpenID 提供者直接修改資料,讓所有網站一同更新。

另一方面,變動也便利開發者不少。首先協定將資料由 GET 改以 POST 傳送,令傳送資料的大小不再受限制。加密和公開鑰匙交換的演算法也增加了,狀況允許下可以提供用戶更安全的保障。新規格也支援 Yadis 指定 OpenID 的供應商通訊端,是除 HTML 以外的選擇。

順帶一提,如果 OpenID 供應商支援 OpenID 2.0,大家又使用網址委任(好像我就是使用 MyOpenID 為供應商,但以自己的網誌地址當 OpenID) 的話,記緊要在首頁加上兩個新的 tag,讓第三方能識別你的 OpenID 支援 2.0 的通訊協定。

延伸閱讀:
OpenID 2.0…Final(ly)!
淺談 OpenID

讓 WordPress 支援 OpenID

wpopenid+ 原是由 wpopenid 分支出來的插件,同樣讓 WordPress 支援以 OpenID 留言,以及將帳戶連結至現有 OpenID。不過,wopenid+ 比 wopenid 優勝的地方,除了除掉幾隻蟲以外,還加入了不少新功能。例如讓留言的網址欄跟 OpenID 結合啦,顯示留言用家的全名(不是只是 OpenID URL),可以在 OpenID 伺服器支援 SREG 的情況下使用留言者提供的電郵等等。

原本真的有點技巧想寫一下的,不過在上一篇文章寫了以後才發現 wpopenid+ 的作者在 svn 發佈了新版,加入了不用為留言者開設帳戶的功能(以往來留言的插件便會自動產生一個新帳戶,他們也可以直接走進去瀏覽 dashboard,感覺怪怪的),所以再也不用繁複的修改步驟啦。

淺談 OpenID

OpenID

約略說一下。

OpenID 是一套開放的分散式認證系統。傳統中央化的驗證系統,使用者的資料,例如用戶名稱,密碼等等也是存放到跟應用程式同一個地方,用戶如果要到另一個網站登入,便必須再註冊另一個帳戶,非常不方便。現在互聯網大部份網站便是如此。

於是有人想到了單次登入(Single Sign-On, SSO) 這個構思。最普及的單次登入系統非微軟的 Passport (Windows Live ID) 莫屬。只需要一組帳戶,登入後即可使用所有微軟的服務,好像 Spaces,Messenger,Mail 等等。Yahoo! 跟 Google 也有類似系統,不過這些現成系統的缺點還是他們之間不能共通:你不可以拿 Google 的帳戶登入 Yahoo! 的服務。同樣,登入了 Yahoo! 網站到 Microsoft 的網站還得要輸入 Live ID 這邊的帳戶名稱及密碼,還是夠麻煩的。

所以才會有 OpenID 的出現。OpenID 的儲存帳戶的地方(身份伺服器)是分散的:在這個系統裏,每個人也可以有自己的伺服器儲存自己的用戶資料,不再只限於服務提供者。一個 OpenID 帳戶的擁有人如果要登入某個支援 OpenID 的網站,步驟如以下這樣:(我們把 A 當成服務提供者,B 是認證伺服器,C 則是帳戶擁有者)

  1. C 要登入網站 A,提供了一個由 C 自己擁有(或由 B 提供) 的 URL 給 A。
  2. A 透過那條 URL 提供的資料找到 B。這時候 A 會把用戶 C 轉址到 B 的登入頁面。
  3. C 輸入了自己的個人密碼給 B。確認正確無誤,B 把驗證資料傳回 A,C 也會被導回至網站 A。
  4. 這時候 A 會再跟 B 核對剛才傳過來的驗證資料。
  5. 如無大礙,C 便算是成功登入,這時候也許 A 會再跟 C 提供更多註冊資料。

這種做法好處在於:

  1. 使用者不用再到處註冊帳戶或登入,一個 URL,世界通行。
  2. 使用者可以完全控制自己的個人資料,第三者網站(網站 A) 絕不可能得到使用者的密碼。使用者也可以限制第三者網站可以獲得哪些個人資訊。
  3. 打擊冒名留言。在社交網絡上,很多時候使用者(特別是知名的)也會被破壞份子冒名惡意中傷。如果網站留言系統使用了 OpenID,由於每位使用者也會有自己獨一無二的 URL 識別,分辨冒名者和正牌貨變得容易許多。

不過 OpenID 並不是解決所有帳戶問題的靈丹妙藥。例如它不能防止廣告機器人註冊帳戶(雖然暫時還沒看見有這樣的 Robot),也不可以制止使用者使用多個帳戶自問自答(OpenID 是設計成大家可以擁有多個帳戶的)。因為 OpenID 是方便和保障使用者的工具,網站運作者必需透過其他方法保護自己的網站免受侵害。

另外,有些人擔心 OpenID 會成為網絡釣魚者的天堂。只要惡意網站在要求 OpenID 登入時將使用者重導至一個偽造的身份伺服器,向使用者要求帳戶名稱及密碼,即可登入該帳戶擁有的全部服務。不過這個問題基本上跟現時網絡上出現的偽造網站的方法同出一徹,只要使用者細心留意導向的身份伺服器網址是否正確,即可避免帳戶被盜取的問題。(切記:網站絕不會向你同時索取 OpenID URL 跟密碼。在同一頁面請你打 URL 和密碼的,一定是釣魚網站)

OpenID 自推出以來即獲得不少業界支持,表態支持的有 AOL,VeriSign,Microsoft,Zoomr以及 LiveJournal。其中 AOL,Zoomr 及 LJ 均接受以 OpenID 開設新帳戶,Microsoft 則計劃將 OpenID 與其 CardSpace 技術融合(會不會是 EEE 呢?)。WordPress.com 也提供 OpenID 身份伺服器,可是留言不支援 OpenID 卻真的叫人摸不著頭腦。

怎樣擁有自己的 OpenID?方法有很多,不過簡單來說是這樣:

  1. 到其中一個 OpenID 供應商申請一個 OpenID,或自己架一個 OpenID 伺服器。(我是自己架一個的)
  2. 將以下兩句加到你的個人網址首頁的 HTML <head> 部份:
    
    

這兩句的內容因人而異,不過大部份供應商也會在你申請後告訴你。openid.delegate href URL 即是 OpenID 供應商提供給你的網址,openid.server 的 URL 可以到那個 URL,找一下源碼再複製過來 。只要設定好以後,你便可以使用自己的個人網址為帳戶名稱。我的 OpenID URL 便是 mk.netgenes.org。

下一篇說說 WordPress 支援 OpenID 的方法和技巧。

延伸閱讀: