微服務統 認證 案 OAuth2

2021-10-19 05:36:01 字數 1238 閱讀 9845

基於session的認證方式

在分布式的環境下,基於session的認證會出現⼀個問題,每個應⽤服務都需要在session中儲存⽤戶身份資訊,通過負載均衡將本地的請求分配到另⼀個應⽤服務需要將session資訊帶過去,否則會重新認證。我們可以使⽤session共享、session黏貼等⽅案。

session⽅案也有缺點,⽐如基於cookie,移動端不能有效使⽤等。

基於token的認證方式oauth2介紹

oauth(開放授權)是⼀個開放協議/標準,允許⽤戶授權第三⽅應⽤訪問他們儲存在另外的服務提供者上的資訊,⽽不需要將⽤戶名和密碼提供給第三⽅應⽤或分享他們資料的所有內容。

允許使用者授權第三方應用訪問他們儲存在另外的服務提供者上的資訊,而不需要將使用者名稱和密碼提供給第三方應用或分享他們資料的所有內容。

oauth2是oauth協議的延續版本,但不向後相容oauth1即完全廢⽌了oauth1。

oauth2協議角色和流程

oauth協議基本流程

client請求資源所有者的授權,請求中一般包含:要訪問的資源路徑,操作型別,client的身份等資訊。

資源所有者批准授權,並將「授權證據」傳送給client。

client向認證伺服器請求「訪問令牌(access token)」。此時,client需向認證伺服器提供資源所有者的「授權證據」,以及client自己身份的憑證。

認證伺服器驗證通過後,向client返回「訪問令牌」。訪問令牌也有多種型別,若為bearer型別,那麼誰持有訪問令牌,誰就能訪問資源。

5.認證伺服器攜帶「訪問令牌」訪問資源伺服器上的資源。在令牌的有效期內,client可以多次攜帶令牌去訪問資源。

6.資源伺服器驗證令牌的有效性,比如是否偽造、是否越權、是否過期,驗證通過後,才能提供服務。

oauth2應用場景

單點登入的場景:如果項⽬中有很多微服務或者公司內部有很多服務,可以專⻔做⼀個認證中⼼(充當認證平台⻆⾊),所有的服務都要到這個認證中⼼做認證,只做⼀次登入,就可以在多個授權範圍內的服務中⾃由串⾏。

oauth2的頒發token授權方式

1)授權碼(authorization-code)

2)密碼式(password)提供⽤戶名+密碼換取token令牌

3)隱藏式(implicit)

4)客戶端憑證(client credentials)

微服務系列之 Oauth2安全認證

總結oauth是乙個關於授權 authorization 的開放網路標準,在業界得到廣泛應用,目前的版本是2.0版。簡單來說就是客戶端應用程式 通常是web瀏覽器 代表使用者 得到了使用者的批准 去訪問受保護的資源。oauth2的設計背景,在於允許使用者在不告知第三方自己的帳號密碼情況下,通過授權方...

OAuth2認證方式介紹

在任何 oauth 流程中都有三個參與者 客戶端 登入的人員或使用者 使用者 客戶端想要登入的應用程式 在上圖中是 gitlab 服務提供者 使用者通過其進行身份驗證的外部應用程式。上圖中為 github 使用oauth進行認證和授權的過程如下所示 a 使用者開啟客戶端以後,客戶端要求使用者給予授權...

深入OAuth2 微服務下的SSO單點登入

在前兩篇部落格中介紹了oauth2和springsecurity的基本知識,本篇介紹oauth2協議實現的sso單點登入。認證伺服器的配置和之前的差不多,把客戶端資訊存到了資料中,不在是記憶體裡 這個請求最終不會被zuul 到後端伺服器 requestcontext.setsendzuulrespo...