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

问题描述 投票:0回答:2

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

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

java spring-boot ldap spring-ldap spring-security-ldap
2个回答
1
投票

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

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


0
投票

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

  1. 执行绑定
  2. 查找用户
  3. 返回用户的组成员身份
  4. 应用程序授权用户根据结果

这有助于管理权威后端的访问控制,因为您只需为服务帐户而不是每个用户创建ACI。它也更安全,因为您授予单个帐户的权限,从而降低了错误配置单个用户权限的可能性。

© www.soinside.com 2019 - 2024. All rights reserved.