1.OAuth概念?web
OAuth是Open Authorization的簡寫,OAuth協議爲用戶資源的受權提供了一個安全的、開放而又簡易的標準。與以往的受權方式不一樣之處是OAuth的受權不會使第三方觸及到用戶的賬號信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就能夠申請得到該用戶資源的受權,所以OAuth是安全的。OAuth2.0是OAuth協議的延續版本,但不向後兼容OAuth 1.0即徹底廢止了OAuth1.0。瀏覽器
2.OAuth2與OAuth的不一樣之處?安全
3.簡單理解服務器
咱們有一個資源服務器,資源服務器中有一系列的用戶數據。app
如今有一個應用想要獲取咱們的用戶數據。
那麼最簡單的方法就是咱們開發一個API。
分佈式
但是某天來了個惡意應用,或者是咱們不想給它數據的應用,咱們就會形成數據的泄漏。網站
因此咱們就須要對第三方的應用進行校驗,好比最原始的方法是使用IP地址,若是是不認識的IP地址就不給他資源。
但是這種方案有兩個嚴重的缺點:編碼
一、當客戶應用換了IP地址以後,咱們也要同時維護更換IP地址。3d
二、當客戶應用是分佈式部署不少份的時候,咱們就要爲同一個用戶維護不少份IP地址。視頻
三、ip是能夠假裝的。
這樣無疑是繁瑣麻煩、難以維護的。
因此通常業界的解決方案是給予客戶應用一個「出入證」——專業稱爲訪問令牌(Access Token)。若是來訪問的客戶應用帶有合法的訪問令牌,則能夠給他數據,不然便拒絕。
那麼Access Token哪裏來的呢?咱們通常是由一個受權服務器頒發的。每一個容許其訪問資源的客戶應用都先在咱們的系統中註冊一個appkey,而後每次用這個appkey向咱們的受權服務器申請Access Token。這樣不論客戶應用換不換ip、有多少ip,只要客戶應用的appkey是惟一不變的就不用作任何修改,也不用擔憂ip假裝的問題。
到此爲止咱們其實還面臨着一個問題,那就是當咱們獲取用戶數據的時候,雖然咱們容許第三方的客戶應用獲取用戶數據,用戶本人卻不必定容許。好比,用戶在咱們系統裏存儲了圖片、文檔、視頻等數據,用戶只容許第三方應用獲取他的文檔,而不容許第三方應用獲取他的圖片和視頻。因此在咱們頒發給客戶應用相關權限的Access Token的時候,須要通過用戶的贊成。
OAuth2.0本質上就是將這裏的客戶應用向受權服務器請求令牌與受權服務器頒發令牌的過程標準化了,根據這樣一套標準與解決方案,咱們就能夠安全的讓第三方應用訪問存儲在咱們服務器上的用戶數據了。