集成 Windows 驗(yàn)證(Integrated Windows authentication)往往用于局域網(wǎng)環(huán)境中,因?yàn)樾枰褂梅?wù)器執(zhí)行驗(yàn)證,被驗(yàn)證的用戶也必須處于同一域內(nèi)。為了能夠自動(dòng)驗(yàn)證用戶,用戶所用的客戶端機(jī)器也必須處于同一域內(nèi)。
可以利用以下幾種方案來(lái)實(shí)現(xiàn) Tomcat 下的集成 Windows 驗(yàn)證:
下面將分別詳細(xì)講述這些方案。
需要仔細(xì)配置 Kerberos 身份驗(yàn)證服務(wù)(集成 Windows 驗(yàn)證的基礎(chǔ))。如果嚴(yán)格按照下列步驟去做,配置就會(huì)生效。這些配置的靈活度很小,所以必須嚴(yán)格按照下列方式去做。從測(cè)試到現(xiàn)在,已知的規(guī)則是:
DEV.LOCAL
)不區(qū)分大小寫(xiě),在jaas.conf 中也是這樣。在配置 Windows 驗(yàn)證的 Tomcat 內(nèi)建支持時(shí),共涉及到4個(gè)組件:域控制器、托管 Tomcat 的服務(wù)器、需要使用 Windows 驗(yàn)證的 Web 應(yīng)用,以及客戶端機(jī)器。下面將講解每個(gè)組件所需的配置。
下面配置范例中用到的 3 個(gè)機(jī)器名稱為:win-dc01.dev.local
(域控制器)、win-tc01.dev.local
(Tomcat 實(shí)例)、win-pc01.dev.local
(客戶端)。它們都是DEV.LOCAL
域成員。
注意:為了在下面的步驟中使用密碼,不得不放寬了域密碼規(guī)則,對(duì)于生產(chǎn)環(huán)境,可不建議這么做。
下列步驟假設(shè)前提是:經(jīng)過(guò)配置,服務(wù)器可以做為域控制器來(lái)使用。關(guān)于如何配置 Windows 服務(wù)器配置成域控制器,不在本章討論范圍之內(nèi)。
配置域控制器,使 Tomcat 支持 Windows 驗(yàn)證的步驟為:
tc01
,密碼為 tc01pass
。將 SPN 映射到用戶賬戶上。SPN 的形式為:<service class>/<host>:<port>/<service name>
。本文檔所用的 SPN 為 HTTP/win-tc01.dev.local
。要想將用戶映射到 SPN 上,運(yùn)行以下命令:
setspn -A HTTP/win-tc01.dev.local tc01
生成 keytab 文件,Tomcat 服務(wù)器會(huì)用該文件將自身注冊(cè)到域控制器上。該文件包含用于服務(wù)提供者賬戶的 Tomcat 私鑰,所以也應(yīng)該受到保護(hù)。運(yùn)行以下命令生成該文件(全部命令都應(yīng)寫(xiě)在同一行中):
ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL /princ HTTP/win-tc01.dev.local@DEV.LOCAL /pass tc01pass /kvno 0
test
,密碼為 testpass
。以上步驟測(cè)試環(huán)境為:運(yùn)行 Windows Server 2008 R2 64 位標(biāo)準(zhǔn)版的域控制器。對(duì)于域功能級(jí)別和林(forest)功能級(jí)別,使用 Windows Server 2003 的功能級(jí)別。
下列步驟假定前提為:已經(jīng)安裝并配置好了 Tomcat 和 Java 6 JDK/JRE,并以 tc01@DEV.LOCAL
用戶來(lái)運(yùn)行 Tomcat。配置用于 Windows 驗(yàn)證的 Tomcat 實(shí)例的步驟如下:
tomcat.keytab
文件復(fù)制到 $CATALINA_BASE/conf/tomcat.keytab
。$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
該文件的位置可以通過(guò) `java.security.krb5.conf` 系統(tǒng)屬性來(lái)修改。
$CATALINA_BASE/conf/jaas.conf
。本文檔使用的文件包含以下內(nèi)容: com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
principal="HTTP/win-tc01.dev.local@DEV.LOCAL"
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/win-tc01.dev.local@DEV.LOCAL"
useKeyTab=true
keyTab="c:/apache-tomcat-8.0.x/conf/tomcat.keytab"
storeKey=true;
};
本文件位置可以通過(guò) java.security.auth.login.config
系統(tǒng)屬性來(lái)修改。所用的 LoginModule 是 JVM 所專有的,從而能保證所指定的 LoginModule 匹配所用的 JVM。登錄配置名稱必須與驗(yàn)證 valve 所用值相匹配。
SPNEGO 驗(yàn)證器適用于任何 Realm,但如果和 JNDI Realm 一起使用的話,JNDI Realm 默認(rèn)將使用用戶的委托憑證(delegated credentials)連接 Active 目錄。
上述步驟測(cè)試環(huán)境為:Tomcat 服務(wù)器運(yùn)行于 Windows Server 2008 R2 64 位標(biāo)準(zhǔn)版上,帶有 Oracle 1.6.0_24 64 位 JDK。
測(cè)試環(huán)境如下:
雖然建議使用最新的穩(wěn)定版本,但其實(shí)所有 Tomcat 8 的版本都能使用。
配置與 Windows 基本相同,但存在以下一些差別:
配置 Web 應(yīng)用,以便使用 web.xml 中的 Tomcat 專有驗(yàn)證方法 SPNEGO
(而不是 BASIC
等)。和其他的驗(yàn)證器一樣,通過(guò)顯式地配置驗(yàn)證 valve并且在 Valve 中設(shè)置屬性來(lái)自定義行為。
配置客戶端,以便使用 Kerberos 認(rèn)證。對(duì)于 IE 瀏覽器來(lái)說(shuō),這就需要 Tomcat 實(shí)例位于“本地局域網(wǎng)”安全域中,并且需要在“工具 > Internet 選項(xiàng) > 高級(jí)”中啟用集成 Windows 認(rèn)證。注意:客戶端和 Tomcat 實(shí)例不能使用同一臺(tái)機(jī)器,因?yàn)?IE 會(huì)使用未經(jīng)證實(shí)的 NTLM 協(xié)議。
正確配置 Kerberos 驗(yàn)證是有一定技巧性的。下列參考資料有一定幫助。一般來(lái)說(shuō),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)鍵特性為:
通過(guò)配置 IIS 提供 Windows 驗(yàn)證的步驟如下:
tomcatAuthentication
屬性設(shè)為 false
,從而配置 Tomcat 使用來(lái)自 IIS 的驗(yàn)證用戶信息。另一種方法是,將 tomcatAuthorization
設(shè)為 true
,從而在Tomcat
執(zhí)行授權(quán)時(shí),允許 IIS 進(jìn)行驗(yàn)證。Apache httpd 默認(rèn)并不支持 Windows 驗(yàn)證,但可以使用很多第三方模塊來(lái)實(shí)現(xiàn):
采用以下步驟配置 httpd,以便提供 Windows 驗(yàn)證:
tomcatAuthentication
屬性設(shè)為 false
,從而配置 Tomcat 使用來(lái)自 httpd 的驗(yàn)證用戶信息。
更多建議: