OAuth2.0

  OAuth2.0是OAuth協議的下一個版本,但不向後兼容OAuth1.0。OAuth2.0關注客戶端開發者的簡易性,同時爲Web應用,桌面應用和手機提供專門的認證流程。web

  OAuth(開放受權)是個開放標準,容許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片、視頻、聯繫人列表),而無需將用戶名和密碼提供給第三方應用。瀏覽器

認證和受權流程服務器

  在認證和受權的過程當中涉及的三方:網站

  一、服務提供方,用戶使用服務提供方來存儲受保護的資源,如照片、視頻、聯繫人列表。編碼

  二、用戶,存認在服務提供方的受保護的資源的擁有者。操作系統

  三、客戶端(第三方應用),要訪問服務提供方資源的第三方應用,一般是網站,如提供照片打印服務的網站。在認證過程以前,客戶端要向服務提供者申請客戶端標識。代理

  使用OAuth進行認證和受權的過程以下所求:視頻

  一、用戶訪問客戶端的網站,想操做用戶存放在服務提供方的資源。blog

  二、客戶端向服務提供方請求一個臨時令牌。排序

  三、服務提供方驗證客戶端的身份後,授予一個臨時令牌。

  四、客戶端得到臨時令牌後,將用戶引導至服務提供方的受權頁面請求用戶受權。在這個過程當中將臨時令牌和客戶端的架設鏈接發送給服務提供方。

  五、用戶在服務提供方的網頁上輸入用戶名和密碼,而後受權該客戶端訪問所請求的資源。

  六、受權成功後,服務提供方引導用戶返回客戶端的網頁。

  七、客戶端根據臨時令牌從服務提供方那裏獲取訪問令牌(Access Token)。

  八、服務提供方根據臨時令牌和用戶的受權狀況授予客戶端訪問令牌。

  九、客戶端使用獲取的訪問令牌(Access Token)訪問存放在服務提供方上的受保護的資源。

OAuth2.0新特性:

  6種全新的流程:

  一、User-Agent Flow – 客戶端運行於用戶代理內(典型如web瀏覽器)。
  二、Web Server Flow – 客戶端是web服務器程序的一部分,經過http request接入,這是OAuth 1.0提供的流程的簡化版本。
  三、Device Flow – 適用於客戶端在受限設備上執行操做,可是終端用戶單獨接入另外一臺電腦或者設備的瀏覽器
  四、Username and Password Flow – 這個流程的應用場景是,用戶信任客戶端處理身份憑據,可是仍然不但願客戶端儲存他們的用戶名和密碼,這個流程僅在用戶高度信任客戶端時才適用。
  五、Client Credentials Flow – 客戶端適用它的身份憑據去獲取access token,這個流程支持2-legged OAuth的場景。
  六、Assertion Flow – 客戶端用assertion去換取access token,好比SAML assertion。
  能夠經過使用以上的多種流程實現Native應用程序對OAuth的支持(程序運行於桌面操做系統或移動折本)

  簽名簡化:

  對於簽名的支持,簽名機制大大簡化,不須要特殊的解析處理,編碼和對參數進行排序。使用一個secret替代先的兩個secret。

  短時間token和長效的身份憑據

  原先的OAuth,會發行一個有效期很是長的token(典型的是一年有效期或者無有效期限制),在OAuth2.0中,Server將發行一個短有效期的access token和長生命期的refresh token。這將容許客戶端無需用戶再次操做而獲取一個新的access token,而且也限制了access token的有效期。

  角色分開:

  OAuth2.0將分爲兩個角色:

  Authorization Server負責獲取用戶的受權而且發佈token。

  Resourece負責處理API calls。

相關文章
相關標籤/搜索