用户认证需要LDAP绑定账号吗?

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

我正在为我的组织创建一个门户,我希望用户使用其组织帐户的 ID 和密码登录该门户。

为此,我使用 Java 进行 LDAP 身份验证。

看了很多文章,发现认证步骤如下:

  1. 使用某些绑定或技术帐户绑定到 LDAP 服务器

  2. 在LDAP服务器中搜索正在尝试登录的用户详细信息

  3. 尝试使用用户的专有名称和密码再次绑定到服务器。

问题1:就这些了吗?

上述过程是否完全正确,还是因为我是新手程序员而遗漏了一些信息? 绑定在概念上意味着什么?

问题2:为什么要使用绑定账户?

请问绑定账号需要什么?如果我直接尝试将 LDAP 服务器与用户的凭据绑定,如果成功,那么我可以给他访问权限吗?

我有

JXplorer
工具,我可以使用我自己组织的凭据连接到 LDAP 服务器。所以我在想什么需要首先使用其他帐户绑定到 LDAP 服务器?

authentication active-directory ldap
2个回答
12
投票

问题1-以上过程是否完全正确

是的。

问题2-我想知道什么情况下需要绑定账号?

是的。您需要搜索目录才能找到用户 DN,并且您不希望一般未经身份验证的公众能够搜索该目录。

如果我直接尝试将 ldap 服务器与用户的凭据绑定,如果成功,那么我可以给他访问权限吗?

您没有用户的凭据。你有他的登录名、电子邮件地址、CN,或者他用来识别自己身份的东西,但这只是某些条目的属性。您需要找到该条目并获取其 DN 以进行身份验证。

我有 jexplorer 工具,可以使用我自己组织的凭据连接到 LDAP 服务器。所以我在想首先需要使用其他帐户绑定到 LDAP 服务器吗?

见上文。您不希望用户必须像使用 JXplorer 那样记住他的整个 DN。


1
投票

问题 #2 的原因:(为什么使用绑定帐户,而不是当前用户凭据)

  1. 在授权场景中,例如为了获取当前用户的组列表,您可能没有当前用户密码。因此您无法进行身份验证。

  2. 您可能需要将某些组的用户从 LDAP 服务器同步到您的应用程序数据库,例如按小时计算。如果没有绑定用户,您将没有凭据来异步执行此操作。

  3. 您的 LDAP 服务器可能有限制,当前用户可能无权导航您需要的某些路径。只有绑定用户帐户才有该访问权限。

  4. 与路径类似,当前用户可能没有对绑定用户可能拥有的某些属性的读/写访问权限。

  5. 您的 LDAP 服务器需要当前用户的完整 DN 才能进行身份验证。如果您的应用程序无法预测该路径,则查找此 dn 需要执行 LDAP 服务器可能不允许匿名的搜索操作。因此你需要一个绑定用户。

除了上述场景之外,如果只需使用当前用户进行绑定并一步运行授权检查,我认为不需要绑定用户。

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