整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。
从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。
web server apache tomcat11-01-官方文档入门介绍
web server apache tomcat11-02-setup 启动
web server apache tomcat11-03-deploy 如何部署
web server apache tomcat11-04-manager 如何管理?
web server apache tomcat11-06-Host Manager App -- Text Interface
web server apache tomcat11-07-Realm Configuration
web server apache tomcat11-08-JNDI Resources
web server apache tomcat11-09-JNDI Datasource
web server apache tomcat11-10-Class Loader
web server apache tomcat11-11-Jasper 2 JSP Engine
web server apache tomcat11-12-SSL/TLS Configuration
web server apache tomcat11-13-SSI
web server apache tomcat11-14-CGI
web server apache tomcat11-15-proxy
web server apache tomcat11-16-mbean
web server apache tomcat11-17-default-servlet
web server apache tomcat11-18-clusting 集群
web server apache tomcat11-19-load balance 负载均衡
web server apache tomcat11-20-connectors 连接器
web server apache tomcat11-21-monitor and management 监控与管理
web server apache tomcat11-22-logging 日志
web server apache tomcat11-23-APR
web server apache tomcat11-24-Virtual Hosting and Tomcat
web server apache tomcat11-25-Advanced IO and Tomcat
web server apache tomcat11-26-maven jars
web server apache tomcat11-27-Security Considerations
web server apache tomcat11-28-Windows Service
web server apache tomcat11-29-Windows Authentication
web server apache tomcat11-30-The Tomcat JDBC Connection Pool
web server apache tomcat11-31-websocket
web server apache tomcat11-32-rewrite
web server apache tomcat11-33-CDI
web server apache tomcat11-34-Ahead of Time compilation support
集成的Windows身份验证通常在内部网络环境中使用,因为它要求执行身份验证的服务器和被验证的用户属于同一个域。为了让用户自动认证,用户使用的客户端机器也必须属于该域。
有几种选项可以在Apache Tomcat中实现集成的Windows身份验证。它们是:
以下部分讨论了每个选项的配置。
Kerberos(集成的Windows身份验证的基础)需要仔细的配置。如果按照本指南中的步骤执行,将会得到一个可工作的配置。重要的是要严格遵循下面的步骤。在配置中几乎没有灵活性。到目前为止的测试已经知道:
配置内置Tomcat支持Windows身份验证需要四个组件:域控制器、托管Tomcat的服务器、希望使用Windows身份验证的Web应用程序和客户端机器。以下各节描述了每个组件所需的配置。
在下面的配置示例中使用的三台机器的名称分别是win-dc01.dev.local(域控制器)、win-tc01.dev.local(Tomcat实例)和win-pc01.dev.local(客户端)。它们都是dev.local域的成员。
注意:为了使用下面的步骤中的密码,必须放宽域密码策略。这在生产环境中不建议。
这些步骤假定服务器已经配置为充当域控制器。将Windows服务器配置为域控制器的步骤不在本说明范围内。配置域控制器以使Tomcat支持Windows身份验证的步骤如下:
setspn -A HTTP/win-tc01.dev.local tc01
ktpass /out c:tomcat.keytab /mapuser tc01@DEV.LOCAL
/princ HTTP/win-tc01.dev.local@DEV.LOCAL
/pass tc01pass /kvno 0
上述步骤已在运行Windows Server 2019 Standard的域控制器上进行了测试,该服务器使用了Windows Server 2016的功能级别,用于森林和域。
这些步骤假定Tomcat和Java 11 JDK/JRE已经安装和配置,并且Tomcat正在以tc01@dev.local用户身份运行。配置Tomcat实例以进行Windows身份验证的步骤如下:
将在域控制器上创建的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-11.0.xconftomcat.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-11.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-11.0.x/conf/tomcat.keytab"
storeKey=true;
};
这个文件的位置可以通过设置java.security.auth.login.config系统属性来改变。使用的LoginModule是特定于JVM的,因此确保指定的LoginModule与使用的JVM匹配。登录配置的名称必须与身份验证阀值使用的值相匹配。
SPNEGO验证器将与任何Realm一起工作,但如果与JNDI Realm一起使用,默认情况下,JNDI Realm将使用用户的委派凭据连接到Active Directory。如果只需要认证的用户名,则可以使用AuthenticatedUserRealm,它将简单地返回基于认证用户名的Principal,而不具有任何角色。
以上步骤已在运行Windows Server 2019 Standard和AdoptOpenJDK 8u232-b09(64位)的Tomcat服务器上进行了测试。
这是使用以下进行测试的:
它应该适用于任何Tomcat版本,尽管建议使用最新的稳定版本。
配置与Windows相同,但有以下更改:
Web应用程序需要在web.xml中配置使用Tomcat特定的SPNEGO身份验证方法(而不是BASIC等)。与其他身份验证器一样,可以通过明确配置身份验证阀和在阀上设置属性来自定义行为。
客户端必须配置为使用Kerberos身份验证。对于Internet Explorer,这意味着确保Tomcat实例位于“本地内部网络”安全域中,并且已配置(工具 > Internet选项 > 高级)启用集成的Windows身份验证。请注意,如果您将客户端和Tomcat实例使用相同的计算机,那么这将无法正常工作,因为Internet Explorer将使用不受支持的NTLM协议。
正确配置Kerberos身份验证可能会有些棘手。以下参考资料可能会有所帮助。
Tomcat用户邮件列表上也始终提供建议。
参与评论
手机查看
返回顶部