認識 OpenID

本來以為應該很多人都認識 OpenID 了,沒想到跟幾個朋友聊天,才知道很多人對 OpenID 沒那麼熟悉,所以來寫篇口語化的介紹文章吧 :p (反正也很久沒寫 blog 了 XD)

OpenID
當我們在瀏覽或使用某些網站時,總是會被網站要求要註冊會員,也許這個動作對於常常在使用網站服務的使用者來說不算什麼,但對於一些族群的人就會覺得是個麻煩,而且註冊一個新的帳號,如果不想多記住一組密碼,沿用自己常用的密碼又會有安全上的疑慮。

於是人們就開始想像,為什麼不能像 Google (舉例)這樣,旗下的所有網路服務只需要一組帳號密碼就能通行無阻,通常我們會把這樣的整合稱作「Single Sign-On」。不過這樣的整合往往只能在同一家網路公司或是像企業內部的資訊系統才有機會作到。

OpenID (官網, Wikipedia) 就因應這樣的需求而誕生了,這裡就不多說 OpenID 的歷史了,有興趣的人可以自行再研究。簡單地說,有了 OpenID,如果你瀏覽的網站支援 OpenID 的話,那麼你就不必再產生一組帳號密碼,直接用你的 OpenID 進行驗證登入。

OpenID 主要有幾個角色:Provider, Consumer, 及 Server,以下將用一個狀況來說明這些角色的關係,以及 OpenID 的運作模式。

假設今天網站A是一個支援 OpenID 驗證的網站,那麼網站A算是一個「OpenID consumer」;而 Yahoo! 的帳號可以生成一個 OpenID (詳細),使用者可以拿著這個生成的 OpenID 到 OpenID consumer 去作驗證登入的動作,這樣 Yahoo! 就算是一個「OpenID provider」;但對 consumer 來說,使用者輸入的 OpenID 不一定長成什麼樣子(往往是 URL 形式),更沒辦法單靠這個字串判斷要把使用者導向何處(理論上是 provider 的登入畫面)作帳號密碼的驗證動作,所以 consumer 必須透過某個協定向「Server 」來問這樣的 OpenID 是否合法,以及要導向的網址。

像一個知名的圖片分享網站 -- Zooomr 就是一個支援 OpenID 的網站(當然就是 consumer),當你試圖要登入 Zooomr 時,可以選擇以 OpenID 的方式登入,這時 Zooomr 會把你導向你的 OpenID provider 去作驗證(帳號密碼的輸入動作),如果驗證成功,那 Zooomr 就會信任這個驗證,開始讓你使用 Zooomr 的服務。

當然,即便 OpenID provider 愈來愈多,它們的會員帳號都成為 OpenID,但並不代表這些 OpenID 是相同的,簡而言之,由不同 provider 提供的 OpenID 就會被視為不同的 id,只不過它們有遵循 OpenID 的規格而已。但是對 consumer 而言,只要是遵守 OpenID 規格的 id 都可以進行驗證。

如此一來,你將不必再害怕把常用的帳號密碼到處拿去註冊了,只要挑一個你信任的 provider,把這些機密資訊存放在它家就好了 :p