我有一台 HTTPD 服务器,它在 Tomcat 服务器前面执行 LDAP 身份验证。我的应用程序驻留在 Tomcat 中。
我正在通过 tomcat 的 AJP 连接器将经过身份验证的请求代理到我的应用程序。现在我想关闭 HTTP 连接器。但管理器应用程序无法访问(显示 403 错误)。
- 当我访问 http://localhost/my_app 时。一切正常。
- 当我访问 http://localhost/manager/ 时,出现 403 错误。
- 打开 HTTP 连接器(即 http://localhost:port/manager)后,即可访问。
答案1
这是有根据的猜测。我认为这可能是 Manager 部分和 Apache 都使用 HTTP 身份验证标头进行身份验证的情况。
当客户端连接到 时http://localhost/manager
,Apache 会要求提供 LDAP 身份验证的身份验证凭据。然后,客户端会将身份验证信息发送给 Apache,Apache 接受请求并将其传递给 Tomcat 的管理器部分。
但是,由于凭证不是为经理定义的,因此它返回 403 错误。
解决方案是/manager
从 LDAP 身份验证中排除部分内容。不幸的是,我不知道如何在 Apache 中做到这一点。
答案2
看起来你缺少一个角色定义。
在 tomcat-users.xml 文件中添加具有以下角色的用户manager
:
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>