OAuth和OpenID的區別

由 webmaster 在 四, 2011/12/29 - 20:12 發表

 

前面兩篇文章(OAuth學習筆記OpenID學習筆記)都說了可以用來認證身份,但是他們之間到底有哪些不同,哪些情況 ​​應該用OAuth,哪些情況 ​​應該用OpenID呢?下面就一起來看下他們之間的區別。

簡短的說,OAuth關注的是authorization;而OpenID側重的是authentication。從表面上看,這兩個英文單詞很容易混淆,但實際上,它們的含義有本質的區別:

  • authorization: n. 授權,認可;批准,委任
  • authentication: n. 證明;鑑定;證實

OAuth關注的是授權,即:“用戶能做什麼”;而OpenID關注的是證明,即:“用戶是誰”。下面就分別來說兩者的功能。

OpenID

  1. 用戶希望訪問其在example.com的賬戶
  2. example.com (在OpenID的黑話裡面被稱為“Relying Party”) 提示用戶輸入他/她/它的OpenID
  3. 用戶給出了他的OpenID,比如說”http://user.myopenid.com”
  4. example.com 跳轉到了用戶的OpenID提供商“mypopenid.com”
  5. 用戶在”myopenid.com”(OpenID provider)提示的界面上輸入用戶名密碼登錄
  6. “myopenid.com” (OpenID provider) 問用戶是否要登錄到example.com
  7. 用戶同意後,”myopenid.com” (OpenID provider) 跳轉回example.com
  8. example.com 允許用戶訪問其帳號

OAuth

  1. 用戶在使用example.com時希望從mycontacts.com導入他的聯繫人
  2. example.com (在OAuth的黑話裡面叫“Consumer”)把用戶送往mycontacts.com (黑話是“Service Provider”)
  3. 用戶在mycontacts.com 登錄(可能也可能不用了他的OpenID)
  4. mycontacts.com問用戶是不是希望授權example.com訪問他在mycontact.com的聯繫人
  5. 用戶確定
  6. mycontacts.com 把用戶送回example.com
  7. example.com 從mycontacts.com拿到聯繫人
  8. example.com 告訴用戶導入成功

OpenID是用來驗證的,就是說可以用一個url來唯一表明身份(不用挨個記每個網站的用戶密碼)。OAuth是用來授權的(俺可以授權一個網站訪問俺在另外一個網站的數據,而俺不用把俺的密碼給第一個網站。

很多人現在錯誤的把OAuth當做OpenID使用。但是其實也不會照成什麼影響。如水煮魚開發的WordPress插件:

本文來自:http://www.biaodianfu.com/oauth-openid.html 

Read more >>

關於EC ONE ECONE-top-right.png