1. 程式人生 > >關於OAuth以及OAuth1.0與OAuth2.0的區別

關於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.0Oauth2.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的過程中參考了很多網站的資料以及前輩的總結,在這裡把自己的總結和感悟寫出來,也希望和大家分享、討論,一起進步。

相關參照網站: