[網路程式設計] 網路服務認證:OAuth

posted in: Server, 網路程式設計 | 0

何謂OAuth?依照其官網的定義: 『An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications』 當我們要使用網路上提供的服務時,正常的做法的話,會需要使用者的帳號密碼來做登入的動作才能執行((如Facebook上的各種小遊戲及應用程式需要取得你在facebook上的朋友)。可是,我們並不能保證每個網路上的服務都是正常的,如果是釣魚網站的話該怎麼辦?當我們越頻繁的去傳送這組帳密給不同的服務使用時,就代表使用者帳號被惡意使用的風險越高。--而取得帳號密碼的服務,可以為所欲為的進行任何的事,例如改變使用者密碼。如果這組帳密同樣用在如網路銀行等對使用者而言非常重要的網站的話,那麼後果更是不可設想。 我們所需要的,是讓各種不同的third-party的服務有限度的存取他們所需要的資源。 OAuth的導入,便是為了解決這個問題。 不同於Client-Server的架構,client任何資源的請求都是利用他自己的credentials直接跟server存取。在OAuth裡,其導入了resource owner,將client對資源存取的權限抽離出來。--意即client端想對Server進任何資源的存取,都需要先向resource owner請求permission,例如:在facebook中常常會跳出請求授權的畫面,如下: 請求resource owner的permission                     跟resource owner請求額外權限 … Continued