在windows AD域環(huán)境中使用Kerberos實現(xiàn)Web應(yīng)用自動登錄
本文介紹如何在Windows Active Directory域環(huán)境下,利用Kerberos協(xié)議實現(xiàn)Web應(yīng)用的無縫自動登錄,并重點(diǎn)關(guān)注使用Go和Node.JS開發(fā)的Web服務(wù)器場景。 我們假設(shè)您已擁有一個Windows AD域,并掌握了從域?qū)С鰇eytab文件的方法。
以下解答針對文中提出的關(guān)鍵問題:
-
setspn命令執(zhí)行位置: setspn命令必須在Windows域控制器上運(yùn)行。這是因為服務(wù)主體名稱(SPN)存儲在域控制器的Active Directory數(shù)據(jù)庫中,用于將服務(wù)與Kerberos憑據(jù)關(guān)聯(lián)。客戶端機(jī)器沒有權(quán)限直接修改域控制器數(shù)據(jù)庫。
-
SPN中的主機(jī)名: 在命令 setspn -A http/host.domain.local domainuser 中,host.domain.local 代表Web應(yīng)用服務(wù)器的完全限定域名(FQDN)。它明確標(biāo)識提供HTTP服務(wù)的服務(wù)器。
-
Go Web服務(wù)器端的Kerberos庫: go語言的jcmturner/gokrb5庫是一個功能強(qiáng)大的Kerberos客戶端庫,它處理Kerberos認(rèn)證的細(xì)節(jié),例如獲取和驗證票據(jù)等。 Go Web服務(wù)器無需直接使用Kerberos命令行工具(如kinit)。gokrb5庫會為您完成這些工作。
-
Go Web服務(wù)器部署位置: Go Web服務(wù)器不必部署在已加入域的Windows機(jī)器上。它可以部署在任何能夠訪問域控制器并使用Kerberos庫的機(jī)器上,包括linux機(jī)器。 這就是使用jcmturner/gokrb5等跨平臺庫的優(yōu)勢。 確保您的服務(wù)器能夠解析域名并與域控制器進(jìn)行網(wǎng)絡(luò)通信即可。