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



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

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

通常,

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

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

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

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

编辑:不过,有一个警告 - LDAP服务器可能对绑定有限制(例如,请参阅此问题(,在这种情况下,无论如何您都需要有一个管理员用户。

最新更新