单点登录(SSO)领域中,最常见的协议就是 SAML 与 LDAP 协议。这两种协议都用于业务应用的身份验证,但在用例方面有着明显区别。尽管如此,企业要想部署单点登录(SSO)最好还是充分利用两种协议的组合,从而在不增加 IT 支出的情况下支持访问更多类型的 IT 资源,最终也有助于达成业务目标。



1. LDAP 单点登录和 SAML 单点登录的起点

在深入比较这两种身份验证协议之前,先来回顾一下两种协议的发展过程。LDAP(轻量级目录访问协议)是九十年代初由密歇根大学的 Tim Howes 和同事共同创建的开放标准,广泛沿用至今,说明了 LDAP 的灵活性和功能的强大。


SAML(安全断言标记语言)开发于21世纪初,是一种基于断言的身份验证协议,可将身份联合到 Web 应用。SAML 的验证过程首先通过与身份提供程序(IdP)集成核验身份的真实性和有效性。


然后,Web 应用等服务端完成了基于 XML 协议的身份验证后就会允许用户访问。从技术上讲,IdP 负责声称 SAML 属性断言再进行中继,整个过程都在互联网上进行,而且很安全。不再利用传统的域。值得注意的是,这一过程中的账号凭证不是存储在单个服务端(SP),当用户有多个不同凭证时,可能会导致数据泄露,增加管理成本。



2. 相似性与差异性

LDAP 单点登录和 SAML 单点登录的本质都是相同的,都是为了帮助用户连接到所需的 IT 资源。也正因为这样,这两种协议经常被协同使用,也成为了身份管理行业的主要产品。特别是随着 Web 应用的使用频率急剧上升,企业除了采用核心的目录服务之外,还会利用基于 SAML 协议的 Web 应用单点登录解决方案。


尽管如此,LDAP 和 SAML 两种协议实现的单点登录在影响范围上有着很大的不同。LDAP 侧重于推动本地身份验证和其他服务器的进程,而 SAML 更多是把用户凭证扩展到云应用和其他 Web 应用上。


SAML 和 LDAP 在概念上也有一个很容易忽略的区别:大多数常见的 LDAP 服务器都作为权威的IdP 或身份源。而在 SAML 中,SAML 服务并不是身份源,只是经常充当目录服务的代理,将身份验证过程转换为基于 SAML 的工作流。

在用例方面,LDAP 可以很好地和 基于Linux的应用配合使用,例如 Jenkins等。LDAP 服务器通常作为身份源,也被称为身份提供方 IdP 或微软 Active Directory 以及可以跨系统运行的云目录服务。


LDAP 在系统上的高效运行使得企业可以在很大程度上管理身份验证和授权。但 LDAP 的部署从技术上来说也相对复杂技术过程,需要管理员事先完成大量准备工作,包括高可用性、性能监控、安全性等任务。


相比之下,SAML 通常用于企业目录和 Web 应用之间的身份验证和授权。经过多年的发展,SAML 也增加了扩展性功能,为用户提供对 Web 应用的访问权限。基于 SAML 的解决方案一直以来都和核心目录服务协同使用。厂商使用 SAML 开发软件,让用户身份可以从 AD 扩展到大量 Web 应用,于是第一代IDaaS应运而生,它以对Salesforce、销售易、WorkLife、ServiceNow等SaaS应用的广泛性SSO支持而被市场认可,随着企业移动社交身份的发展,IDaaS也被要求能够桥接本地AD和企业社交身份。



3. “1+1>2”

由于 LDAP 和 SAML 协议都可以为不同类型的 IT 资源进行用户的身份验证,因此问题不在于采用哪种协议,而是如何实现完备的单点登录体验,比如如何只用一个身份就将用户连接到所需的任意资源?而除了单点登录以外,企业还可以结合多因素认证(MFA)的功能,实现1+1>2的效果。