一尘不染

Java Tomcat LDAP认证

tomcat

由于我将Java与Tomcat6作为servlet容器一起运行,因此我发现使用Tomcat
JNDIRealm功能
是合适的,以便LDAP用户无需任何额外的努力即可登录到我的站点。我正在使用的LDAP服务器是Ubuntu上的OpenLDAP

在此之上我使用的登录页面基于表单的认证过的https连接

我在这里这里找到了两个非常好的通过LDAP进行身份验证用户的示例,它们均实现了我几乎实现的目标。为什么
几乎 实现了?

当我尝试登录了错误的凭据,我适当地发送到<form-error-page>login-failed.html在我的情况。

如果我的凭据很好,并且我成功进行了身份验证 ,那么 对于该站点中的 所有URL ,我都会开始获得 403
。除非重新启动Tomcat,否则我无法删除403错误(甚至登录页面也无法!)。

我怀疑原因是因为我roles在领域或其他配置文件中未正确设置。为了简洁起见,我将相关的配置文件摘录放在pastebin上

请注意,基于Tomcat的身份验证可以完美地工作,因为该角色可以轻松地附加到中的用户tomcat- users.xml。因此,我相信一旦成功通过LDAP从LDAP获得已认证用户的角色是一个问题。

TL / DR

将Tomcat连接到LDAP身份验证时出现配置问题。正确获取了用户数据,但没有获取用户角色。LDAP日志消息可应要求提供;)

更新 :我在这里粘贴了LDAP数据。


阅读 322

收藏
2020-06-16

共1个答案

一尘不染

那是正确的。JNDIRealm找不到您的LDAP角色。您需要在Tomcat外部测试角色搜索字符串,以确保它产生您认为应该产生的结果。由于您未提供任何LDAP详细信息,因此无法进一步评论。

使用/ *在整个站点上设置安全权限是一个错误。您需要排除登录页面,并且可能还要排除首页和忘记密码页面(可能更多),使其不再需要角色。

2020-06-16