在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Windows 認(rèn)證
附加組件
集群化與會(huì)話復(fù)制
負(fù)載均衡器
連接器
監(jiān)控與管理
日志機(jī)制
基于 APR 的原生庫(kù)
虛擬主機(jī)
高級(jí) IO 機(jī)制
默認(rèn) Servlet
如何在 Maven 中使用 Tomcat 庫(kù)
安全性注意事項(xiàng)
Windows 服務(wù)
Windows 認(rèn)證
Tomcat 的 JDBC 連接池
WebSocket 支持
重寫機(jī)制
簡(jiǎn)介
MBean 描述符
代理支持
CGI
SSI(服務(wù)器端嵌入)
SSL/TLS 配置
JSPs
類加載機(jī)制
JDBC 數(shù)據(jù)源
JNDI 資源
安全管理
Realm 配置
Tomcat Manager
Tomcat Web 應(yīng)用部署
第一個(gè)應(yīng)用
安裝

Windows 認(rèn)證

概述

集成 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)。

可以利用以下幾種方案來實(shí)現(xiàn) Tomcat 下的集成 Windows 驗(yàn)證:

  • 內(nèi)建 Tomcat 支持。
  • 使用第三方庫(kù),比如 Waffle。
  • 使用支持 Windows 驗(yàn)證的反向代理來執(zhí)行驗(yàn)證步驟(IIS 或 httpd)。

下面將分別詳細(xì)講述這些方案。

內(nèi)建 Tomcat 支持

需要仔細(xì)配置 Kerberos 身份驗(yàn)證服務(wù)(集成 Windows 驗(yàn)證的基礎(chǔ))。如果嚴(yán)格按照下列步驟去做,配置就會(huì)生效。這些配置的靈活度很小,所以必須嚴(yán)格按照下列方式去做。從測(cè)試到現(xiàn)在,已知的規(guī)則是:

  • 用于訪問 Tomcat 服務(wù)器的主機(jī)名必須匹配 服務(wù)主體名稱(Service Principal Name,SPN)中的主機(jī)名,否則驗(yàn)證就會(huì)失敗。驗(yàn)證失敗時(shí),校驗(yàn)和錯(cuò)誤會(huì)報(bào)告給調(diào)試日志。
  • 客戶端必須明確服務(wù)器位于本地可信局域網(wǎng)。
  • SPN 必須是 HTTP/<主機(jī)名> 的形式,而且必須在所有用到它的位置處保持統(tǒng)一。
  • 端口號(hào)不能放在 SPN 中。
  • 不能將多個(gè) SPN 映射給一個(gè)域用戶。
  • Tomcat 必須以 SPN 關(guān)聯(lián)的域賬戶或域管理員的身份運(yùn)行,但不建議采用域管理員的身份運(yùn)行 Tomcat。
  • 在 ktpass 命令中,域名(DEV.LOCAL)不區(qū)分大小寫,在jaas.conf 中也是這樣。
  • 使用 ktpass 命令時(shí),不能指定域。

在配置 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)境,可不建議這么做。

1. 域控制器

下列步驟假設(shè)前提是:經(jīng)過配置,服務(wù)器可以做為域控制器來使用。關(guān)于如何配置 Windows 服務(wù)器配置成域控制器,不在本章討論范圍之內(nèi)。
配置域控制器,使 Tomcat 支持 Windows 驗(yàn)證的步驟為:

  • 創(chuàng)建一個(gè)域用戶,它將映射到 Tomcat 服務(wù)器所用的服務(wù)名稱上。在本文檔中,用戶為 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)寫在同一行中):

    ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL /princ HTTP/win-tc01.dev.local@DEV.LOCAL /pass tc01pass /kvno 0

  • 創(chuàng)建客戶端所用的域用戶。本文檔中,域用戶為 test,密碼為 testpass。

以上步驟測(cè)試環(huán)境為:運(yùn)行 Windows Server 2008 R2 64 位標(biāo)準(zhǔn)版的域控制器。對(duì)于域功能級(jí)別和林(forest)功能級(jí)別,使用 Windows Server 2003 的功能級(jí)別。

2. Tomcat 實(shí)例(Windows 服務(wù)器)

下列步驟假定前提為:已經(jīng)安裝并配置好了 Tomcat 和 Java 6 JDK/JRE,并以 tc01@DEV.LOCAL 用戶來運(yùn)行 Tomcat。配置用于 Windows 驗(yàn)證的 Tomcat 實(shí)例的步驟如下:

  • 將域控制器所創(chuàng)建的 tomcat.keytab 文件復(fù)制到 $CATALINA_BASE/conf/tomcat.keytab。
  • 創(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)屬性來修改。
  • 創(chuàng)建 JAAS 邏輯配置文件 $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;
    };

本文件位置可以通過 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 目錄。

上述步驟測(cè)試環(huán)境為:Tomcat 服務(wù)器運(yùn)行于 Windows Server 2008 R2 64 位標(biāo)準(zhǔn)版上,帶有 Oracle 1.6.0_24 64 位 JDK。

