3

由于我使用 Tomcat6 作为 servlet 容器运行 Java,我发现使用Tomcat JNDIRealm 功能是合适的,这样 LDAP 用户无需任何额外的努力就可以登录到我的站点。我使用的 LDAP 服务器是Ubuntu 上的 OpenLDAP

最重要的是,我的登录页面使用基于表单的身份验证通过https 连接

我发现了两个非常好的通过 LDAP 进行身份验证的用户示例,herehere,它们都实现了我觉得我几乎实现的目标。为什么几乎达到了?

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

当我的凭据良好并且我成功进行身份验证时,我开始为站点中的所有 url 获取 403 。除非我重新启动 Tomcat,否则我无法删除 403 错误(即使是登录页面!)。

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

请注意,基于 Tomcat 的身份验证可以完美运行,因为该角色很容易附加到tomcat-users.xml. 因此,我认为一旦成功通过身份验证,从 LDAP 获取经过身份验证的用户的角色是一个问题。

TL/DR

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

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

4

1 回答 1

1

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

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

于 2012-06-25T22:37:45.257 回答