Java Tomcat LDAP身份validation

由于我使用Tomcat6作为servlet容器运行Java,因此我发现使用Tomcat JNDIRealmfunction是合适的,这样LDAP用户就可以登录我的站点而无需任何额外的工作。 我正在使用的LDAP服务器是Ubuntu上的OpenLDAP 。

除此之外,我还通过https连接使用基于表单的身份validation登录页面。

我通过LDAP找到了两个非常好的身份validation用户示例, 在这里和这里 ,它们都实现了我几乎实现的目标。 为何几乎实现?

当我尝试使用错误的凭据登录时,我已适当地发送到login-failed.html

当我的凭据良好并且我成功进行身份validation后,我开始网站中的所有url获取403 。 我无法删除403错误(甚至不是登录页面!),除非我重新启动Tomcat。

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

  • Tomcat server.xml
  • 相关的tomcat-users.xml部分
  • 相关的web.xml部分
  • 基本的LDAP结构 ,破折号表示树结构

请注意,基于Tomcat的auth工作正常,因为角色很容易附加到tomcat-users.xml的用户。 因此,我认为在成功通过身份validation后,从LDAP获取经过身份validation的用户角色是一个问题。

TL / DR

我在将Tomcat连接到LDAP身份validation时遇到配置问题。 用户数据正确获取,但不是用户的角色。 可根据要求提供LDAP日志消息;)

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

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

使用/ *在整个站点上设置安全权限是错误的。 您需要排除登录页面,可能还需要首页和忘记密码页面,可能需要更多。