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反向查詢出客戶端的主機名,然...