为了启用在端口 8999 上运行的某些 Web 服务的管理器页面,我已将管理器目录从 webapps 复制到端口 8999 的应用程序库,即 webapps2。
管理器页面在端口 8999 上打开正常,但无法使用 tomcat-users.xml 中定义的凭据进行身份验证。
8999 上运行的服务配置完成。
Tomcat 版本 - 9
<Service name="Service8999">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Connector port="8999" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/keystore_new.jks"
certificateKeystorePassword='dvjnvjk8d7sv8sd98'/>
</SSLHostConfig>
</Connector>
<Engine name="Service8999" defaultHost="localhost">
<Host name="localhost" appBase="Service8999"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
答案1
由于该页面未显示 HTTP 404,这意味着管理器页面正在运行并工作。
添加到元素
server.xml
之后<Listener/>
和<Service/>
元素之前(从 default 复制apache-tomcat-9.0.20/conf/server.xml
):<GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources>
您需要添加具有密码和角色的用户
manager-gui
才能tomcat-users.xml
访问该/manager/html
页面。一个简约的样本
tomcat-users.xml
:<?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <user username="admin" password="secret" roles="manager-gui"/> </tomcat-users>
答案2
你的server.xml
无效。你不能将 a 嵌套<Realm.../>
在 a 内<Service... />
。您只能将 a 嵌套<Realm.../>
在<Engine.../>
, <Host.../>
or内<Context.../>
。