于浩,于溯,康一丁
(1.長(zhǎng)春理工大學(xué),長(zhǎng)春 130022;2.工業(yè)和信息化部電信研究院,北京 100191;3.空軍航空大學(xué),長(zhǎng)春 130022)
LDAP協(xié)議采用樹(shù)狀邏輯結(jié)構(gòu)組織數(shù)據(jù),能夠清晰地反映組織結(jié)構(gòu)關(guān)系,并可以存儲(chǔ)用戶認(rèn)證信息,協(xié)議提供方便的查詢和認(rèn)證接口,能夠?yàn)榫W(wǎng)絡(luò)認(rèn)證服務(wù),在網(wǎng)絡(luò)認(rèn)證中得到了廣泛的應(yīng)用。隨著認(rèn)證安全性要求的不斷提高,復(fù)雜認(rèn)證框架協(xié)議RADIUS、EAP及多種復(fù)雜認(rèn)證協(xié)議的出現(xiàn),LDAP在認(rèn)證過(guò)程中,如何與這些協(xié)議配合使用以提高認(rèn)證安全性與效率,成為一個(gè)重要問(wèn)題。
LDAP目錄服務(wù)在網(wǎng)絡(luò)認(rèn)證活動(dòng)中,一般不直接面向用戶,而是作為認(rèn)證系統(tǒng)的認(rèn)證信息數(shù)據(jù)庫(kù),這里將識(shí)別用戶身份的系統(tǒng)稱(chēng)為認(rèn)證系統(tǒng),它在實(shí)際使用環(huán)境中可能是應(yīng)用系統(tǒng)、網(wǎng)絡(luò)接入系統(tǒng)(NAS)等需要識(shí)別用戶身份的系統(tǒng)。
LDAP目錄服務(wù)在目前網(wǎng)絡(luò)認(rèn)證中,主要作為認(rèn)證數(shù)據(jù)庫(kù),認(rèn)證服務(wù)器作為 LDAP服務(wù)的客戶端,具有LDAP相應(yīng)的權(quán)限,利用LDAP協(xié)議提供認(rèn)證和查詢操作的特性,分別有兩種使用方式。
(1)BIND方式,主要利用LDAP的BIND認(rèn)證操作。用戶向認(rèn)證系統(tǒng)輸入認(rèn)證信息(一般是用戶名和口令),應(yīng)用系統(tǒng)或認(rèn)證系統(tǒng)首先向 LDAP服務(wù)器查詢用戶是否存在,如果用戶存在,LDAP服務(wù)器會(huì)返回用戶的 DN,應(yīng)用系統(tǒng)嘗試通過(guò) BIND操作使用口令或其他認(rèn)證信息向LDAP服務(wù)器認(rèn)證DN,如果BIND操作成功,則用戶認(rèn)證成功。
(2)查詢方式,主要利用LDAP的SEARCH查詢操作。認(rèn)證系統(tǒng)利用擁有的LDAP較高權(quán)限,將LDAP中的認(rèn)證信息(大多數(shù)情況下是用戶名、口令),定期同步到自己的數(shù)據(jù)庫(kù)中,再利用同步的認(rèn)證信息進(jìn)行認(rèn)證活動(dòng)。
LDAP在網(wǎng)絡(luò)認(rèn)證中,主要應(yīng)用在傳統(tǒng)的認(rèn)證信息為用戶名和口令的認(rèn)證過(guò)程中,隨著認(rèn)證方式復(fù)雜性的不斷提高,其在使用中遇到了一些問(wèn)題,主要表現(xiàn)在兩個(gè)方面。
首先是兼容性問(wèn)題,表現(xiàn)在 BIND方式中。LDAP的BIND操作支持兩種認(rèn)證方式,明文口令方式和 SASL(Simple Authentication and Security Layer)方式,EAP、Radius協(xié)議中的許多認(rèn)證方式是不支持明文口令的;同時(shí),SASL雖然擴(kuò)展了認(rèn)證方式,但是支持的方式有限,且并未得到廣泛的支持。
數(shù)據(jù)實(shí)效問(wèn)題和效率問(wèn)題,表現(xiàn)在查詢方式。認(rèn)證服務(wù)器通過(guò)查詢操作,將LDAP的認(rèn)證信息同步到本身的數(shù)據(jù)庫(kù)中,可以解決兼容性問(wèn)題,但認(rèn)證信息只能定期同步,因同步不及時(shí)造成認(rèn)證失敗的可能性較大;同步操作,會(huì)反復(fù)讀取大量未被改動(dòng)的數(shù)據(jù),增加系統(tǒng)復(fù)雜性和網(wǎng)絡(luò)流量,也不利于系統(tǒng)穩(wěn)定運(yùn)行和認(rèn)證信息安全。
由于存在上述問(wèn)題,LDAP未來(lái)在網(wǎng)絡(luò)認(rèn)證中的應(yīng)用將可能受到限制,因此,需要考慮如何解決這些問(wèn)題。從保證認(rèn)證安全性和系統(tǒng)穩(wěn)定性出發(fā),應(yīng)該著力解決兼容性問(wèn)題。解決兼容性問(wèn)題主要從兩個(gè)方面考慮,即擴(kuò)展認(rèn)證框架協(xié)議和LDAP協(xié)議的認(rèn)證方式。
EAP和RADIUS協(xié)議,作為認(rèn)證框架協(xié)議,支持多種認(rèn)證方式,可以在其認(rèn)證方式中增加專(zhuān)門(mén)針對(duì)LDAP為認(rèn)證信息數(shù)據(jù)庫(kù)的認(rèn)證方式,其中還應(yīng)包含口令和SASL兩種選項(xiàng)。認(rèn)證過(guò)程中,認(rèn)證服務(wù)器向用戶端提出認(rèn)證請(qǐng)求,認(rèn)證服務(wù)器與用戶協(xié)商認(rèn)證方式,當(dāng)認(rèn)證服務(wù)器使用LDAP服務(wù)中的認(rèn)證信息時(shí),則與用戶協(xié)商使用LDAP的認(rèn)證方式及選項(xiàng)(口令或SASL),協(xié)商成功后,認(rèn)證服務(wù)器利用獲取的用戶身份信息,查詢用戶在LDAP中對(duì)應(yīng)的DN,如用戶存在,進(jìn)行下一步操作;認(rèn)證服務(wù)器,認(rèn)證協(xié)議將從認(rèn)證協(xié)議獲取認(rèn)證信息轉(zhuǎn)換成LDAP的BIND請(qǐng)求包,BIND的對(duì)象是用戶對(duì)應(yīng)的DN;LDAP會(huì)反饋BIND應(yīng)答包,認(rèn)證服務(wù)器將BIND應(yīng)答中數(shù)據(jù)封裝到認(rèn)證協(xié)議中。這樣,用戶端通過(guò)認(rèn)證服務(wù)器與LDAP進(jìn)行BIND操作,認(rèn)證成功,則認(rèn)證服務(wù)器向用戶反饋認(rèn)證成功消息,如 BIND操作失敗,則認(rèn)證服務(wù)器向用戶反饋認(rèn)證失敗消息,結(jié)束認(rèn)證過(guò)程。如認(rèn)證成功,認(rèn)證服務(wù)器應(yīng)在適當(dāng)時(shí)間,進(jìn)行UNBIND操作。
這種方式,認(rèn)證服務(wù)器和用戶端的修改較大,如LDAP服務(wù)采用簡(jiǎn)單口令方式進(jìn)行BIND操作,實(shí)現(xiàn)難道較小,如LDAP服務(wù)器使用SASL,則實(shí)現(xiàn)難度較大。因而,這種方式擴(kuò)展性不好,不易支持復(fù)雜的認(rèn)證方式。
LDAP的BIND目前支持口令認(rèn)證和SASL擴(kuò)展認(rèn)證,LDAP在設(shè)計(jì)中為將來(lái)支持其他協(xié)議保留了擴(kuò)展空間。在LDAP的BIND包中,認(rèn)證方式字段只使用0和3,分別代表了口令認(rèn)證和 SASL認(rèn)證,1和2保留給其他認(rèn)證方式。而EAP是一種與底層協(xié)議無(wú)關(guān)的認(rèn)證框架協(xié)議,目前又被廣泛支持,因此,LDAP可以擴(kuò)展BIND操作的認(rèn)證方式,使用EAP作為一種新的認(rèn)證方式。LDAP的Bind-Request數(shù)據(jù)包重新定義如下,其中增加了可選認(rèn)證方式eap,eap認(rèn)證數(shù)據(jù)定義為字節(jié)串eappacket,封裝eap協(xié)議;LDAPResult數(shù)據(jù)包的resultCode應(yīng)增加 eapBindInProgress的值對(duì)應(yīng)代碼為22,BindResponse數(shù)據(jù)包的LDAPResult值在不是success時(shí),增加了 eapBindInProgress,在使用 eap時(shí)包含eappacket,認(rèn)證過(guò)程中發(fā)送eap數(shù)據(jù),不使用eap時(shí),則不包含eappacket。
圖1 LDAP擴(kuò)展BIND操作Fig.1 LDAP extented BIND operation
擴(kuò)展后認(rèn)證過(guò)程,實(shí)際是用戶通過(guò)認(rèn)證服務(wù)器與LDAP進(jìn)行BIND操作,認(rèn)證服務(wù)器進(jìn)行EAP與LDAP數(shù)據(jù)的轉(zhuǎn)換。首先,認(rèn)證服務(wù)器向用戶端提出認(rèn)證請(qǐng)求,用戶反饋身份信息;認(rèn)證服務(wù)器提取用戶身份信息,查詢用戶在LDAP中是否存在,如果存在,則認(rèn)證服務(wù)器會(huì)獲取 DN;認(rèn)證服務(wù)器獲取對(duì)應(yīng)的用戶DN后,開(kāi)始與LDAP的BIND操作,向LDAP進(jìn)行BIND請(qǐng)求,BIND包中DN填寫(xiě)用戶對(duì)應(yīng)的DN,認(rèn)證方式為eap,eappacket字段為用戶端的EAP應(yīng)答其中identity變?yōu)橛脩鬌N;LDAP服務(wù)器收到認(rèn)證服務(wù)器請(qǐng)求后,確認(rèn)使用EAP認(rèn)證,并反饋BIND應(yīng)答,開(kāi)始認(rèn)證過(guò)程,應(yīng)答中認(rèn)證結(jié)果為eapBindInProgress,eappacket字段中為EAP請(qǐng)求,其中包含認(rèn)證方式;認(rèn)證服務(wù)器收到LDAP的反饋后,將BIND反饋中的eap字段反饋給用戶端;用戶端收到反饋后,如果能夠支持這種認(rèn)證協(xié)議則開(kāi)始下面的認(rèn)證過(guò)程;之后認(rèn)證過(guò)程中,認(rèn)證服務(wù)器進(jìn)行協(xié)議轉(zhuǎn)發(fā),遵循EAP協(xié)議中對(duì)Path-throng服務(wù)器的要求和 LDAP對(duì)客戶端的要求,須注意用戶名和用戶DN的轉(zhuǎn)換,LDAP服務(wù)器則調(diào)用 EAP認(rèn)證過(guò)程,應(yīng)答中結(jié)果均是 eapBindInProgress,將 EAP數(shù)據(jù)填入 BIND包中的eappacket字段。如果認(rèn)證完成,LDAP應(yīng)答中反饋success或invalidCredentials,可將EAP的Success或Failure消息作為eappacket字段內(nèi)容,認(rèn)證服務(wù)器收到后,轉(zhuǎn)換從EAP消息,反饋給用戶端。具體的認(rèn)證過(guò)程如2圖所示。
在網(wǎng)絡(luò)認(rèn)證中,認(rèn)證服務(wù)器主要關(guān)注EAP是否成功,認(rèn)證成功或失敗主要取決于EAP信息最后提示的結(jié)果,LDAP的BIND不必一定提示綁定是否成功,為了保障將來(lái)的擴(kuò)展性應(yīng)盡量與EAP保持一致,但認(rèn)證服務(wù)器應(yīng)在每次認(rèn)證成功后都應(yīng)及時(shí)進(jìn)行UNBIND操作,以關(guān)閉LDAP會(huì)話防止LDAP維持大量未結(jié)束的BIND過(guò)程。
LDAP擴(kuò)展方式,從保持認(rèn)證的安全、效率、兼容性來(lái)看,更具有發(fā)展前景,大量的客戶端不用修改,EAP傳遞密鑰等重要過(guò)程不必重新設(shè)計(jì)。
圖2 LDAP擴(kuò)展EAP認(rèn)證過(guò)程Fig.2 LDAP extended EAP certification process
LDAP在網(wǎng)絡(luò)認(rèn)證中已經(jīng)廣泛應(yīng)用,大量應(yīng)用系統(tǒng)、認(rèn)證與依靠其運(yùn)行。在今后認(rèn)證方法的研究中,應(yīng)加強(qiáng)對(duì)LDAP擴(kuò)展的研究,盡早提出實(shí)際可用的系統(tǒng)和解決方案,以提高認(rèn)證系統(tǒng)的可靠性和高效率。
[1]Lightweight Directory Access Protocol(V3).RFC2251.M.Wahl,T.Howes,S.Kille.1997.12.http://www.ietf.org.cn.[S].
[2]Simple Authentication and Security Layer(SASL).RFC2222.J.Myers.1997.10.http://www.ietf.org[S].
[3]Extensible Authentication Protocol(EAP).RFC3748.B.Aboda,L.Blunk,J.Vollbrecht,J.Carlson,H.Levkowetz.2004.6.http://www.ietf.org[S].
[4]Remote Authentication Dial In User Service(RADIUS).RFC2138.C.Rigney,A.Rubens,W.Simpson,S.Wilens.1997.4.http://www.ietf.org[S].
[5]龐英智,顏輝.網(wǎng)絡(luò)環(huán)境下學(xué)生自主學(xué)習(xí)評(píng)價(jià)系統(tǒng)的實(shí)現(xiàn)[J].長(zhǎng)春理工大學(xué)學(xué)報(bào):自然科學(xué)版,2010(3):156-158.
[6]王素紅,常悅.基于P2P網(wǎng)絡(luò)的即時(shí)通信系統(tǒng)研究[J].長(zhǎng)春理工大學(xué)學(xué)報(bào):自然科學(xué)版,2009,32(4):657-659.