登入方案 使用者單點登入

2021-10-07 03:14:14 字數 1036 閱讀 5671

在微服務專案中,由於使用者往往需要通過閘道器訪問多個微服務,如登入需要訪問使用者微服務,商品瀏覽需要訪問商品微服務,下單需要訪問訂單微服務,支付需要訪問支付微服務。但如何防止使用者操作其他使用者的資料,這就需要在各個微服務中增加授權認證。每個服務都要認證使用者的身份,身份認證成功後,需要識別使用者的角色然後授權訪問對應的功能。

使用者身份認證即使用者去訪問系統資源時系統要求驗證使用者的身份資訊,身份合法方可繼續訪問。常見的使用者身份認證表現形式有:使用者名稱密碼登入、指紋打卡等方式。即校驗使用者賬號密碼是否正確。

使用者認證通過後去訪問系統的資源,系統會判斷使用者是否擁有訪問資源的許可權,只允許訪問有許可權的系統資源,沒有許可權的資源將無法訪問,這個過程叫使用者授權

使用者訪問的專案中,若有多個微服務需要識別使用者登入情況,如果使用者訪問每個微服務都要登入一次就太麻煩了,為了提高使用者的體驗,需要實現讓使用者在乙個系統中登入,其他任意受信任的系統都可以訪問,這個功能就叫單點登入

單點登入(single sign on) 就是為了解決這個問題,它的定義是:

在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統

單一登入:指同乙個賬號在同一時間內只能有乙個會話存在,即賬號a在手機上登入著,這時候在電腦上登入這個賬號,就會讓手機上的賬號強制下線。

單裝置登入:指相同的裝置中,同乙個賬號只能有乙個會話存在。常見的裝置分為:安卓手機、ios手機、pc端以及web端。

解決方案:

常見的解決方案為 設定 session,並設定過期時間。當使用者每次登陸時都會更新這個 session,每次使用者請求時都會檢查請求中攜帶的 session 是否正確,若不正確則返回錯誤,前端強制踢出。

在分布式系統中要實現單點登入,通常將認證系統單獨抽取出來,並將使用者身份資訊儲存在單獨的儲存介質中(如 mysql、redis)中,考慮效能,通常儲存在 redis 中

使用者登入 單點登入

首先是為啥要用單點登入的問題,單點登入也就是sso sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。1 任何系統都必須去登陸伺服器進行登入 2 伺服器就記住了登入狀態 3 其他系統訪問受保護資源,需要再次登入,跳轉到sso server登入的時候,伺服器告訴客戶端,已...

單點登入方案實戰

頂級網域名稱不一樣的 怎麼辦?這時候就需要cas登場了 1 oauth2,不同的企業之間的登陸,例如 qq登入csdn,應用之間的信任度較低 2 單點登陸,是同一企業的產品系列 不同伺服器上 間的登陸,相互信任度較高 先上個原理圖 1 session cookie機制出現的根源,http連線是無狀態...

單點登入方案筆記

oauth2 不同的企業之間的登入方式 例如 登入csdn用qq登入 單點登入 企業內部的登入方式 一 同頂級網域名稱下單點登入使用session共享的方式 2 攜帶cookie http請求時,攜帶上瀏覽器的cookie cokie裡標識值 jsessionid x 不安全 3 https措施 h...