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详细信息,因此无法进一步发表评论。
使用/ *在整个站点上设置安全权限是错误的。 您需要排除登录页面,可能还需要首页和忘记密码页面,可能需要更多。