Java Tomcat LDAP身份验证

时间:2012-06-25 22:26:04

标签: java tomcat ldap tomcat6 openldap

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

除此之外,我在[{3}}上使用form-based authentication登录页面。

我通过LDAP https connectionhere找到了两个非常好的身份验证用户示例,它们都实现了我几乎实现的目标。为什么几乎实现了?

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

当我的凭据良好并且我成功验证后,我开始在网站中获得 403 for all urls 。我无法删除403错误(甚至不是登录页面!),除非我重新启动Tomcat。

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

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

TL / DR

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

更新:我粘贴了LDAP数据Basic LDAP structure

1 个答案:

答案 0 :(得分:1)

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

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

相关问题