使用JWT RSA完成SSO單點登入

2022-07-08 03:48:09 字數 1478 閱讀 2991

有狀態服務,即服務端需要記錄每次會話的客戶端資訊,從而識別客戶端身份,根據使用者身份進行請求的處理,典型的設計如tomcat中的session。

例如登入:使用者登入後,我們把登入者的資訊儲存在服務端session中,並且給使用者乙個cookie值,記錄對應的session。然後下次請求,使用者攜帶cookie值來,我們就能識別到對應session,從而找到使用者的資訊。

缺點是什麼?

微服務集群中的每個服務,對外提供的都是rest風格的介面。而rest風格的乙個最重要的規範就是:服務的無狀態性,即:

帶來的好處是什麼呢?

rsa稱為非對稱加密,加密技術是對資訊進行編碼和解碼的技術,編碼是把原來可讀資訊(又稱明文)譯成**形式(又稱密文)其逆過程就是解碼(解密),加密技術的要點是加密演算法,rsa會根據你給的鹽值生成私鑰和公鑰:

jwt,全稱是json web token, 是json風格輕量級的授權身份認證規範,可實現無狀態、分布式的web應用授權。

看名知意,其實就是一種加密方式,分為三部分:

payload(載荷):存放一些有效資料比如使用者id、使用者名稱,解密之後可以獲取載荷中的使用者資訊,因為採用base64編碼格式,所以可以被解碼,不要放敏感資訊,例如登入密碼之類的。

signature(簽名):signature由headerpayload經過 base64 編碼後加鹽值得到的。

只使用jwt來完成單點登入

可以發現,每次鑑權都需要訪問鑑權中心,系統間的網路請求頻率過高,效率略差,鑑權中心的壓力較大。

這時就用到了前面說的rsa,我們可以把私鑰留在授權中心,把公鑰給閘道器或者其他微服務,那麼就可以在閘道器或其他微服務當中直接解密jwt了,這樣做的好處是減少了授權中心的壓力。

SSO單點登入

單點登入sso single sign on 就是在多個系統共存的環境下,使用者在一處登入 就不用在其他系統中登入,也就是使用者的一次登入就可以得到其他所有系統的信任。要點 儲存信任 驗證信任 最簡單實現sso的方法就是cookie,實現流程 然而cookie有如下缺點 1 cookie不安全 2 ...

sso單點登入

一 什麼是單點登入sso single sign on sso是一種統一認證和授權機制,指訪問同一伺服器不同應用中的受保護資源的同一使用者,只需要登入一次,即通過乙個應用中的安全驗證後,再訪問其他應用中的受保護資源時,不再需要重新登入驗證。二 單點登入解決了什麼問題 解決了使用者只需要登入一次就可以...

sso單點登入

1 sso single sign on 單點登入 解決了使用者只需要登入一次就可以訪問所有相互信任的應用系統,而不用重複登入,對使用者資訊進行統一管理。2 session共享 分布式中,為了提公升集群效能,我把使用者的session資訊儲存到redis中,key的格式例如 user session...