当前位置: 首页 > news >正文

LDAP身份验证前世今生

轻量级目录访问协议(LDAP)是专为目录服务开发的核心身份验证协议之一。LDAP 历来被用作信息数据库,主要存储以下信息:

● 用户

● 关于这些用户的属性

● 组成员特权

● ……

但 LDAP 认证是什么,它是如何工作的?本文将回答这些问题,并阐述 NingDS 身份目录云平台是如何将 LDAP 身份认证作为云服务来提供的。


01 LDAP的起源

在我们定义 LDAP 身份认证是什么之前,我们应该谈谈 LDAP 作为一个整体的重要性。根据 LDAP 协议的共同发明者Tim Howes的说法,LDAP 诞生于密歇根大学,Tim当时是一名研究生,最初是为了替换 DAP(目录访问协议)并为X.500目录提供低开销的访问——LDAP最终将取代该目录服务。

LDAP 自1993年首次推出以来一直非常成功。实际上,LDAP.v3 在1997年成为目录服务的互联网标准。LDAP 还启发了 OpenLDAP 的创建,这是一个领先的开源目录服务平台。

这反过来又催生了许多其他基于LDAP的开源解决方案(如389目录、Apache 目录服务),并为微软 Active Directory(AD)的创建奠定了基础。LDAP 甚至是现代云目录(如NingDS)的核心方面,提供云LDAP。因此,尽管它有些年头了,但可以肯定的是,未来几年 LDAP 认证将成为身份管理的基本要素。


02 基本的LDAP认证和常见挑战

  

LDAP 目录服务器使用灵活的架构,意味着它们可以用企业需要的格式来存储各种属性,包括用户凭据、电话号码、组关联等。因此,常见的 LDAP 用例是存储核心用户身份。

由于 LDAP 目录可以存储用户数据和凭证,因此它们可以作为 LDAP 身份认证的真实来源。在 LDAP 身份认证过程中,用户通过系统或应用输入其凭证,然后将其与存储在 LDAP 目录数据库中的凭据进行比较。如果匹配,用户将通过身份认证并被授予访问权限。


03 客户端和服务器之间的LDAP认证是如何工作的?

让我们来分解下 LDAP 的认证过程。

LDAP 身份认证是通过绑定操作完成的,它遵循客户端/服务器模型。通常,客户端是用户访问的支持 LDAP 协议的系统或应用,服务器是 LDAP 目录数据库。

要进行身份验证,客户端会向 LDAP 服务器发送绑定请求,以及用户的标识符(即用户名或电子邮件)和密码,这些信息是在用户输入其凭据时由客户端获取的。如果用户提交的凭据与存储在 LDAP 数据库中的核心用户身份相关联的凭据匹配,则对用户进行身份验证,并通过客户端获得对所请求的资源或信息的访问权限。如果发送的凭据不匹配,则绑定失败并拒绝用户访问。

注意:企业应采取一些预防措施来保护他们的 LDAP 身份认证过程,例如禁止匿名 LDAP绑定和加密数据传输。


04 实施LDAP需要什么?

虽然 LDAP 身份认证已被证明是有效的,但为了满足现代企业的身份管理需求而实施和定制基于 LDAP 的基础设施所需的时间和精力可能会很大。历史上,LDAP 也是一个本地实现,需要专用服务器,且必须集成到企业的整体身份管理基础设施中(历史上也是本地实现)。

这种类型的设置可能很难实现,特别是对于规模较小或以云端业务为主的IT企业。毕竟,大多数现代企业都希望将其整个本地身份管理基础设施迁移到云中。然而,随着更多企业用云方案替换传统的本地基础设施,问题就变成了:“如何在没有任何本地设备的情况下提供 LDAP 身份验证?”


05 基于云的LDAP身份认证

幸运的是,基于云的目录和开放目录平台已经出现,它们可以提供基于云的 LDAP 身份验证服务。例如,NingDS 身份目录云不仅提供基于云的 LDAP 身份验证,还可以安全地管理和连接用户到系统、应用程序、文件和网络,而无需任何本地设施。这是因为 NingDS 采用了开放目录的方法,企业可以按照自己的方式管理工作。NingDS 可以作为你的核心身份提供商,或与其他提供商无缝集成,通过利用多个协议(LDAP、SAML、RADIUS、SSH、OAuth等)连接用户到他们所需的所有资源,并兼容与操作系统不相关的设备。最终的结果是,IT 企业可以自由地利用最好的资源,通过 NingDS 他们可以有效地管理尽可能少或尽可能多的资源。

此外,NingDS 不仅包括云LDAP,它还允许 IT 管理员使用多因素身份验证(MFA)、单点登录SSO、无线 WiFi 网络认证以及完整的云目录服务等所有功能。

http://www.dtcms.com/a/312743.html

相关文章:

  • Corrosion2靶机练习笔记
  • 大语言模型的解码策略:贪婪解码与波束搜索
  • Coze 打通飞书多维表格,实现数据增删改查操作实战详解
  • kraft的设计与实现
  • 嵌入式——数据结构:单向链表的函数创建
  • Linux系统之mcookie 命令详解
  • Java小红书源码1:1还原uniapp_仿小红书源码
  • Nginx负载均衡配置
  • STM32 串口发送
  • sqli-labs:Less-25关卡详细解析
  • c++ --- priority_queue的使用以及简单实现
  • Navicat连接远程服务器上的mysql
  • Java Stream API 编程实战
  • Java学习第一百部分——Kafka
  • Python批处理深度解析:构建高效大规模数据处理系统
  • kubectl基础操作实战-k8s集群安装
  • IO流-字节流-FileInputStream
  • 【设计模式】0.UML类图
  • Python特性工厂函数详解:优雅管理属性验证
  • 【技术干货】Matplotlib深度集成PyQt5实战:动态_静态图表一站式解决方案
  • 嵌入式学习-(李宏毅)机器学习(5)-day32
  • 集合篇-根据字符串出现频率排序
  • 每日面试题20:spring和spring boot的区别
  • 【MCAL】AUTOSAR架构下SPI数据同步收发具体实现
  • 《深入浅出RabbitMQ:从零基础到面试通关》
  • go 中的 fmt 占位符
  • LUA脚本语言
  • 【svg】
  • 人工智能之数学基础:几何型(连续型)随机事件概率
  • 2、docker容器命令 | 信息查看