Oauth2 0學習記錄

2021-10-08 05:30:00 字數 1632 閱讀 6763

幾乎每個系統,都不開身份驗證,驗證的方式也很多,oauth2.0,sso,還有最近新接觸到的jwt,傻傻搞不清楚,他們之間到底是什麼關係呢?

先簡單整理一下oauth2.0的內容,接下來繼續學習sso和jwt,繼續完善,奧利給!

什麼是oauth2.0?

一種允許通過簡單標準的方法從web,移動和桌面應用程式進行安全授權開放協議。簡單的說oauth 就是一種授權機制。資料的所有者告訴系統,同意授權第三方應用進入系統,獲取這些資料。系統從而產生乙個短期的進入令牌(token),用來代替密碼,供第三方應用使用。

什麼是令牌(token)?與密碼有什麼不同?

在oauth2.0中,令牌的頒發方式有四種,即四種授權型別。

四種授權型別

授權碼(authorization-code),隱藏式(implicit),密碼式(password),客戶端憑證(client credentials)

第一種方式:授權碼

這種方式是第三方應用先申請乙個授權碼,然後再用該碼獲取令牌,這種方式是最常用的流程,安全性也最高,它適用於那些有後端的 web 應用。授權碼通過前端傳送,令牌則是儲存在後端,而且所有與資源伺服器的通訊都在後端完成。這樣的前後端分離,可以避免令牌洩漏。

過程:a**拿到授權碼後,在後端向b**請求令牌(token)

}

第二種方式:隱藏式

有些 web 應用是純前端應用,沒有後端,rfc 6749(oauth 2.0 的標準)規定允許直接向前端頒發令牌,這種方式沒有授權碼。

過程:a**在前端直接拿到token

這種方式把令牌直接傳給前端,是很不安全的。因此,只能用於一些安全要求不高的場景,並且令牌的有效期必須非常短,通常就是會話期間(session)有效,瀏覽器關掉,令牌就失效了。

第三種方式:密碼式

rfc 6749允許使用者將使用者名稱和密碼告訴你高度信任的應用。

過程: 這種方式風險很大,適用於其他方式都無法採用的情況。

第四種方式:憑證式

在命令列下請求令牌,適用於沒有前端的命令列應用

過程: 這種方式給出的令牌,是針對第三方應用的,而不是針對使用者的,即有可能多個使用者共享同乙個令牌。

令牌的使用

在請求的頭資訊,加上乙個authorization字段,令牌就放在這個字段裡面。

比如a **拿到令牌以後,向 b **的 api 請求資料,每個請求,都必須帶有令牌。

authorization: bearer access_token
令牌的更新

令牌是有有效期的,當令牌到期後,使用者無需重新按照以上流程申請令牌,而是自動更新令牌。

具體方法是,b **頒發令牌的時候,一次性頒發兩個令牌,乙個用於獲取資料,另乙個用於獲取新的令牌(refresh token 字段)。令牌到期前,使用者使用 refresh token 發乙個請求,去更新令牌。

client_secret=client_secret& refresh_token=refresh_token

oAuth 2 0協議解析

部落格 完整的oauth 2.0協議流包括4個主體,6個步驟。4個主體分別是 資源擁有者 可以是人,負責授權工作。對open api來說,即發布方。發布方審批呼叫者的申請,通過後,即完成授權,體現為資料庫中的記錄。客戶端 一般是第三方應用程式。對於open api來說,即呼叫者。授權伺服器 負責完成...

OAuth 2 0系列教程

作者 jakob jenkov譯者 林浩校對 郭蕾 oauth是openid的乙個補充,但是完全不同的服務。oauth 2.0 是目前比較流行的做法,它率先被google,yahoo,microsoft,facebook等使用。之所以標註為 2.0,是因為最初有乙個1.0協議,但這個1.0協議被弄得...

OAuth 2 0協議原理

oauth oauth 開放授權 是乙個開放標準,允許使用者授權第三方移動應用訪問他們儲存在另外的服務提供者上的資訊,而不需要將使用者名稱和密碼提供給第三方移動應用或分享他們資料的所有內容。oauth 2.0中最關鍵的步驟在於使用者授權這一步。使用者授權有四種模式 授權碼模式 authorizati...