最近更新: 2011-05-04

用案例解釋 OpenID 與 OAuth 的使用情境

參與者
  • abc.net 是一個社群服務網站,並且同時也是 OpenID 與 OAuth 的 Provider 。
  • xyz.com 是一個購物網站,且可使用 abc.net 所提供的 OpenID 與 OAuth 的服務。
  • 路人甲,是一個人,慣用的網路ID是 john。

路人甲(john)是 abc.net 的長期使用者,他在 abc.net 的使用記錄中,留下了許多偏好資訊,包含:

  • 他的名片,記載了他的地址、聯絡方式、與公司職務等。
  • 他的使用偏好,他習慣選擇中文使用介面,偏好藍色系佈景。
  • 他的通訊錄與好友名單。
OpenID 使用情境

路人甲想使用 xyz.com 的服務,可是他不想要再多記一個密碼。 由於 xyz.com 支援 OpenID 的使用,所以路人甲在登入 xyz.com 網站時,他的登入帳號可以輸入 http://john.abc.net 。 於是 xyz.com 網站就會導引路人甲回到 abc.net 的登入頁面,完成輸入密碼的動作之後,再回到 xyz.com 的使用頁面。

所以 OpenID 讓路人甲用同一個帳號,就可以登入另一個網站(若其支援的話)。

使用 OpenID provider 並不需要特定簽約。以 abc.net 與 xyz.com 的關係來說,只要 xyz.com 願意接受 abc.net 的 OpenID ,xyz.com 就可以使用 OpenID 登入。xyz.com 並不需要向 abc.net 簽約。

OAuth 使用情境

當路人甲第一次登入 xyz.com 的使用頁面後,xyz.com 為了提供路人甲更好的操作體驗,於是它可以透過 OAuth 從 abc.net 處取得路人甲的使用偏好。 再一次,路人甲將被導引回 abc.net 的頁面,確認他是否要讓 xyz.com 取得他的使用偏好。 這個確認動作,可能做一次後就會被記住而不會再問,也可能每次都問。這由 abc.net 的設計決定,讓路人甲選擇。

現在 xyz.com 得知路人甲的使用偏好了,所以它會直接顯示中文使用介面,並使用藍色系的布景。

路人甲在 xyz.com 上訂購商品了,現在 xyz.com 需要路人甲寄件地址與聯絡電話。 由於路人甲已經允許 xyz.com 透過 OAuth 向 abc.net 查詢他的隱私資訊,所以 xyz.com 將可直接向 abc.net 取得路人甲的名片(地址與電話),而不需路人甲自己填寫。

在這個資料查詢的過程中,路人甲都不需要把他在 abc.net 的登入密碼告知 xyz.com 。

所以 OAuth 可在保護密碼的條件下,讓使用者自己控制另一個網站向本站查詢其個人資料。

假設有一天,xyz.com 犯傻了,在路人甲登入網站後,透過 OAuth 向 abc.net 要路人甲的某個影片檔。 由於 abc.net 並不保存路人甲的影片檔、或者路人甲並未允許 xyz.com 提取影片資料,所以 abc.net 就不會提供影片給 xyz.com 。

藉由以上使用案例,應該可以了解 OpenID 與 OAuth 的使用場合了。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/15614481.html

樂多舊回應
zx1986@gmail.com(張旭) (#comment-21739725)
Wed, 04 May 2011 22:15:28 +0800
COOL!
未留名 (#comment-23385084)
Mon, 30 Sep 2013 15:35:13 +0800
感謝!清楚明瞭!
balmydrizzle@gmail.com(清爽小雨) (#comment-25082274)
Thu, 28 Aug 2014 18:06:07 +0800
請教一下,假設我是RP,我收到一個open id的account輸入,怎麼知道要導過去的provider登入和驗證的網址是什麼?比如說你例子中的http://john.abc.net,RP是移除john.部份,直接導到 abc.net這個網址嗎? 可是網址一般不是應該要完整的網址,但是abc.net只是domain name部份而已。