1

I have an instance of Tomcat 8.0.9, running on GNU/Linux 2.6.32-642.6.2.e16.x86_64, that responds with "401 Unauthorized" when I try to access the manager UI, no matter what I try.

I know Tomcat is running, because I get that page.

I know it is that specific instance of Tomcat, because if I shut it down and revisit the URL (https: //host.name:port/manager/html), I get a connection refused.

The browser doesn't even prompt me for username and password; it just goes straight to the "401 Unauthorized" page.

The server's catalina.out log even reports that it has deployed the manager webapp (paraphrased):

*.a few seconds ago* INFO [localhost-startStop-1] o.a.c.s.H.deployDirectory Deploying web application directory /path/to/webapps/manager
*milliseconds later* INFO [localhost-startStop-1] o.a.c.s.H.deployDirectory Deployment of web application directory /path/to/webapps/manager has finished in 22 ms

I started with the Apache docs (https: //host.name:port/docs/manager-howto.html), and then with several versions of this question on SO for troubleshooting, including one that seems to have the most answers. Since I've never used the manager before, my go-to theory is that 'obvious' was exactly what I was missing; however, I tried all of the obvious stuff below:

I restarted Tomcat, multiple times in this process, verifying that a reload of the URL was indeed firing a connection refused with the server stopped, and then back to the 401 error with the server started.

I added admin-gui to the user's roles:

<role rolename="admin-gui" />
<role rolename="manager-gui" />
<user username="tomcat" password="s3cret" roles="admin-gui,manager-gui" />

The XML above is not inside a comment block - if I edit it in Gvim with syntax highlighting turned on, this is very obvious.

tomcat-users.xml is owned by tomcat, and is readable (it's mode 775, in fact). I know it's being read, because if I add nonsense elements to it, catalina.out reports this on startup.

I also added the other role to tomcat-users.xml, just in case (manager-jmx, admin-script, etc.). (I'm still not sure what's supposed to happen if you left those out, misspelled them, etc. I imagine the manager webapp wouldn't recognize rolenames outside its specific set, but naturally I can't confirm this yet.)

The following element exists in server.xml, inside an Engine element:

<Realm className="org.apache.catalina.realm.LockOutRealm">
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
</Realm>

In case it's relevant, there's also this, earlier in server.xml:

<GlobalNamingResources>
  <Resource auth="Container" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
</GlobalNamingResources>

In the Tomcat startup script, CATALINA_HOME points to the exact install path of Tomcat. There is no TOMCAT_HOME or JAVA_HOME, but JRE_HOME points to a symbolic link that points to an actual Java install (I followed that link and confirmed).

In the manager webapp, META-INF/context.xml, the Valve element is commented out.

Is there even a report of why I'm unauthorized, that gives me more information? I've tried scouring the manager webapp directory in the hopes there was yet another log there. (There isn't.)

Community
  • 1
  • 1
Paul Brinkley
  • 6,283
  • 3
  • 24
  • 33
  • If you run in an incognito/private window is it the same response? I've been bitten by browser caches in cases like this. – stdunbar Jan 09 '17 at 20:18
  • I just tried to open an incognito window in Chrome and found it's greyed out. ...hmmm. So, I think, what happens in Firefox? ...and the manager not only asks for username/password, but it accepts it, and now I'm in the manager app, on Firefox. So, a Chrome problem maybe? – Paul Brinkley Jan 09 '17 at 20:34
  • Another test would be to try to clear your cache in Chrome - not sure why they incognito is greyed out unless it some sort of security policy thing. – stdunbar Jan 09 '17 at 21:26

0 Answers0