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 的驗證用戶信息。
全部教程
天堂资源网,色综合天天综合给合国产,午夜无码伦费影视在线观看,亚洲网红自拍偷拍 重金约战超极品嫩模| 韩国免费a级作爱片免费观看中国| 高清福利在线| 国产精品不卡午夜精品| 两个人看的视频日本| chinese国产videoxxxx实拍| 国产无av码在线观看| 男朋友一上午要了我四次| 加勒比久久综合久久| 中国16小受chinesevideos| 国产成年女人特黄特色毛片免| 香港三日本三级少妇三级99| 1069男同gv免费观看| 亚洲欧美日产综合在线网| 快穿之完美命运| >javsexAVHD| 按着他的头给我添| 被窝网| 最大胆37人体艺照片| a国产一级一片男女性| 小的学生videosex| 杂乱小说2第400部| 免费国产欧美国日产a| 欧美老肥婆牲交VIDEOS| 真实女人偷人偷拍视频| 手机国产av国片免费| 大波大乳video| 伊人久久大香线蕉午夜| 将军家的小娘子电视剧免费观看| 奶头被两老头吸大了| 日韩女性性开放视频| http://www.lulutr.com