前面兩篇文章(OAuth和OpenID)都說了可以用來認證身份,但是他們之間到底有哪些不同,哪些情況應該用OAuth,哪些情況應該用OpenID呢?下面就一起來看下他們之間的區別。
簡短的說,OAuth關注的是authorization;而OpenID側重的是authentication。從表面上看,這兩個英文單詞很容易混淆,但實際上,它們的含義有本質的區別:
- authorization: n. 授權,認可;批准,委任
- authentication: n. 證明;鑒定;證實
OAuth關注的是授權,即:“用戶能做什么”;而OpenID關注的是證明,即:“用戶是誰”。下面就分別來說兩者的功能。
OpenID
- 用戶希望訪問其在example.com的賬戶
- example.com (在OpenID的黑話里面被稱為“Relying Party”) 提示用戶輸入他/她/它的OpenID
- 用戶給出了他的OpenID,比如說”http://user.myopenid.com”
- example.com 跳轉到了用戶的OpenID提供商“mypopenid.com”
- 用戶在”myopenid.com”(OpenID provider)提示的界面上輸入用戶名密碼登錄
- “myopenid.com” (OpenID provider) 問用戶是否要登錄到example.com
- 用戶同意后,”myopenid.com” (OpenID provider) 跳轉回example.com
- example.com 允許用戶訪問其帳號
OAuth
- 用戶在使用example.com時希望從mycontacts.com導入他的聯系人
- example.com (在OAuth的黑話里面叫“Consumer”)把用戶送往mycontacts.com (黑話是“Service Provider”)
- 用戶在mycontacts.com 登錄(可能也可能不用了他的OpenID)
- mycontacts.com問用戶是不是希望授權example.com訪問他在mycontact.com的聯系人
- 用戶確定
- mycontacts.com 把用戶送回example.com
- example.com 從mycontacts.com拿到聯系人
- example.com 告訴用戶導入成功
OpenID是用來驗證的,就是說可以用一個url來唯一表明身份(不用挨個記每個網站的用戶密碼)。OAuth是用來授權的(俺可以授權一個網站訪問俺在另外一個網站的數據,而俺不用把俺的密碼給第一個網站。
很多人現在錯誤的把OAuth當做OpenID使用。但是其實也不會照成什么影響。如水煮魚開發的WordPress插件