1、單點登錄簡介
單點登錄(Single SignOn),簡稱為SSO,是目前比較流行的企業業務整合的解決方案之一。SSO 的定義是在多個應用系統中,用戶只需要進行一次登錄就可以訪問所有建立了相互信任關系的應用系統。它的目標是方便用戶,簡化管理,提供統一的一站式服務。
使用單點登錄主要有以下幾個方面的好處:
1.1 統一管理、維護用戶公共信息、提供多種接口標準,保證其他應用系統通過直接訪問或同步復制的方式,從統一用戶中心獲取一致的用戶信息。
1.2 方便管理,減少管理員管理多個應用系統用戶的壓力,管理員只需要維護好統一用戶中心的用戶信息即可,其他應用系統可按一定的規則從統一用戶中心同步用戶信息。
1.3 為終端用戶提供便捷的一站式服務,用戶只需要記住一個用戶名及密碼即可訪問其有權限的所有應用系統,也可以減少因用戶忘記密碼而為管理員增加的工作量。
1.4 具有良好的兼容性、可擴展性,一方面能兼容新開發的業務系統也能支撐現有的應用系統的訪問;另一方面,系統中用戶信息的屬性可以擴充,以適應未來業務的變化。
1.5 提高開發人員的效率。SSO 為開發人員提供了一個通用的身份驗證框架。實際上,如果SSO 機制是獨立的,那么開發人員就完全不需要為身份驗證操心。他們可以假設,只要對應用程序的請求附帶一個用戶名,身份驗證就已經完成了。
2、單點登錄系統設計
本文作者負責一所高校信息門戶開發及維護,由于目前所用的門戶系統沒有單點登錄服務,但又經常需要跟其他應用系統之間進行單點登錄,因此設計此方案,大致的思路如下:
2.1 設計思路。我校的信息門戶使用活動目錄進行用戶管理,通過LDAP 協議進行統一身份驗證,因此本方案也使用AD作為統一用戶中心,在門戶上建立單點登錄服務用于跟其他應用系統之間的單點登錄。
用戶首先登錄門戶,SSO 服務獲取到用戶信息后將用戶有權訪問的資源列表展現給用戶,用戶點擊到某個應用的鏈接后自動登錄到相應的應用程序;用戶點擊的鏈接不包含任何敏感信息,只有應用服務器ID;SSO 服務會根據應用服務器ID 自動根據憑證生效時間、過期時間、用戶ID、Key(SSO服務器與應用服務器之間約定的加密字符串)等信息自動生成憑證并將憑證提供給應用服務器驗證,當應用服務器收到登錄請求后會首先驗證用戶的合法性,然后到SSO服務器驗證憑證的合法性,驗證成功后允許用戶登錄,且該過程必須要在既定的時間內完成。
該過程中每個應用與SSO 服務器之間約定共同的Key(密匙),根據密匙、用戶ID、用戶IP、憑證生成時間及失效時間根據一定的規則使用Hash 算法生成憑證,因此相同用戶在不同時間登錄某個應用時生成的憑證是不相同的。
服務器之間通過SSL 協議加密信息傳輸,用戶通過使用https 的方式訪問。
SSO服務器根據單點登錄類型判斷應用系統中的用戶信息與統一用戶中心的用戶信息是一致的還是需要進行用戶映射,如果需要進行用戶映射且用戶是第一次登錄,則將用戶重定向到用戶映射頁面要求用戶填寫相關信息后進行登錄。
SSO 服務器應具有的功能:
(1)可以添加多個應用,添加應用時可添加應用服務器名稱、通信密匙、應用服務器單點登錄地址等信息。
(2)可將所有應用以合適的方式展現給用戶,并能獲取用戶登錄ID,并根據應用服務器ID、通信密匙按照一定的加密算法生成憑證信息及憑證信息的Hash 值。
(3)提供用于驗證應用服務期憑證的WebService,該Web-Service 應檢查憑證的時效性(是否為過期憑證)及正確性,防止憑證被篡改,同時將校驗的結果反饋給應用服務器。應用服務器功能:
(4)應用服務期只需要校驗SSO 服務器提供的用戶ID 及憑證的有效性即可。
2.2 單點登錄流程。
2.2.1 用戶首先登錄門戶,并打開單點登錄(SSO)應用列表,點擊相應的應用系統鏈接。
2.2.2 SSO服務器根據APPID找到對應的應用、與應用服務器約定的key,在SSO 服務器上生成一條包含APPID、用戶ID、用戶IP、憑證生效時間、憑證失效時間、憑證信息的Hash 值等的記錄。憑證信息根據APPID、用戶ID、用戶IP、憑證生效時間、憑證失效時間及與應用服務期之間約定的key 按照一定的規則生成。
2.2.3 SSO 服務器根據步驟2 中的信息采用Hash 加密算法生成的憑證信息,并將用戶ID 及憑證傳遞到應用服務器。
2.2.4 應用服務器根據SSO 服務器傳遞過來的用戶ID,校驗該用戶的有效性,同時調用SSO 服務器提供的WebService 校驗憑證的有效性及時效性,如果校驗成功,則允許用戶登錄。
2.2.5 如果用戶登錄的應用系統與統一用戶中心使用不同的用戶信息,則用戶第一次登錄時需要首先進行用戶映射,第二次登錄時執行步驟1 到步驟4。
2.2.6 用戶登錄其他應用系統時重新執行以上過程。
從以上流程可以看出,本文設計的單點登錄方案跟其他單點登錄方案有所不同,用戶無論登錄那個應用系統均需由SSO服務器代替用戶自動登錄。
2.3 具體數據表設計。
首先我們需要一張表用于存放各種應用服務器的相關信息,包含應用服務器名稱、應用服務器單點登錄地址等信息,數據表字段及設計說明如下:
除了上面數據表之外我們還需要一張表用于存放用戶登錄時自動生成的信息,同時這張表中的數據也作為應用服務器向SSO服務器驗證時用。
如果統一用戶中心與應用系統使用兩套不同的用戶信息,則還需要設計統一用戶中心與應用系統中用戶信息對應表。
3、方案評估
3.1 通用性。
該設計方案可以使用各種編程語言實現,因此具有跨平臺、跨應用的特點。用戶在登錄其他應用系統時由于不需要輸入任何密碼,因此用戶可自由修改其在其他應用系統中的密碼,只要用戶名或登錄ID 不變,用戶即可通過單點登錄服務登錄到相應的應用,應用系統原有登錄方式不受影響。
由于各應用系統之間保持獨立,因此一臺應用服務器受攻擊后其他服務器不受影響。通常情況下各業務系統都會有自己的業務操作賬戶,而這些賬戶是不需要進行單點登錄的,且各應用服務器可以有自己獨有的用戶信息。比如,財務系統及人力資源系統可以單獨為領導設置帳號專門用于報表的查看。
3.2 安全性。
本方案從以下幾個方面加強系統的安全:
3.2.1 SSO 服務器與應用服務器之間約定的密匙不同。
3.2.2 生成的憑證具有時效性和隨機性,會自動過期,過期后不能再次使用。
3.2.3 憑證的加密采用Hash 算法加密保證憑證傳遞過程中不被截取或篡改,并防止兩個應用系統相互截取或偽造對方的憑證。
3.2.4 SSO 服務器與應用服務器使用SSL 傳輸協議,可確保數據在網絡傳輸過程中不會被截取及竊聽。
3.2.5 每個系統都有自己的應用系統ID 及密匙。
3.2.6 進行單點登錄的用戶都需要首先通過LADP 協議到AD服務器進行驗證,這就保證了單點登錄服務地址只有門戶系統中的用戶可以訪問而其他非門戶用戶必須首先通過門戶的驗證后才能訪問相應資源。
3.2.7 整個單點登錄過程不進行用戶密碼的傳遞。
3.3 方案優點。
3.3.1 由于每個應用跟SSO服務器約定的密匙不相同,各應用服務器相互隔離,可有效避免相互之間的惡意篡改憑證。
3.3.2 用戶每一次登錄都使用隨機憑證,并有一定的時效性,可以加強系統的安全性。
3.3.3 該方案在技術上實現的難度不大又具有較強的安全性,因此比較適合自主開發,從而降低成本。
3.3.4 由于單點登錄服務具有統一的接口及接口規則,降低了應用系統接入時開發的難度
3.4 方案缺點。
3.4.1 該方案適合應用及用戶較小的組織,若應用數量多、用戶基數大則建議將門戶與SSO服務器分開,從而降低服務器壓力。
3.4.2 由于用戶登錄門戶后即可訪問所有經過授權的應用系統,一旦用戶門戶密碼泄露,則所用應用系統均受影響,因此要加強門戶安全,避免門戶密碼泄露。
4、結論
單點登錄的方式有很多種,最終的目標就是簡化管理、方便用戶,盡可能加強系統的安全性,但每種方案都有自身的特點,本文實現的單點登錄方案仍有可完善的地方,如果運用于生產環境,還需要進一步加強系統安全性設計及靈活性設計。比如:可考慮通過服務器之間端口過濾或防火墻技術限制只有這些應用服務器能與SSO 服務器之間進行用戶認證;只允許互相信任的應用服務器訪問SSO 服務器的WebService等。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.guhuozai8.cn/
本文標題:基于門戶單點登錄系統的設計與實現
本文網址:http://m.guhuozai8.cn/html/consultation/1083938097.html