集成 Windows 驗(yàn)證(Integrated Windows authentication)往往用于局域網(wǎng)環(huán)境中,因?yàn)樾枰褂梅?wù)器執(zhí)行驗(yàn)證,被驗(yàn)證的用戶也必須處于同一域內(nèi)。為了能夠自動驗(yàn)證用戶,用戶所用的客戶端機(jī)器也必須處于同一域內(nèi)。
可以利用以下幾種方案來實(shí)現(xiàn) Tomcat 下的集成 Windows 驗(yàn)證:
下面將分別詳細(xì)講述這些方案。
需要仔細(xì)配置 Kerberos 身份驗(yàn)證服務(wù)(集成 Windows 驗(yàn)證的基礎(chǔ))。如果嚴(yán)格按照下列步驟去做,配置就會生效。這些配置的靈活度很小,所以必須嚴(yán)格按照下列方式去做。從測試到現(xiàn)在,已知的規(guī)則是:
在配置 Windows 驗(yàn)證的 Tomcat 內(nèi)建支持時,共涉及到4個組件:域控制器、托管 Tomcat 的服務(wù)器、需要使用 Windows 驗(yàn)證的 Web 應(yīng)用,以及客戶端機(jī)器。下面將講解每個組件所需的配置。
下面配置范例中用到的 3 個機(jī)器名稱為:win-dc01.dev.local (域控制器)、win-tc01.dev.local(Tomcat 實(shí)例)、win-pc01.dev.local (客戶端)。它們都是DEV.LOCAL 域成員。
注意:為了在下面的步驟中使用密碼,不得不放寬了域密碼規(guī)則,對于生產(chǎn)環(huán)境,可不建議這么做。
下列步驟假設(shè)前提是:經(jīng)過配置,服務(wù)器可以做為域控制器來使用。關(guān)于如何配置 Windows 服務(wù)器配置成域控制器,不在本章討論范圍之內(nèi)。
配置域控制器,使 Tomcat 支持 Windows 驗(yàn)證的步驟為:
以上步驟測試環(huán)境為:運(yùn)行 Windows Server 2008 R2 64 位標(biāo)準(zhǔn)版的域控制器。對于域功能級別和林(forest)功能級別,使用 Windows Server 2003 的功能級別。
下列步驟假定前提為:已經(jīng)安裝并配置好了 Tomcat 和 Java 6 JDK/JRE,并以 [email protected] 用戶來運(yùn)行 Tomcat。配置用于 Windows 驗(yàn)證的 Tomcat 實(shí)例的步驟如下:
創(chuàng)建 kerberos 配置文件 $CATALINA_BASE/conf/krb5.ini。本文檔使用的文件包含以下內(nèi)容
[libdefaults]
default_realm = DEV.LOCAL
default_keytab_name = FILE:c:\apache-tomcat-8.0.x\conf\tomcat.keytab
default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts- hmac-sha1-96
default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts- hmac-sha1-96
forwardable=true
[realms]
DEV.LOCAL = {
kdc = win-dc01.dev.local:88
}
[domain_realm]
dev.local= DEV.LOCAL
.dev.local= DEV.LOCAL
該文件的位置可以通過 `java.security.krb5.conf` 系統(tǒng)屬性來修改。
com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal="HTTP/[email protected]"
useKeyTab=true
keyTab="c:/apache-tomcat-8.0.x/conf/tomcat.keytab"
storeKey=true;
};
com.sun.security.jgss.krb5.accept {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal="HTTP/[email protected]"
useKeyTab=true
keyTab="c:/apache-tomcat-8.0.x/conf/tomcat.keytab"
storeKey=true;
};
本文件位置可以通過 java.security.auth.login.config 系統(tǒng)屬性來修改。所用的 LoginModule 是 JVM 所專有的,從而能保證所指定的 LoginModule 匹配所用的 JVM。登錄配置名稱必須與驗(yàn)證 valve 所用值相匹配。
SPNEGO 驗(yàn)證器適用于任何 Realm,但如果和 JNDI Realm 一起使用的話,JNDI Realm 默認(rèn)將使用用戶的委托憑證(delegated credentials)連接 Active 目錄。
上述步驟測試環(huán)境為:Tomcat 服務(wù)器運(yùn)行于 Windows Server 2008 R2 64 位標(biāo)準(zhǔn)版上,帶有 Oracle 1.6.0_24 64 位 JDK。
測試環(huán)境如下:
雖然建議使用最新的穩(wěn)定版本,但其實(shí)所有 Tomcat 8 的版本都能使用。
配置與 Windows 基本相同,但存在以下一些差別:
配置 Web 應(yīng)用,以便使用 web.xml 中的 Tomcat 專有驗(yàn)證方法 SPNEGO(而不是 BASIC 等)。和其他的驗(yàn)證器一樣,通過顯式地配置驗(yàn)證 valve并且在 Valve 中設(shè)置屬性來自定義行為。
配置客戶端,以便使用 Kerberos 認(rèn)證。對于 IE 瀏覽器來說,這就需要 Tomcat 實(shí)例位于“本地局域網(wǎng)”安全域中,并且需要在“工具 > Internet 選項(xiàng) > 高級”中啟用集成 Windows 認(rèn)證。注意:客戶端和 Tomcat 實(shí)例不能使用同一臺機(jī)器,因?yàn)?IE 會使用未經(jīng)證實(shí)的 NTLM 協(xié)議。
正確配置 Kerberos 驗(yàn)證是有一定技巧性的。下列參考資料有一定幫助。一般來說,Tomcat 用戶郵件列表中的建議也是可取的。
關(guān)于該解決方案的完整詳情,可瀏覽 Waffle 網(wǎng)站。其關(guān)鍵特性為:
關(guān)于該解決方案的完整詳情,可瀏覽 Kerberos 擴(kuò)展網(wǎng)站。其關(guān)鍵特性為:
關(guān)于該解決方案的完整詳情,可瀏覽 該項(xiàng)目網(wǎng)站。其關(guān)鍵特性為:
關(guān)于該解決方案的完整詳情,可瀏覽 該項(xiàng)目網(wǎng)站。其關(guān)鍵特性為:
通過配置 IIS 提供 Windows 驗(yàn)證的步驟如下:
Apache httpd 默認(rèn)并不支持 Windows 驗(yàn)證,但可以使用很多第三方模塊來實(shí)現(xiàn):
采用以下步驟配置 httpd,以便提供 Windows 驗(yàn)證: