單點登入系統的設計與實現方案

2021-08-30 22:27:29 字數 1260 閱讀 2875

目的:

對目前已有的 web 應用系統,和將來待開發的 web 應用系統進行整合,實現單點登入。

要求:對已有的 web 應用系統不作大規模改造。

不限制待開發的 web 應用系統的開發工具。

不增加待開發系統的開發難度。

分析:目前,已有的系統都各自維護自己的一套使用者庫,每個系統中的使用者數、使用者名稱、密碼幾乎都各不相同。要將已有的使用者庫進行統一是不現實的。因此,我們可以通過將單點登入系統中的使用者與其它個系統中的使用者建立對映,來實現用乙個帳號來管理多個系統的目的。

已 有的 web 應用系統、以及待開發的 web 應用系統,可能不在同乙個域下,雖然會話本身是儲存在伺服器端,但是會話 id 是需要 cookie 來傳遞的,而 cookie 不允許跨域訪問,而且考慮到各個系統的開發工具也各不相同,即使在同乙個域下,不同的開發工具所開發的應用程式之間也很難共享會話,因此要用共享會話的方 式來實現單點登入也不現實。因此我們通過在客戶端瀏覽器、單點登入系統和 web 應用系統之間傳遞臨時會話,並讓 web 應用系統直接到單點登入系統中獲取認證資訊來實現單點登入。為保證不同開發工具都能夠到單點登入系統獲取認證資訊,我們採用 xml-rpc 在 web 應用系統和單點登入系統之間進行通訊。

實現:單點登入系統中設定 4 個表:

單點登入系統使用者表,包含 user_id,name,password 3 個字段。

臨時會話表,包含 hash(臨時會話的 hash 編號),id(對應單點登入系統使用者到各個 web 應用系統的使用者對映表中的 id 字段) 2個字段。

使用者登入單點登入系統時,通過單點登入系統使用者表中的字段來驗證使用者身份。登入以後,使用者可以設定各個系統到該系統使用者的對映關係。設定好以後,當通過該 系統進入其他某個 web 應用系統時,該系統會為該使用者和該系統生成乙個臨時會話編號(hash),並轉到 web 應用系統中的登入檢測頁面,登入檢測頁面通過獲取到的臨時會話編號,來呼叫單點登入系統的獲取使用者名稱和密碼的 xml-rpc api,如果使用者名稱密碼如果正確,則轉到正常登入後的頁面,如果不正確,則轉到登入錯誤的頁面。這裡,xml-rpc api 在返回使用者名稱和密碼後,將刪除單點登入系統資料庫中相應的臨時會話,這樣不但使用者名稱、密碼都是在伺服器之間進行傳遞的,並且臨時會話存在的時間也是盡可能 的短,因此只要保證伺服器之間的對話不能被監聽,即可保證安全性。 已有系統需要增加乙個用於單點登入系統的登入驗證頁面,該頁面工作過程大致如下:

獲取 客戶端 hash 值

通過 hash 值得到使用者名稱和密碼(xml-rpc 呼叫)

通過使用者名稱和密碼進行身份驗證

返回身份驗證後的頁面

單點登入系統的設計與實現方案

目的 對目前已有的 web 應用系統,和將來待開發的 web 應用系統系統進行整合,實現單點登入。要求 1.對已有的 web 應用系統不作大規模改造。2.不限制待開發的 web 應用系統的開發工具。3.不增加待開發系統的開發難度。分析 1.目前,已有的系統都各自維護自己的一套使用者庫,每個系統中的使...

單點登入(SSO)的設計與實現

sso英文全稱single sign on,單點登入。sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。例如訪問在網易賬號中心 登入之後 訪問以下站點都是登入狀態 本篇文章也主要是為了 如何設計 實現乙個sso系統 以下為需要實現的核心功能 應用 模組 物件 說明前台站...

多站點單點登入實現設計方案

有這麼個場景,公司下有多個不同網域名稱的站點,我們期望使用者在任意乙個站點下登入後,在開啟另外幾個站點時,也是已經登入的狀態,這麼一過程就是單點登入。因為多個站點都是用的同一套使用者體系,所以單點登入可以免去使用者重複登入,讓使用者在站點切換的時候更加流暢,甚至是無感知。單點登入所要實現的就是,某一...