# OAuth vs Open ID ## Open ID 有一種串聯身分的概念。 假如我要架設一個網站、平台,裡面的功能要有會員才能用,但我又不希望使用者需要額外記帳號密碼,則可以使用Open ID,讓使用者利用"其他平台的帳號"來創建自己的身分。 這樣的好處,是我們不需要記住使用者的密碼等資訊,那些是記在別人家。使用者不必擔心說,某個地方的網站被駭,就要統統換密碼 (畢竟很多人在各個地方都用同一組密碼。) ## OAuth 則是一種鑰匙的概念。 我這個網站、系統、APP,不需要會員的身分,但我**需要使用其他網站、系統上的東西**,所以我必須有**取得那些功能的權限**。 我的這個應用程式、網頁 **(假設是一個加工廠)**,我可能提供數個有支援的 **(擁有材料的)** 其他系統、網站 **(倉庫)**,假如使用者想使用其中一個網站上面的資料、內容,但我們沒有權限 **(倉庫大門的鑰匙)**,那我們會先讓使用者登入系統 **(倉庫)**,選擇我們需要提供的權限給我們 **(材料房的鑰匙,但不給辦公室的鑰匙)**,這樣我們就可以利用材料去幫使用者做他們想要的功能、服務。 **** ## 情境範例 阿誠今天想要使用 Dropbox 的空間,他必須擁有 Dropbox 的帳號,而 Dropbox 提供了直接註冊 or **以Google 帳號註冊** 兩種選項。 很剛好阿誠也已經擁有了 Google 的帳號,他也不想要另外再記一組帳號密碼,所以選擇了後者。 讚讚讚,現在阿誠可以用 Dropbox 會員的身分,去使用空間了~ 可喜可樂! 因為阿誠家裡沒有印表機,所以在家裡傳了一些要印的文件、圖片上去 Dropbox的硬碟空間。 隔天到了研究室,想利用研究室的印表機把那些檔案印出來。 阿誠先下載了印表機的APP,印表機並不需要阿誠辦會員,就可以直接提供功能給阿誠用,真是佛心來著 但是它需要取得阿誠想印的檔案(這個印表機有支援取得 Dropbox 空間的內容) 印表機:Dropbox 把阿誠的檔案列表給我吧 ~ Dropbox:你誰阿你? 我幹嘛給你他的資料? 它資料的大門就在這,你去取得 **鑰匙** 就能拿到資料,我給你 ***登入(註1)的地方及對於鑰匙的要求(註2)**,如果你真的是幫阿誠做事,叫他自己拿鑰匙給你。 印表機:阿誠,Dropbox叫你先登入會員,然後把鑰匙給我,它才讓我幫你做事情。 阿誠:OKOK \>根據註一登入會員 *(Open ID)* \>根據註二上所需要的權限,產生鑰匙 *(OAuth)* 阿誠:安安 印表機 鑰匙在這,去吧去吧 ~ 印表機:Dropbox 鑰匙在這,讓我進去吧 ~ (鑰匙真的可以開門) Dropbox:OK 門打開了,去吧 ~ 接下來,印表機拿著鑰匙去幫阿誠把他要的檔案印出來 ~ *(利用OAuth去做事情)* 阿誠順利的交了作業,可喜可樂 ~ ## 參考資料 OpenID versus OAuth from the user’s perspective (http://cakebaker.42dh.com/2008/04/01/openid-versus-oauth-from-the-users-perspective/) What's the difference between OpenID and OAuth? (https://stackoverflow.com/questions/1087031/whats-the-difference-between-openid-and-oauth) Getting Started (https://oauth.net/getting-started/) 漫談OAuth認證協定與運作流程 (http://cire.pixnet.net/blog/post/30810748-%E6%BC%AB%E8%AB%87oauth%E8%AA%8D%E8%AD%89%E5%8D%94%E5%AE%9A%E8%88%87%E9%81%8B%E4%BD%9C%E6%B5%81%E7%A8%8B) OAuth 2.0 筆記 (1) 世界觀 (https://blog.yorkxin.org/2013/09/30/oauth2-1-introduction.html)