1 請求安全 乙個簡單的 單裝置登入 單點登入

2021-09-23 19:09:05 字數 1340 閱讀 7160

sso英文全稱single sign on,單點登入。sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同乙個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一。

實現sso的技術主要有: (1)基於cookies實現; (2) broker-based(基於經紀人),例如kerberos等; (3) agent-based(基於**人)在這種解決方案中例如ssh等; (4) token-based,例如securid,webid,現在被廣泛使用的口令認證; (5) 基於閘道器agent and broker-based; (6) 基於安全斷言標記語言(saml)實現;

但是本文今天不會用到以上方法,但是我們使用方法類似於token;

寫本次文章的起初是為了解決鏈結捕獲訪問伺服器的問題,但是單憑單點登入和單裝置登入是解決不了這個問題的,要配合上(加密,md5校驗,請求唯一性驗證,單點登入,單裝置登入)來組成乙個比較完善的安全驗證機制.(後面文章會一一說道)
下面開始說正題,對於api來說一般需要單點登入的系統都需要進行登入的操作,那登入操作我們會做下面幾件事情.

1.獲取使用者名稱密碼進行登入驗證使用者是否有效作判斷. 2.拿著返回的id給前端讓他可以進行進一步操作.

當然可以直接用id 直接實現單點登入 但是無法實現單裝置登入而且直接暴露安全性擔憂
基本登入介面做的操作就是以上兩種,那麼關鍵點來了,我在思考分析的時候在想如果每次呼叫登入獲取的id都是乙個臨時id. 當下次登入的時候失效是不是就可以達到單裝置登入的效果了,這個臨時id對應著真正的使用者id每次客戶端請求都是拿著臨時id請求過來然後我們做驗證,不就行了嘛.而且這個臨時id是後端共享的只有乙個登入介面或獲取臨時id其他所有模組都能使用來達到單點登入. 這樣就解決了單裝置登入和單點登入的問題.

既然是臨時id而且每個介面都會去讀取驗證,那當然不能用資料庫,最好我選擇了用nosql中的redis來作為臨時id的臨時儲存
1.第一步從redis中用id取臨時id 檢測有沒有 

2.生成cipher(臨時密碼也就是臨時id)

3.根據第一步檢測做不同的處理 如果存在刪除原有的 cipher關聯id 的key-value

4.建立兩個key-value 乙個是id對應cipher 乙個是cipher對於id

1.通過客戶端請求的cipher獲取redis的value值

2.value如果不存在返回錯誤 登入已經失效

3.value存在返回value作為id 進行操作

通過以上方法就解決的 標題所述的 單點登入 單裝置登入的問題 

網路請求 簡單的封裝乙個請求

我們可以新建乙個 server 資料夾 裡面建立乙個server.js 檔案,來集中處理我們專案中用到的請求 var server function url,type,params method type get success function res fail function res get請...

字元裝置驅動1 乙個簡單的字元裝置驅動示例

1.註冊主次裝置號 register chrdev region 和 alloc chrdev region 2.註冊字元裝置驅動 cdev init 初始化,cdev add 新增,註冊裝置驅動,cdev alloc 申請空間,cdev del 登出驅動 3.建立驅動的裝置檔案 class cre...

乙個簡單的單點登入構思

通過這次跟協同部門 下文用第三方表示 的sso聯調,總的來說sso就是要保證客戶端與登入使用者繫結的唯一性,而這裡的客戶端指的是單個瀏覽器 這裡或許可以考慮一下公升級到機器級別 下面是摸索出來的乙個簡單方法 1.客戶端在跳轉至第三方的站點時,傳送乙個確認登入狀態的請求,sso伺服器接收到客戶端的請求...