authentication - 身份验证是如何建立在 LDAP 上的?

标签 authentication ldap

我多次在基于 LDAP 的应用程序中集成身份验证。

我只是将配置: URL(如 ldap.company.com:389 )、搜索库(如 dc=europe,dc=com )和查询模式(如 (uid=$) )放入库和框架。

但我总是想知道库和框架真正通过提供的登录名/密码对用户进行身份验证。

似乎 LDAP 本身具有三种身份验证类型 - 匿名、纯密码和 SASL。因此,有时为了进行身份验证,您需要应用程序登录名/密码才能访问 LDAP 服务。

我不确定这个博客是否回答了这个问题:http://thecarlhall.wordpress.com/2011/01/04/ldap-authentication-authorization-dissected-and-digested/ :

  • 获取到 LDAP 服务器的连接。
  • 绑定(bind)为应用程序用户。
  • 搜索要认证的用户的 DN(专有名称)。
  • 绑定(bind)为要使用步骤 3 中的 DN 进行身份验证的用户。

  • 是对的吗?

    这可以概括为(作为命令行中的实验):
    $ ldapsearch -x -h ldap.company.com -s sub -b 'dc=europe,dc=com' "uid=XYZ"
    ....
    dn: uid=XYZ,dc=sales,dc=europe,dc=com
    ...
    $ ldapsearch -W -h ldap.company.com -D 'uid=XYZ,dc=sales,dc=europe,dc=com' \
        -s sub -b 'dc=europe,dc=com' "uid=XYZ"
    

    是否有任何其他身份验证模式,例如使用特定 DN 属性值作为用户密码?或 userPassword那是属性本身吗?

    最佳答案

    你的四个步骤基本正确。 SASL 是一种外部身份验证机制,其中身份验证“移交”给 SASL 机制。 RFC 4513说明身份验证和安全机制。
    -吉姆

    关于authentication - 身份验证是如何建立在 LDAP 上的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27571558/

    相关文章:

    java - 为 JSP 创建注销链接

    c# - 在 Asp.Net Core Web API 中使用 MassTransit 消息时如何对用户进行身份验证?

    c# - 从 Active Directory 获取用户组时出错,在单声道中使用 LDAP

    java - 使用未绑定(bind) ID 通过 SSL 绑定(bind)到 Active Directory

    php - 创建用户,但使用 PHP 检查 Active Directory 中是否存在

    javascript - Meteor 中 Uncaught Error : Must set options. 密码

    security - 如何防止暴力攻击?

    javascript - 有没有办法使用 Web 身份验证 API (WebAuthn) 获取 U2F 设备的稳定唯一标识符?

    php - LDAP 适用于 PHP CLI 但不能通过 apache

    active-directory - 一般来说,对于 Active Directory,大多数公司使用什么作为人员的唯一标识符?