authentication - 跨受信任域的 LDAP 用户身份验证

标签 authentication active-directory ldap dns trust

我的应用程序通过 LDAP(通常是 Active Directory)定义授权用户:

  • 客户定义了一个 LDAP 服务器 (TreeA) 和一个组 (GroupA)。 GroupA 中的任何用户都可以使用该应用程序。
  • 在登录时,用户发送他们的用户名和密码——如果使用他们的凭据绑定(bind)到 LDAP TreeA,并且他们的用户帐户在 GroupA 中,他们很高兴

  • 我遇到过两个 Active Directory 相互信任的情况,并且 TreeA 中指定的 GroupA 包含来自 TreeB 的用户。所以第 2 步失败了,因为我正在尝试针对 TreeA 对 UserB(来自 TreeB)进行身份验证。

    该应用程序可以访问 TreeA,所以我想它可以查看 GroupA 并在那里看到 UserB。但是它怎么知道它需要向 TreeB 发送绑定(bind)请求来验证用户名和密码呢?

    有没有更好的方法来解决这个问题?
    由于存在信任关系,因此对 TreeA 的此类绑定(bind)请求是否应该自动转发给 TreeB?

    最佳答案

    可能是您在 LDAP 服务器 (TreeA) 上遇到了配置问题。您写道,TreeA 和 TreeB 之间存在信任,因此您可以将 UserB(来自 TreeB)添加为 TreeA 中 GroupA 的成员。如果你能做到这一点,那么你已经成功地在 TreeA 和 TreeB 之间建立了正确方向的信任。您应该理解,这种信任仅意味着 Active Directory B 仅验证用户密码,但默认情况下 UserB 将无权访问 Active Directory A 中的任何资源。 UserB 无权将 LDAP 绑定(bind)到服务器 A。在这种情况下,问题将通过授予 UserB 对服务器 A 的远程登录权限和对 GroupA 的读取权限以及可能对 GroupA 所在的 OU 的读取权限来解决。你可以试试Insight for Active Directory监控 AD 访问以定位权限问题。

    您的问题的其他可能原因可能是您用于 LDAP 访问的 API 的使用。在您的问题中,您没有写任何有关 API 的信息。你使用 Win32 API 像 ldap_bind_s或使用 DirectoryEntry在.NET 中?在这两种情况下,您要么在绑定(bind)期间显式使用域名和帐户名(对于 UserB),要么使用 null,这可能很重要。用于用户当前用户凭据的名称和密码。

    使用 TreeA 的固定帐户对 TreeA 的所有访问(也用于对 UserB 的测试)也可以解决问题,但它可能只是某种应用程序使用。

    无论如何,您的问题中的更多信息可以缩小问题和解决问题的方法。

    关于authentication - 跨受信任域的 LDAP 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5051381/

    相关文章:

    浏览器内客户端 API 的身份验证?

    c# - 在事件目录中查找计算机

    spring-mvc - LDAP - 上下文源的 AD 用户名密码配置

    active-directory - 查询列出某个组的所有用户

    c# - [C#、.NET] : Validating users via LDAP through IdentityServer3

    javascript - PhantomJS 网站需要按键进行身份验证

    authentication - 禁用SSH密码认证

    authentication - Salesforce 作为 OpenId 身份验证提供商

    asp.net-mvc-5 - 带有 LDAP 身份验证的 OWIN

    通过 LDAP over SSL (LDAPS) 的 ASP.NET 样板身份验证