为什么你的Manager登录不成功?

也许,Tomcat用户都遇到过这个问题:

想使用Manager应用管理应用,查看服务器状态,但是却在登录框前困住了手脚。按照页面上的提示,增加了 tomcat-users.xml 中的配置,用户、角色配置了一大堆,却还是不成功。

群里有许多人问到过关于上面提到的这个问题。所以这次把它写下来,便于帮助以后遇到类似问题的人。

下面我们来看Manager的登录问题。

配置

我们前面的文章《你可能真的不了解的Basic认证》以及《Tomcat单点登录配置及源码分析》提到过Web应用中的验证方式,其中提到过Manager的验证使用的是BASIC方式,是在web.xml中进行配置的,方式类似于下面的内容,其中也声明了需要的角色,和保护的资源等。

在访问manager应用时,如果我们在弹出输入用户名和密码的框时,选择了取消,会定向到401的页面。如果认真的看上面的提示信息,其实完全可以解决问题。

此时页面上的信息类似下面的样子:


Tomcat很贴心的把重要的信息都给框了起来。而我们一般情况下,在本地测试的时候,只需要按照第二个红框中的内容,增加tomcat-users.xml就OK了。甚至只需要把框中的内容粘贴到对应文件中即可。

之所以在这个文件中增加,是因为Tomcat的Resource,在server.xml中配置时,使用的就是这个文件中指定的内容:


在tomcat-users.xml中增加的下面这些内容,


实质上是在启动时Digester根据配置,创建了对应的RoleUser。这里需要提醒一点的是,这里user中的roles内指定的内容,可以不需要在上面先声明,例如上面图中的manager-gui这个role可以不单独声明,代码中解析的时候,会自动创建。代码比较简单,就不贴了。

理论上这个时候就可以用了。但是

如果你的Tomcat是部署在远程的机器上,而你在本地访问远程的manager应用,那么问题来了!

是否有同学还记得我前面写过的这篇文章:《如何避免Manager应用被人利用

Tomcat为了安全起见,对于manager这种应用,增加了只允许本地访问的限制。所以,平时你在本地测试的时候没有遇到问题,但是远程部署时出问题了。

解决方式,前面文章里如果避免被远程访问的配置就是这个,401页面里提示也写的比较明白。在manager应用的META-INF中的context.xml中,有这样的配置:


去掉之后,就OK了。当然,最好是测试环境,生产环境还是限制一下比较好。

相关阅读

Tomcat单点登录配置及源码分析

如何避免Manager应用被人利用

Tomcat的Valve介绍

扫描或长按下方二维码,即可关注,发现更多精彩文章!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值