單點登錄與二次驗證
江蘇美特羅信息科技有限公司 2018-07-13 09:25:39 作者:SystemMaster
單點登錄即Single Sign-On(簡稱SSO)
是一種統(tǒng)一認證和授權(quán)機制。它允許用戶在網(wǎng)絡中主動進行一次身份認證之后,就可以訪問所有被授權(quán)的網(wǎng)絡資源和應用系統(tǒng),而不必再次登錄。為了在復雜的應用環(huán)境下實現(xiàn)單點登錄的目標,大都采用了多種認證集成機制,具體可以歸納為三種類型。
基于認證平臺的應用漫游
統(tǒng)一身份認證平臺存儲了全部的身份信息和對應的憑證信息,并提供了不同編程語言(Java,.net,PHP)的認證接口。業(yè)務系統(tǒng)完成身份信息同步和認證接口的部署之后,可以使用統(tǒng)一身份認證平臺完成身份的認證,不需要自己存儲憑證信息和實現(xiàn)認證。圖1標識了業(yè)務系統(tǒng)完成認證的相應過程。具體如下:
①用戶請求訪問業(yè)務系統(tǒng)。
②業(yè)務系統(tǒng)在系統(tǒng)中查看是否有對應請求的有效令牌,若有,則讀取對應的身份信息,允許其訪問;若沒有或令牌無效,則把用戶重定向到統(tǒng)一身份認證平臺,并攜帶業(yè)務系統(tǒng)地址,進入第③步。
③在統(tǒng)一身份認證平臺提供的頁面中,用戶輸入身份憑證信息,平臺驗證此身份憑證信息,若有效,則生成一個有效的令牌給用戶,進入第④步;若無效,則繼續(xù)進行認證,直到認證成功或退出為止。
④用戶攜帶第③步獲取的令牌,再次訪問業(yè)務系統(tǒng)。
⑤業(yè)務系統(tǒng)獲取用戶攜帶的令牌,提交到認證平臺進行有效性檢查和身份信息獲取。
⑥若令牌通過有效性檢查,則認證平臺會把令牌對應的用戶身份信息返回給業(yè)務系統(tǒng),業(yè)務系統(tǒng)把身份信息和有效令牌寫入會話狀態(tài)中,允許用戶以此身份信息進行業(yè)務系統(tǒng)的各種操作;若令牌未通過有效性檢查,則會再次重定向到認證平臺,返回第③步。
通過統(tǒng)一身份認證平臺獲取的有效令牌,可以在各個業(yè)務系統(tǒng)之間實現(xiàn)應用漫游。
基于共享密鑰的協(xié)議登錄
基于共享密鑰的協(xié)議登錄機制是信息化建設中常用的一種協(xié)議認證集成模式,通過共享密鑰和其他的信息組合加密完成系統(tǒng)間的認證,它需要在雙方系統(tǒng)部署不同程序,但不需要修改原先的認證模塊。圖2給出采用協(xié)議登錄機制形成的一般結(jié)構(gòu):各個業(yè)務系統(tǒng)的登錄跳轉(zhuǎn)程序都部署在一個入口系統(tǒng)中,而對應的驗證程序則部署在各自的業(yè)務系統(tǒng),跳轉(zhuǎn)程序通過HTTP的get或post方法把雙方約定的協(xié)議數(shù)據(jù)提交到業(yè)務系統(tǒng)的驗證程序,驗證程序負責驗證數(shù)據(jù)的有效性,若通過驗證則跳轉(zhuǎn)到業(yè)務系統(tǒng),否則拒絕使用。
此機制一般要求入口系統(tǒng)與業(yè)務系統(tǒng)端共同約定用戶賬號、時間戳、校驗碼、共享密鑰四個參數(shù),并且要求雙方系統(tǒng)進行時間同步。入口系統(tǒng)通過跳轉(zhuǎn)程序要求訪問業(yè)務系統(tǒng)時,需要在url中加入username、time、verify三個參數(shù)值,并傳遞給業(yè)務系統(tǒng)。其中verify是由username、time和key組成并采用md5方式加密形成的一個串值。
業(yè)務系統(tǒng)獲取各個參數(shù)后,比較業(yè)務系統(tǒng)服務器時間與接收的時間戳(time)是否在允許的時間差范圍內(nèi),如果在允許的范圍內(nèi),則需將接收到的username 、time及原先設定的key進行md5加密計算,獲得的一個串值且同verify進行比較,若一致,則完成了本次的認證登錄,并以username的身份訪問系統(tǒng),否則登錄失敗。
通過此機制可以實現(xiàn)單點到多點的單向應用漫游,也可以擴展雙方認定的協(xié)議內(nèi)容并進行功能的擴展,比如指定業(yè)務系統(tǒng)應用模塊參數(shù)(module)來實現(xiàn)到具體應用模塊的跳轉(zhuǎn)。
基于自配置的模擬登錄
基于自配置的模擬登錄機制是針對那些基于Form表單方式登錄的Web業(yè)務系統(tǒng)設計的,它不需要對業(yè)務系統(tǒng)的原有認證模塊做任何修改。它利用用戶自我配置的業(yè)務系統(tǒng)賬號、密碼等信息,模擬用戶使用業(yè)務系統(tǒng)登錄頁面完成登錄的過程,在后臺直接提交相應的信息到業(yè)務系統(tǒng)的登錄驗證模塊,從而完成用戶登錄的過程。圖3描述了形成的主要體系結(jié)構(gòu)。
首先在入口系統(tǒng)中建立一個入口系統(tǒng)賬號到各個業(yè)務系統(tǒng)賬號的映射表,此表一般需要包含以下信息:
1.入口系統(tǒng)賬號:存儲入口系統(tǒng)自身的賬號。
2.業(yè)務系統(tǒng)ID:標志不同的業(yè)務系統(tǒng)。
3.業(yè)務系統(tǒng)賬號:存儲業(yè)務系統(tǒng)與入口系統(tǒng)賬號對應的賬號。
4 .業(yè)務系統(tǒng)基本角色:存儲在業(yè)務系統(tǒng)中的角色信息。
5.業(yè)務系統(tǒng)密碼:通過加密方式存儲業(yè)務系統(tǒng)的密碼信息。
其次,需要分析業(yè)務系統(tǒng)的登錄頁面和其對應的驗證邏輯,并在入口系統(tǒng)中建立對應的自配置程序,包括業(yè)務賬號密碼配置頁面、業(yè)務賬號密碼保存頁面、業(yè)務賬號密碼修改頁面等。
用戶在使用入口系統(tǒng)首次登錄業(yè)務系統(tǒng)時,需使用自配置程序把自己在業(yè)務系統(tǒng)中對應的賬號、密碼、角色存入入口系統(tǒng)的映射表中,之后就可直接通過入口系統(tǒng)完成到業(yè)務系統(tǒng)的應用跳轉(zhuǎn)。
對比三種機制
每種機制都需要先進行一定的數(shù)據(jù)準備,再部署相應的程序,可以產(chǎn)生不同的應用漫游情況,所以它們適用不同系統(tǒng)的認證集成,具體分析如表1。
在信息化建設中,具體采用何種機制進行認證集成,需要具體情況具體分析,但是一般優(yōu)先考慮基于認證平臺的應用漫游方式,之后是基于共享密鑰的協(xié)議登錄機制,最后才考慮基于自配置的模擬登錄機制。
二次身份驗證:
Okta的軟件能讓客戶的員工很方便地使用單一、安全的賬號,登錄他們工作中需要使用的各種網(wǎng)絡服務,或者供承包商、合作伙伴和客戶所使用的網(wǎng)絡服務。Okta的主要賣點之一是安全性,企業(yè)利用其軟件可以讓員工和其他人遠程訪問企業(yè)信息,而不會導致企業(yè)的敏感信息泄露。當一名員工離職后,企業(yè)也可以利用Okta的軟件,快速取消該員工訪問此前其所使用過的網(wǎng)絡服務的權(quán)力。
手機二次認證
令牌
RSA
基于證書的 Microsoft Windows 域登錄