# LDAP

参考资料:

LDAP(Lightweight Directory Access Protocol)即轻量目录访问协议,是一个开放、广泛被使用的工业标准(IEFT、RFC),在1993年就被提出。企业级软件也通常具备"支持LDAP"的功能,比如Jira, Confluence, openVPN等,企业也经常采用LDAP服务器来作为企业的认证源和数据源。当LDAP作为数据源时,对外通过LDAP Search以及LDAP Modify协议来进行数据同步;当作为认证源时,通过LDAP Bind协议来进行身份认证。

LDAPRelated

在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。每个条目有自己的唯一可区别的名称(DN)。下面是它的一些重要概念解析:

LDAPConcept

# 作为SSO

参考资料:

大家对LDAP最常见的一个误解就是用LDAP实现SSO(Single Sign On),单点登陆是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它本质上是BS架构的,需要借助浏览器才能实现SSO功能,而LDAP更适合CS架构,通过LDAP其实并不能做到SSO,用户必须还得再次输入密码, LDAP只是提供了统一管理用户/密码的功能(即认证源)。

SSO 仅仅是一种架构,一种设计,而 CAS 则是实现 SSO 的一种手段。两者是抽象与具体的关系。CAS即Central Authentication Service模型(中央式认证服务),该协议是为应用提供可信身份认证的单点登录系统,最初是由耶鲁大学开发的。CAS 包含两个部分:CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

# LDAP服务器

常见的LDAP服务器有四种:

  1. Active Directory:Active Directory(活动目录)是微软Windows Server中,负责架构中大型网路环境的集中式目录管理服务(Directory Services)。
  2. OpenLDAP:是最著名的LDAP服务器,您可以在许多Linux发行版中找到它们。 它是在OpenLdap公共许可证下发布的,具有良好的文档说明和全球商业支持 。
  3. Apache Directory Studio:ApacheDS遵循LDAP协议的最新版本,并且已在Apache许可下发布。 尽管可以使用OpenLDAP命令行,但是ApacheDS与客户端应用程序Apache Directory Studio一起提供,它使您可以轻松地管理用户和组。
  4. 389目录服务器:是Red Hat产品,由GPL许可的,包含证书自动性,身份验证以及与Active Directory集成之类的更多服务。主要产品有FreeIPA (opens new window)

# SSO服务器

单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。

潜在可研究的SSO服务器如下:

# LDAP协议

参考资料:

# LDAP实战

目前主要可用的LDAP客户端有两个:

主要用的LDAP服务器端有三个:

# OpenLDAP

目前容器中比较好的是bitnami/openldap (opens new window),使用客户端登陆时,用户名是

cn=admin,dc=example,dc=org

# ApacheDirectory

使用客户端连接时,默认用户名和密码是:

uid=admin,ou=system secret

# LDAP的URL

LDAP连接服务器的字符串格式为

ldap://servername/DN

DN(Distinguished Name)包含三个属性:

  • CN (Common Name)
  • OU (Organizational Unit)
  • DC (Domain Component)

比如CN=test,OU=developer,DC=example,DC=org。它的含义是example.org中的developer组织的一个test用户名。