關於OAuth以及OAuth1.0與OAuth2.0的區別
一、 Oauth的概念
Oauth的官方簡介是:
An open protocol to allow secure API authorization in a simple andstandard method from web, mobile and desktop applications.
隨著大量開放平臺的出現,建立在開放平臺之上的各種第三方應用也在大量冒出,出對安全性和統一標準的要求,於是出現了oauth協議
簡單來說,OAUTH是一種開放的協議,他能為桌面程式或者基於BS的web應用提供一種簡單的標準方式去訪問需要使用者授權的API(ApplicationProgramming Interface)服務,而且任何第三方都可以使用OAUTH認證服務。在為第三方提供服務的過程中,他還能起到保護使用者賬號安全的作用。
二、 Oauth的發展過程
修復了前一版本的安全漏洞,併成為RFC5849,我們現在使用的OAuth版本多半都是以此版本為基礎。
2010年4月釋出了OAuth2.0,是OAuth協議的下一版本,但與OAuth 1.0版本互不相容。
三、 Oauth的作用
在上面的給出Oauth的定義中其實就已經說明白了它的作用,但有點抽象,就拿我最近做的一個小應用來舉例吧。如果我們想要做關於新浪微博的第三方應用,那麼我們就可以用到微博提供給我們的一系列API,但應用這些API是需要我麼先去授權驗證的,這裡就用到了Oauth了。而且作為第三方開發者,我們並沒有得到使用者的實質性的私密資訊,所以說他還保護了使用者賬號安全。
我們在應用Oauth的時候常常會拿他和OpenID作比較,那我們怎麼去理解他們之間的區別呢?
其實OAuth的關注點在於授權,而OpenID則側重於證明鑑定,簡單來說,我們可以認為OAuth為我們解決“使用者能(想)做什麼”,是“WHAT”的問題,而OpenID則為我們驗證“使用者是誰”,是解決“WHO”的問題。
四、 Oauth1.0與Oauth2.0的區別
①auth1.0與Oauth2.0是相互不相容的,所以他們為我們提供了不同的授權方式:
2.0的使用者授權過程有3步:
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)—>訪問資源
②1.0協議每個token都有一個加密,2.0則不需要。這樣來看1.0似乎更加安全,但是2.0要求使用https協議,安全性也更高一籌。
③2.0充分考慮了客戶端的各種子態,因而提供了多種途徑獲取訪問令牌,有:授權碼、
客戶端私有證書、資源擁有者密碼證書、重新整理令牌等方式,而且驗證過程更為簡潔。
相比之下 1.0只有一個使用者授權流程。
在瞭解OAuth的過程中參考了很多網站的資料以及前輩的總結,在這裡把自己的總結和感悟寫出來,也希望和大家分享、討論,一起進步。
相關參照網站: