我有一个 HTTPD 服务器,它在 Tomcat 服务器前面进行 LDAP 身份验证。我的应用程序驻留在 Tomcat 中。
我正在通过 tomcat 的 AJP 连接器将经过身份验证的请求代理到我的应用程序。现在我想关闭 HTTP 连接器。但是无法访问管理器应用程序(说 403 错误)。
- 当我访问 http://localhost/my_app. 一切正常。
- 当我访问 http://localhost/manager/ 时,它给了我 403 错误。
- HTTP 连接器是开放的,即 http://localhost:port/manager,它是可访问的。
这是一个有根据的猜测。我认为这可能是管理器部分和 Apache 都使用 HTTP 身份验证标头进行身份验证的情况。
当客户端连接到 时
http://localhost/manager
,Apache 要求提供身份验证凭据以进行 LDAP 身份验证。客户端然后将身份验证信息发送到 Apache,Apache 接受请求并将其传递给 Tomcat 的管理器部分。但是,由于凭据不是为管理器定义的凭据,因此它返回 403 错误。
/manager
解决方案是从 LDAP 身份验证中排除部分内容。不幸的是,我不知道如何在 Apache 中做到这一点。基于https://stackoverflow.com/questions/5808206/how-to-fix-tomcat-http-status-403-access-to-the-requested-resource-has-been-den
您似乎缺少角色定义。
在 tomcat-users.xml 文件中添加一个具有角色的用户
manager
: