Tomcat9 管理员,Docker,登录失败
Tomcat 9 Manager, Docker, and the inability to get passed the login
所以我一直遇到无法通过 Tomcat 管理器登录页面的问题。似乎其他人也遇到过这个问题,但他们的 none 解决方案似乎在这种情况下对我有所帮助。以下是我更改过的文件,它们曾帮助我解决这个看似微不足道的问题,这令人沮丧。也许我只是需要一双新鲜的眼睛。
到目前为止,我的问题是登录不会接受我提供给他们的凭据,经理一直给我基本的身份验证登录,直到我取消,它会把我带到 401
页面。我找到的解决方案是从 manager/WEB-INF
中的 web.xml
中删除安全性,但这既不安全也不是好事。任何想法表示赞赏!
tomcat-users.xml:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin, manager-gui, manager-status, admin-gui"/>
</tomcat-users>
webapps/manager/META-INF/context.xml:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter$LruCache(?:$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
conf/{引擎}/{主机}/manager.xml:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
</Context>
这一切都在 docker 图像中运行。当我 bash 里面所有需要的文件都在那里。有没有我错过的配置,我需要删除的东西?我试过在 /manager/META-INF/context.xml
中注释掉 Valve
但也没有成功。感谢您的观看!
是的,我是对的。我在名为 Realm
的 server.xml
中缺少 tomcat-users.xml
的钩子。
您可以将其添加到 Engine
或 Host
元素中,如下所示:
<Engine>
<!-- THIS GUY -->
<Realm className="org.apache.catalina.realm.MemoryRealm" />
<Host ...>
<!-- OR ADD IT HERE DONT DO BOTH-->
<Realm className="org.apache.catalina.realm.MemoryRealm" />
...
</Host>
</Engine>
Hopefully some poor soul stumbles upon this and it helps.
所以我一直遇到无法通过 Tomcat 管理器登录页面的问题。似乎其他人也遇到过这个问题,但他们的 none 解决方案似乎在这种情况下对我有所帮助。以下是我更改过的文件,它们曾帮助我解决这个看似微不足道的问题,这令人沮丧。也许我只是需要一双新鲜的眼睛。
到目前为止,我的问题是登录不会接受我提供给他们的凭据,经理一直给我基本的身份验证登录,直到我取消,它会把我带到 401
页面。我找到的解决方案是从 manager/WEB-INF
中的 web.xml
中删除安全性,但这既不安全也不是好事。任何想法表示赞赏!
tomcat-users.xml:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin, manager-gui, manager-status, admin-gui"/>
</tomcat-users>
webapps/manager/META-INF/context.xml:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="\d+\.\d+\.\d+\.\d+" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter$LruCache(?:$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
conf/{引擎}/{主机}/manager.xml:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
</Context>
这一切都在 docker 图像中运行。当我 bash 里面所有需要的文件都在那里。有没有我错过的配置,我需要删除的东西?我试过在 /manager/META-INF/context.xml
中注释掉 Valve
但也没有成功。感谢您的观看!
是的,我是对的。我在名为 Realm
的 server.xml
中缺少 tomcat-users.xml
的钩子。
您可以将其添加到 Engine
或 Host
元素中,如下所示:
<Engine>
<!-- THIS GUY -->
<Realm className="org.apache.catalina.realm.MemoryRealm" />
<Host ...>
<!-- OR ADD IT HERE DONT DO BOTH-->
<Realm className="org.apache.catalina.realm.MemoryRealm" />
...
</Host>
</Engine>
Hopefully some poor soul stumbles upon this and it helps.