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