理解OAuth2 0認證與客戶端授權碼模式詳解

2021-09-16 18:37:15 字數 3938 閱讀 6404

oauth協議為使用者資源的授權提供了乙個安全又簡易的標準。與以往的授權方式不同之處是oauth的授權不會使第三方觸及到使用者的帳號資訊(如使用者名稱與密碼),即第三方無需使用使用者的使用者名稱與密碼就可以申請獲得該使用者資源的授權,因此oauth是安全的。oauthopen authorization的簡寫

oauth本身不存在乙個標準的實現,後端開發者自己根據實際的需求和標準的規定實現。其步驟一般如下:

第三方要求使用者給予授權

使用者同意授權

根據上一步獲得的授權,第三方向認證伺服器請求令牌(token

認證伺服器對授權進行認證,確認無誤後發放令牌

第三方使用令牌向資源伺服器請求資源

資源伺服器使用令牌向認證伺服器確認令牌的正確性,確認無誤後提供資源

任何身份認證,本質上都是基於對請求方的不信任所產生的。同時,請求方是信任被請求方的,例如使用者請求服務時,會信任服務方。所以,身份認證就是為了解決身份的可信任問題。

服務方不信任使用者,所以需要使用者提供密碼或其他可信憑據

使用者部分信任第三方應用,所以使用者願意把自已在服務方裡的某些服務交給第三方使用,但不願意把自已在服務方的密碼等交給第三方應用

resource owner(資源擁有者:使用者)

client (第三方接入平台:請求者)

resource server (伺服器資源:資料中心)

authorization server (認證伺服器)

步驟詳解:

authorization request, 第三方請求使用者授權

authorization grant,使用者同意授權後,會從服務方獲取一次性使用者授權憑據(如code碼)給第三方

access token,認證伺服器核對授權憑據等資訊,確認無誤後,向第三方傳送訪問令牌access token等資訊

access token,通過這個access tokenresource server索要資料

protected resource,資源伺服器使用令牌向認證伺服器確認令牌的正確性,確認無誤後提供資源

這樣服務方,一可以確定第三方得到了使用者對此次服務的授權(根據使用者授權憑據),二可以確定第三方的身份是可以信任的(根據身份憑據),所以,最終的結果就是,第三方順利地從服務方獲取到了此次所請求的服務

從上面的流程中可以看出,oauth2.0完整地解決了使用者服務方第三方在某次服務時這三者之間的信任問題

客戶端必須得到使用者的授權(authorization grant),才能獲得令牌(access token)。oauth 2.0定義了四種授權方式:

授權碼模式(authorization code

簡化模式(implicit

密碼模式(resource owner password credentials

客戶端模式(client credentials

授權碼模式(authorization code)是功能最完整、流程最嚴密的授權模式。它的特點就是通過客戶端的後台伺服器與"服務提供商"的認證伺服器進行互動。

它的步驟如下:

使用者訪問客戶端,後者將前者導向認證伺服器

使用者選擇是否給予客戶端授權

假設使用者給予授權,認證伺服器將使用者導向客戶端事先指定的重定向uri,同時附上乙個授權碼

客戶端收到授權碼,附上早先的重定向uri,向認證伺服器申請令牌。這一步是在客戶端的後台的伺服器上完成的,對使用者不可見

認證伺服器核對了授權碼和重定向uri,確認無誤後,向客戶端傳送訪問令牌(access token)和更新令牌(refresh token)等

包含以下引數:

示例:

包含以下引數:示例:

包含以下引數:示例:

包含以下引數:示例:

如果使用者訪問的時候,客戶端的訪問令牌access_token已經過期,則需要使用更新令牌refresh_token申請乙個新的訪問令牌。

客戶端發出更新令牌的http請求,包含以下引數:

示例:

(完)oauth 授權的工作原理是怎樣的?足夠安全嗎?

理解OAuth2 0認證

oauth協議為使用者資源的授權提供了乙個安全的 開放而又簡易的標準。與以往的授權方式不同之處是oauth的授權不會使第三方觸及到使用者的帳號資訊 如使用者名稱與密碼 即第三方無需使用使用者的使用者名稱與密碼就可以申請獲得該使用者資源的授權,因此oauth是安全的。oauth是open author...

oauth2 0服務端與客戶端搭建

oauth2.0服務端與客戶端搭建 推酷 今天搭建了oauth2.0服務端與客戶端。把搭建的過程記錄一下。具體實現的功能是 client.ruanwenwu.cn的使用者能夠通過 server.ruanwenwu.cn的使用者名稱和密碼登陸client.ruanwenwu.cn。並且登陸 後,cli...

OAuth2 0認證授權

授權碼模式 authorization code 是功能最完整 流程最嚴密的授權模式。它的特點就是通過客戶端的後台伺服器,與 服務提供商 的認證伺服器進行互動。client id x client secret x response type 表示授權型別,必選項,此處的值固定為 code clie...