# LDAP
参考资料:
LDAP(Lightweight Directory Access Protocol)即轻量目录访问协议,是一个开放、广泛被使用的工业标准(IEFT、RFC),在1993年就被提出。企业级软件也通常具备"支持LDAP"的功能,比如Jira, Confluence, openVPN等,企业也经常采用LDAP服务器来作为企业的认证源和数据源。当LDAP作为数据源时,对外通过LDAP Search以及LDAP Modify协议来进行数据同步;当作为认证源时,通过LDAP Bind协议来进行身份认证。
在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。每个条目有自己的唯一可区别的名称(DN)。下面是它的一些重要概念解析:
# 作为SSO
参考资料:
- SSO和LDAP (opens new window)
- Apereo CAS - Identity & Single Sign-On (opens new window)
- SSO 单点登录 (opens new window)
- SSO之CAS单点登录实例演示 (opens new window)
- 基于spring的简单SSO单点登录 (opens new window)
- 单点登录SSO、OAuth、LDAP、CAS的流程与应用 (opens new window)
大家对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服务器有四种:
- Active Directory:Active Directory(活动目录)是微软Windows Server中,负责架构中大型网路环境的集中式目录管理服务(Directory Services)。
- OpenLDAP:是最著名的LDAP服务器,您可以在许多Linux发行版中找到它们。 它是在OpenLdap公共许可证下发布的,具有良好的文档说明和全球商业支持 。
- Apache Directory Studio:ApacheDS遵循LDAP协议的最新版本,并且已在Apache许可下发布。 尽管可以使用OpenLDAP命令行,但是ApacheDS与客户端应用程序Apache Directory Studio一起提供,它使您可以轻松地管理用户和组。
- 389目录服务器:是Red Hat产品,由GPL许可的,包含证书自动性,身份验证以及与Active Directory集成之类的更多服务。主要产品有FreeIPA (opens new window)。
# SSO服务器
单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。
潜在可研究的SSO服务器如下:
- keycloak (opens new window):红帽单点登陆 (opens new window)是基于他做二次开发的。
- LemonLDAP (opens new window):轻量级SSO服务器。
- Authelia (opens new window):GO编写的SSO。Apache 2.0许可。
- CAS (opens new window):CAS服务器。
- WSO2 Identity Server (opens new window)
- Gluu Server (opens new window):一款商业化的SSO服务器。他的开源仓库为:
# LDAP协议
参考资料:
- LDAP实现 (opens new window)
- LDAP协议 (opens new window)
- OpenLDAP - LDAP 协议的开源实现 (opens new window)
- LDAP和Mysql搭建 (opens new window)
- OpenLDAP (opens new window)
# LDAP实战
目前主要可用的LDAP客户端有两个:
主要用的LDAP服务器端有三个:
- ActiveDirectory
- OpenLDAP (opens new window)
- ApacheDirectory (opens new window)
# 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用户名。
← DNS