Oauth的官方簡介是:隨着大量開放平臺的出現,創建在開放平臺之上的各類第三方應用也在大量冒出,出對安全性和統一標準的要求,因而出現了oauth協議web
簡單來講,OAUTH是一種開放的協議,他能爲桌面程序或者基於BS的web應用提供一種簡單的標準方式去訪問須要用戶受權的API(ApplicationProgramming Interface)服務,並且任何第三方均可以使用OAUTH認證服務。在爲第三方提供服務的過程當中,他還能起到保護用戶帳號安全的做用安全
在項目開發中,咱們常常說認證和受權,常常把他們放到一塊兒去描述,那二者在本質上是有區別的,OpenID和OAuth就是咱們說的認證和受權。服務器
OpenID:Authentication 認證加密
OAuth :Authorization 受權spa
簡單來講,咱們能夠認爲OAuth爲咱們解決「用戶能(想)作什麼」,是「WHAT」的問題,而OpenID則爲咱們驗證「用戶是誰」,是解決「WHO」的問題。對Oauth和OpenId的做用仍是有點抽象,就舉個例吧。CSDN使用QQ登陸,進入csdn的登陸頁,點擊使用QQ登陸,在進入到QQ登陸界面後,最開始是要請求認證,用戶輸入QQ號和密碼,點擊登陸,騰訊互聯會先進行驗證該用戶是否爲個人用戶,若是是個人用戶,那麼我會通知你(CSDN),他是個人用戶,你可使用該帳戶登陸你的系統,這個過程就是認證(Authentication),認證就是證實你是誰,你是不是真實存在的,這就是OpenID。token
而在QQ受權登陸下方,有兩給CheckBox複選框,能夠容許CSDN得到您的暱稱、頭像、性別,這是在認證以後的事了,在騰訊互聯你是我平臺的用戶後,你能夠本身選擇CSDN是否有權去獲取你的相關信息,當你勾選後,騰訊互聯就把你的這些基本信息給了CSDN,這個過程就是受權(Authorization),受權就是肯定了你是誰後,又把屬於你的東西給了別人,這個就是OAuth。資源
OAuth有OAuth1.0和OAuth2.0兩個版本,兩個版本的區別以下:開發
2.0的用戶受權過程有3步:io
A)用戶到受權服務器,請求受權,而後返回受權碼(AuthorizationCode)登錄
B)客戶端由受權碼到受權服務器換取訪問令牌(access token)
C)用訪問令牌去訪問獲得受權的資源、
總結:獲取受權碼(Authorization Code)—>換取訪問令牌(access_token)—>訪問資源:
1.0的受權分4步,
A)客戶端到受權服務器請求一個受權令牌(requesttoken&secret)
B)引導用戶到受權服務器請求受權
C)用訪問令牌到受權服務器換取訪問令牌(accesstoken&secret)
D)用訪問令牌去訪問獲得受權的資源
總結:請求受權令牌(request token&secret)—>換取訪問令牌(access token&secret)—>訪問資源