Java - LDAP:为什么我们需要用于LDAP绑定的硬编码管理员用户凭据

时间:2018-03-01 16:57:48

标签: java spring-boot ldap spring-ldap spring-security-ldap

我正在编写一个Spring Boot应用程序,我想根据LDAP服务器对用户进行身份验证。我看过解决方案和API documentation,其中管理员用户凭据在代码中是硬编码的。

我的问题是:为什么我不能简单地使用我想要首先验证的用户的凭据?如果绑定成功,我可以确认身份验证并获取他们所属的组列表。我不应该这样做有充分的理由吗?

2 个答案:

答案 0 :(得分:1)

LDAP示例通常包括管理员用户的原因是因为LDAP并不总是用于身份验证(即,确定特定用户名/密码是否有效),但有时仅用于授权(即,检索用户&# 39;分配的组,以确定他们是否应该有权访问受保护的资源),当在其他地方完成认证部分时(例如,通过Kerberos SSO)。如果您的唯一用例是绑定,那么是的,您不应该需要管理员用户。

编辑:但有一点需要注意 - LDAP服务器可能对绑定有限制(例如,请参阅this question),在这种情况下,无论如何,您都需要拥有管理员用户。

答案 1 :(得分:0)

通常,您希望拥有一个特定于该应用程序的服务帐户:

  1. 执行绑定
  2. 查找用户
  3. 返回用户的群组成员资格
  4. 应用程序根据结果授权用户
  5. 这有助于管理权威后端的访问控制,因为您只需要为服务帐户而不是每个用户创建ACI。它也更安全,因为您授予单个帐户的权限,从而降低了错误配置单个用户权限的可能性。