OAuth 2.0 授權(quán)

2020-12-07 15:53 更新

授權(quán)

當(dāng)一個客戶端應(yīng)用想要訪問擁有者托管在資源服務(wù)器的資源時,它必須先獲得授權(quán),本節(jié)將講述客戶端如何獲取授權(quán)。

客戶端標(biāo)識,客戶端密鑰和重定向URL

在客戶端應(yīng)用能請求訪問資源服務(wù)器的資源之前,客戶端應(yīng)用程序,必須先在資源服務(wù)器相關(guān)聯(lián)的授權(quán)服務(wù)器中進行注冊。

注冊一個一次性的任務(wù)。一旦注冊了,除非客戶端注冊被取消了,注冊將持續(xù)有效。

注冊后客戶端應(yīng)用將由授權(quán)服務(wù)器分配客戶端標(biāo)識和密鑰。在授權(quán)服務(wù)器上,客戶端標(biāo)識和密鑰是唯一標(biāo)識客戶端應(yīng)用的。如果客戶端應(yīng)用注冊了多個授權(quán)服務(wù)器(如 Facebook, Twitter 和 Google 等),每一個授權(quán)服務(wù)器將發(fā)出唯一的標(biāo)識給該客戶端應(yīng)用。

無論什么時候客戶端應(yīng)用,想要訪問同樣資源服務(wù)器上的資源,它都需要通過發(fā)送客戶端標(biāo)識和密鑰到授權(quán)服務(wù)器來驗證自己。

在注冊過程中,客戶端應(yīng)用也注冊了一個重定向 URL,當(dāng)資源擁有者授權(quán)給客戶端應(yīng)用時,該重定向 URL 會被使用。當(dāng)資源擁有者成功的通過授權(quán)服務(wù)器授權(quán)給客戶端應(yīng)用時,資源擁有者被重定向回客戶端應(yīng)用,再跳轉(zhuǎn)到該重定向 URL。

  • 授權(quán)批準(zhǔn)

授權(quán)批準(zhǔn)由資源服務(wù)器,及與其相關(guān)的授權(quán)服務(wù)器,給予客戶端應(yīng)用。

OAuth 2.0 列舉四種不同類型授權(quán)批準(zhǔn),每一種類型都有不同的安全特性。這些授權(quán)批準(zhǔn)類型為:

  • 授權(quán)碼
  • 契約
  • 資源擁有者密鑰證書
  • 客戶端證書
  • 每種授權(quán)批準(zhǔn)在下文都會提到。

授權(quán)碼

用授權(quán)碼來授權(quán)批準(zhǔn)原理如下:資源擁有者(用戶)訪問客戶端應(yīng)用??蛻舳藨?yīng)用告訴用戶通過授權(quán)服務(wù)器(如 Facebook, Google 和 Twitter 等)來登錄到客戶端應(yīng)用。

為了通過授權(quán)服務(wù)器登錄,用戶通過客戶端應(yīng)用被重定向到授權(quán)服務(wù)器。客戶端應(yīng)用發(fā)送它的客戶端標(biāo)識給授權(quán)服務(wù)器,那么授權(quán)服務(wù)器就知道是哪個應(yīng)用嘗試訪問受保護的資源。當(dāng)被重定向回客戶端應(yīng)用時,授權(quán)服務(wù)器發(fā)送給用戶特定的重定向 URL, 即客戶端已經(jīng)提前與授權(quán)服務(wù)器注冊。隨著重定向,授權(quán)服務(wù)器發(fā)送一個代表授權(quán)的授權(quán)碼。

當(dāng)在客戶端應(yīng)用的重定向 URL 被訪問時,客戶端應(yīng)用直接連接授權(quán)服務(wù)器??蛻舳藨?yīng)用發(fā)送授權(quán)碼,客戶端標(biāo)識及密鑰,如果客戶端應(yīng)用能接受這些值,那么授權(quán)服務(wù)器返回一個訪問令牌。

現(xiàn)在客戶端應(yīng)用就可以用該訪問令牌請求資源服務(wù)器的資源了。該訪問令牌可作為客戶端授權(quán)和授權(quán)訪問資源。

下面是當(dāng)用授權(quán)碼授權(quán)客戶端應(yīng)用時的授權(quán)過程:

通過授權(quán)碼授權(quán)

契約

契約授權(quán)類似于授權(quán)碼授權(quán),除了用戶完成授權(quán)后,訪問令牌返回給客戶端應(yīng)用外。當(dāng)用戶代理被重定向到重定向 URL 時,訪問令牌因此被返回。

當(dāng)然這意味著訪問令牌可以被用戶代理訪問,或者在契約授權(quán)過程中參與的原生應(yīng)用。訪問令牌在 web 服務(wù)器上不是安全存儲的。

進一步說,客戶端應(yīng)用可以只發(fā)送它的客戶端標(biāo)識給授權(quán)服務(wù)器。如果客戶端也發(fā)送它的密鑰,那么客戶端密鑰將不得不保存在用戶代理或原生應(yīng)用里,那將使它很容易被破解。

契約授權(quán)大多數(shù)用在用戶代理或原生應(yīng)用中。用戶代理或原生應(yīng)用將收到來授權(quán)服務(wù)器的訪問令牌。

下面是闡釋契約授權(quán)的圖:

契約授權(quán)

資源擁有者密鑰證書

資源擁有者證書授權(quán)方法通過客戶端應(yīng)用訪問資源擁有者證書來工作。比如,用戶可以在客戶端應(yīng)用輸入他的 Twitter 用戶名及密鑰(證書)。該客戶端應(yīng)用就可以用著用戶名和密鑰訪問用戶在 Twitter 的資源。

用資源擁有者密鑰證書要求客戶端應(yīng)用很多信任。你不想在那些你懷疑會濫用證書的客戶端應(yīng)用中輸入證書。

資源擁有者密鑰證書通常被用在用戶代理或原生應(yīng)用中。

客戶端證書

客戶端證書授權(quán)對于客戶端需要在資源服務(wù)器訪問資源或調(diào)用函數(shù)的情形使用,與特定的資源擁有者無關(guān)(如用戶)。比如,從Foursquare獲取場地列表,這并沒有必要通過某個Foursquare用戶才能做。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號