登入令牌解決方案對比

2021-10-09 15:56:32 字數 1102 閱讀 8325

session

使用流程

使用者向伺服器傳送使用者名稱和密碼。

伺服器驗證通過後,在當前對話(session)裡面儲存相關資料,比如使用者角色、登入時間等等。

伺服器向使用者返回乙個 session_id,寫入使用者的 cookie。

使用者隨後的每一次請求,都會通過 cookie,將 session_id 傳回伺服器。

伺服器收到 session_id,找到前期儲存的資料,由此得知使用者的身份。

問題:擴充套件性(scaling)不好,伺服器集群需要將session資料共享

解決方發: session 資料持久化,寫入資料庫或別的持久層。各種服務收到請求後,都向持久層請求資料。這種方案的優點是架構清晰,缺點是工程量比較大。

jwt

簡介:

jwt是json web token(縮寫 jwt)

由三部分組成:header(頭部)、payload(負載)、signature(簽名)

header包括了alg屬性和typ屬性

alg屬性表示簽名的演算法(algorithm),預設是 hmac sha256(寫成 hs256)

typ屬性表示這個令牌(token)的型別(type),jwt 令牌統一寫為jwt

payload 部分是乙個 json 物件,用來存放實際需要傳遞的資料

signature 部分是對前兩部分的簽名,防止資料篡改。使用 header 裡面指定的簽名演算法。

使用流程:

客戶端向服務端傳送資料。

客戶端收到伺服器返回的 jwt,可以儲存在 cookie 裡面,也可以儲存在 localstorage。

客戶端每次與伺服器通訊,都要帶上這個 jwt。放在 http 請求的頭資訊authorization字段裡面。

問題:伺服器不儲存 session 狀態,因此無法在使用過程中廢止某個 token,或者更改 token 的許可權。也就是說,一旦 jwt 簽發了,在到期之前就會始終有效

解決方案:jwt 的有效期應該設定得比較短。對於一些比較重要的許可權,使用時應該再次對使用者進行認證。

單點登入解決方案

本文只是簡述單點登入解決方案,系統其他方面均省略 如上圖 系統基本架構 fr與es分為兩個不同的子專案,前端請求均通過訪問fr,由fr通過httpurlconnection訪問es 賦能層 fr主要作用為登入鑑權。大致請求流程如下 1 password md5單向加密成新的password 1 如 ...

sa 登入失敗解決方案大全

最近在部署乙個web專案時出現,使用者 sa 登入失敗。原因 未與信任 sql server 連線相關聯 錯誤碼率提示,但經查證連線資料庫字串都正確,而且資料庫伺服器上資料庫設定也完全正確。部署在同一臺伺服器上的乙個應用程式可以訪問資料庫伺服器,這說明網路也應該沒有問題。但網上的解決方案全是資料庫設...

SSH登入卡頓解決方案

在使用ssh遠端登入linux主機時,經常出現需要等待一段時間才能登入,甚至登入超時的情況 原因一 ssh伺服器預設開啟了dns的查詢功能 usedns yes 當usedns選項處於開啟狀態時,客戶端試圖登入ssh伺服器,伺服器端先根據客戶端的ip位址進行dns ptr反向查詢出客戶端的主機名,然...