3. Tomcat 實(shí)例(Linux 服務(wù)器)

測(cè)試環(huán)境如下:

  • Java 1.7.0, update 45, 64-bit
  • Ubuntu Server 12.04.3 LTS 64-bit
  • Tomcat 8.0.x (r1546570)

雖然建議使用最新的穩(wěn)定版本,但其實(shí)所有 Tomcat 8 的版本都能使用。

配置與 Windows 基本相同,但存在以下一些差別:

  • Linux 服務(wù)器不必位于 Windows 域。
  • 應(yīng)該更新 krb5.ini 和 jass.conf 中的 keytab 文件路徑,以便適應(yīng)使用 Linux 文件路徑風(fēng)格(比如:/usr/local/tomcat/...)的 Linux 服務(wù)器。

4. Web 應(yīng)用

配置 Web 應(yīng)用,以便使用 web.xml 中的 Tomcat 專有驗(yàn)證方法 SPNEGO(而不是 BASIC 等)。和其他的驗(yàn)證器一樣,通過顯式地配置驗(yàn)證 valve并且在 Valve 中設(shè)置屬性來自定義行為。

5. 客戶端

配置客戶端,以便使用 Kerberos 認(rèn)證。對(duì)于 IE 瀏覽器來說,這就需要 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é)議。

6. 參考資料

正確配置 Kerberos 驗(yàn)證是有一定技巧性的。下列參考資料有一定幫助。一般來說,Tomcat 用戶郵件列表中的建議也是可取的。

  1. IIS 與 Kerberos
  2. SourceForge 的 SPNEGO 項(xiàng)目
  3. Oracle Java GSS-API 教程(Java 7)
  4. Oracle Java GSS-API 教程 - 疑難解答(Java 7)
  5. 用于 Windows 驗(yàn)證的Geronimo 配置
  6. Kerberos 交換中的加密選擇
  7. 受支持的 Kerberos Cipher 套件

第三方庫(kù)

1. Waffle

關(guān)于該解決方案的完整詳情,可瀏覽 Waffle 網(wǎng)站。其關(guān)鍵特性為:

  • Drop-in
  • 配置簡(jiǎn)單(無需 JAAS 或 keytab 配置)
  • 使用原生庫(kù)

2. Spring Security - Kerberos 擴(kuò)展

關(guān)于該解決方案的完整詳情,可瀏覽 Kerberos 擴(kuò)展網(wǎng)站。其關(guān)鍵特性為:

  • xx
  • 需要生成 Kerberos keytab 文件
  • 純粹 Java 解決方案

3. SourceForge 的 SPNEGO 項(xiàng)目

關(guān)于該解決方案的完整詳情,可瀏覽 該項(xiàng)目網(wǎng)站。其關(guān)鍵特性為:

  • 使用 Kerberos。
  • 純 Java 解決方案。

4. Jespa

關(guān)于該解決方案的完整詳情,可瀏覽 該項(xiàng)目網(wǎng)站。其關(guān)鍵特性為:

  • 純 Java 解決方案
  • 高級(jí) Active 目錄集成

反向代理

1. Microsoft IIS

通過配置 IIS 提供 Windows 驗(yàn)證的步驟如下:

  1. 將 IIS 配置成 Tomcat 的反向代理(參看 IIS Web 服務(wù)器文檔)。
  2. 配置 IIS 使用 Windows 驗(yàn)證。
  3. 將 AJP 連接器上的 tomcatAuthentication 屬性設(shè)為 false,從而配置 Tomcat 使用來自 IIS 的驗(yàn)證用戶信息。另一種方法是,將 tomcatAuthorization 設(shè)為 true,從而在Tomcat 執(zhí)行授權(quán)時(shí),允許 IIS 進(jìn)行驗(yàn)證。

2. Apache httpd

Apache httpd 默認(rèn)并不支持 Windows 驗(yàn)證,但可以使用很多第三方模塊來實(shí)現(xiàn):

  1. 針對(duì) Windows 平臺(tái)的 mod_auth_sspi
  2. 針對(duì)非 Windows 平臺(tái)的 mod_auth_ntlm_winbind。目前已知適用于 32 位平臺(tái)上的 httpd 2.0.x。有些用戶已經(jīng)報(bào)告了 httpd 2.2.x 構(gòu)建與 64 位Linux 構(gòu)建所存在的穩(wěn)定性問題。

采用以下步驟配置 httpd,以便提供 Windows 驗(yàn)證:

  1. 將 httpd 配置成 Tomcat 的反向代理(參看 Apache httpd Web 服務(wù)器文檔)。
  2. 配置 httpd 使用 Windows 驗(yàn)證。
  3. 將 AJP 連接器上的 tomcatAuthentication 屬性設(shè)為 false,從而配置 Tomcat 使用來自 httpd 的驗(yàn)證用戶信息。
上一篇:簡(jiǎn)介下一篇:安全管理