<xmp id="isueg"><nav id="isueg"></nav>
  • <dd id="isueg"><nav id="isueg"></nav></dd>
    <xmp id="isueg">
  • <center id="isueg"></center>
    <nav id="isueg"><code id="isueg"></code></nav>
    Tomca教程
    Tomcat Manager
    Tomcat Realm 配置
    Tomcat 安全管理
    Tomcat JNDI 資源
    Tomcat JDBC 數據源
    Tomcat 類加載機制
    Tomcat JSPs
    Tomcat SSL/TLS配置
    Tomcat SSI
    Tomcat CGI
    Tomcat 代理支持
    Tomcat MBean 描述符
    Tomcat 默認 Servlet
    Tomcat 集群
    Tomcat 連接器
    Tomcat監控與管理
    Tomcat 日志機制
    Tomcat 基于 APR 的原生庫
    Tomcat 虛擬主機
    Tomcat 高級 IO 機制
    Tomcat 附加組件
    Tomcat 安全性注意事項
    Tomcat Windows 服務
    Tomcat Windows 認證
    Tomcat 的 JDBC 連接池
    Tomcat WebSocket 支持
    Tomcat 重寫機制

    Tomcat Windows 認證

    Tomcat Windows 認證概述

    集成 Windows 驗證(Integrated Windows authentication)往往用于局域網環境中,因為需要使用服務器執行驗證,被驗證的用戶也必須處于同一域內。為了能夠自動驗證用戶,用戶所用的客戶端機器也必須處于同一域內。

    可以利用以下幾種方案來實現 Tomcat 下的集成 Windows 驗證:

    • 內建 Tomcat 支持。
    • 使用第三方庫,比如 Waffle。
    • 使用支持 Windows 驗證的反向代理來執行驗證步驟(IIS 或 httpd)。

    下面將分別詳細講述這些方案。

    內建 Tomcat 支持

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

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

    在配置 Windows 驗證的 Tomcat 內建支持時,共涉及到4個組件:域控制器、托管 Tomcat 的服務器、需要使用 Windows 驗證的 Web 應用,以及客戶端機器。下面將講解每個組件所需的配置。

    下面配置范例中用到的 3 個機器名稱為:win-dc01.dev.local (域控制器)、win-tc01.dev.local(Tomcat 實例)、win-pc01.dev.local (客戶端)。它們都是DEV.LOCAL 域成員。

    注意:為了在下面的步驟中使用密碼,不得不放寬了域密碼規則,對于生產環境,可不建議這么做。

    1. 域控制器

    下列步驟假設前提是:經過配置,服務器可以做為域控制器來使用。關于如何配置 Windows 服務器配置成域控制器,不在本章討論范圍之內。
    配置域控制器,使 Tomcat 支持 Windows 驗證的步驟為:

    • 創建一個域用戶,它將映射到 Tomcat 服務器所用的服務名稱上。在本文檔中,用戶為 tc01,密碼為 tc01pass。
    • 將 SPN 映射到用戶賬戶上。SPN 的形式為:/:/。本文檔所用的 SPN 為 HTTP/win-tc01.dev.local。要想將用戶映射到 SPN 上,運行以下命令:
    • setspn -A HTTP/win-tc01.dev.local tc01
    • 生成 keytab 文件,Tomcat 服務器會用該文件將自身注冊到域控制器上。該文件包含用于服務提供者賬戶的 Tomcat 私鑰,所以也應該受到保護。運行以下命令生成該文件(全部命令都應寫在同一行中):
    • ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL /princ HTTP/win-tc01.dev.local@DEV.LOCAL /pass tc01pass /kvno 0
    • 創建客戶端所用的域用戶。本文檔中,域用戶為 test,密碼為 testpass。

    以上步驟測試環境為:運行 Windows Server 2008 R2 64 位標準版的域控制器。對于域功能級別和林(forest)功能級別,使用 Windows Server 2003 的功能級別。

    2. Tomcat 實例(Windows 服務器)

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

    • 將域控制器所創建的 tomcat.keytab 文件復制到 $CATALINA_BASE/conf/tomcat.keytab。

    創建 kerberos 配置文件 $CATALINA_BASE/conf/krb5.ini。本文檔使用的文件包含以下內容

    [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` 系統屬性來修改。
    • 創建 JAAS 邏輯配置文件 $CATALINA_BASE/conf/jaas.conf。本文檔使用的文件包含以下內容:
     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 系統屬性來修改。所用的 LoginModule 是 JVM 所專有的,從而能保證所指定的 LoginModule 匹配所用的 JVM。登錄配置名稱必須與驗證 valve 所用值相匹配。

    SPNEGO 驗證器適用于任何 Realm,但如果和 JNDI Realm 一起使用的話,JNDI Realm 默認將使用用戶的委托憑證(delegated credentials)連接 Active 目錄。

    上述步驟測試環境為:Tomcat 服務器運行于 Windows Server 2008 R2 64 位標準版上,帶有 Oracle 1.6.0_24 64 位 JDK。

    3. Tomcat 實例(Linux 服務器)

    測試環境如下:

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

    雖然建議使用最新的穩定版本,但其實所有 Tomcat 8 的版本都能使用。

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

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

    4. Web 應用

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

    5. 客戶端

    配置客戶端,以便使用 Kerberos 認證。對于 IE 瀏覽器來說,這就需要 Tomcat 實例位于“本地局域網”安全域中,并且需要在“工具 > Internet 選項 > 高級”中啟用集成 Windows 認證。注意:客戶端和 Tomcat 實例不能使用同一臺機器,因為 IE 會使用未經證實的 NTLM 協議。

    6. 參考資料

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

    • IIS 與 Kerberos
    • SourceForge 的 SPNEGO 項目
    • Oracle Java GSS-API 教程(Java 7)
    • Oracle Java GSS-API 教程 - 疑難解答(Java 7)
    • 用于 Windows 驗證的Geronimo 配置
    • Kerberos 交換中的加密選擇
    • 受支持的 Kerberos Cipher 套件

    第三方庫

    1. Waffle

    關于該解決方案的完整詳情,可瀏覽 Waffle 網站。其關鍵特性為:

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

    2. Spring Security - Kerberos 擴展

    關于該解決方案的完整詳情,可瀏覽 Kerberos 擴展網站。其關鍵特性為:

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

    3. SourceForge 的 SPNEGO 項目

    關于該解決方案的完整詳情,可瀏覽 該項目網站。其關鍵特性為:

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

    4. Jespa

    關于該解決方案的完整詳情,可瀏覽 該項目網站。其關鍵特性為:

    • 純 Java 解決方案
    • 高級 Active 目錄集成

    反向代理

    1. Microsoft IIS

    通過配置 IIS 提供 Windows 驗證的步驟如下:

    • 將 IIS 配置成 Tomcat 的反向代理(參看 IIS Web 服務器文檔)。
    • 配置 IIS 使用 Windows 驗證。
    • 將 AJP 連接器上的 tomcatAuthentication 屬性設為 false,從而配置 Tomcat 使用來自 IIS 的驗證用戶信息。另一種方法是,將 tomcatAuthorization 設為 true,從而在Tomcat 執行授權時,允許 IIS 進行驗證。

    2. Apache httpd

    Apache httpd 默認并不支持 Windows 驗證,但可以使用很多第三方模塊來實現:

    • 針對 Windows 平臺的 mod_auth_sspi
    • 針對非 Windows 平臺的 mod_auth_ntlm_winbind。目前已知適用于 32 位平臺上的 httpd 2.0.x。有些用戶已經報告了 httpd 2.2.x 構建與 64 位Linux 構建所存在的穩定性問題。

    采用以下步驟配置 httpd,以便提供 Windows 驗證:

    • 將 httpd 配置成 Tomcat 的反向代理(參看 Apache httpd Web 服務器文檔)。
    • 配置 httpd 使用 Windows 驗證。
    • 將 AJP 連接器上的 tomcatAuthentication 屬性設為 false,從而配置 Tomcat 使用來自 httpd 的驗證用戶信息。
    全部教程
    亚洲AV女人的天堂在线观看
    <xmp id="isueg"><nav id="isueg"></nav>
  • <dd id="isueg"><nav id="isueg"></nav></dd>
    <xmp id="isueg">
  • <center id="isueg"></center>
    <nav id="isueg"><code id="isueg"></code></nav>