SAML 与 OpenID Connect:选择正确的 SSO 协议

若要使用 Microsoft Entra ID设置单一登录(SSO),请在两种协议之间进行选择:安全断言标记语言 (SAML) 2.0 和 OpenID Connect (OIDC)。 本文介绍两种协议的不同之处、何时使用每个协议以及如何为应用选择。

为什么你的协议选择很重要

你的协议选择塑造了如何构建应用、集成难度以及它如何适应客户环境。 Microsoft Entra ID完全支持这两种协议,但每个协议都适合不同的需求。

选择会影响两个角色:

  • 独立软件供应商(ISV)应用程序开发人员:它推动开发工作、框架支持,以及满足不同客户要求的方式。
  • IT 管理员:这会影响应用与您的身份基础架构和安全策略的契合程度。

什么是 SAML 2.0?

SAML 2.0 是基于 XML 的成熟联合协议。 企业已经广泛使用了十多年。 SAML 安全地共享标识提供者和应用之间的登录和访问数据。

SAML 使用 XML 消息和断言来携带登录数据。 它详细映射用户属性。 它还支持复杂的企业需求,例如已签名的 XML 断言和详细的属性语句。

什么是 OpenID Connect (OIDC) ?

OpenID Connect (OIDC)是基于 OAuth 2.0 构建的新式登录协议。 它使用称为 JSON Web 令牌(JWT)的 JSON 令牌和 REST API。 OIDC 让用户登录,OAuth 2.0 处理访问权限。

OIDC 更简单,更便于开发人员使用。 它适合新式应用设计,包括单页应用程序、移动应用和微服务。

比较 SAML 和 OIDC

下表比较了 SAML 2.0 和 OpenID Connect,这些因素对于 SSO 集成而言最为重要。

方面 SAML 2.0 OpenID Connect
消息格式 基于 XML 基于 JSON 的
令牌类型 XML 断言 JWT 令牌
企业采用 已广泛确立 快速增长
开发人员体验 复杂,需要 XML 处理 更简单、基于 REST 的
开发复杂性 需要更高级的 XML 处理 较低,基于 REST/JSON 的
新式框架 有限的原生支持 出色的支持
移动/SPA 支持 挑战 原生支持
验证对齐方式 良好、成熟的模式 优秀、现代标准
多租户SaaS适用性 足够复杂 原生、最佳
客户载入工作 更复杂的手动设置 更简单的自动发现
长期可维护性 较高开销 维护需求更低
属性处理 丰富的 XML 属性语句 JSON 声明
安全功能 XML 签名、复杂控件 JWT 签名、OAuth 范围

决策摘要

这两种协议都是安全的,Microsoft Entra ID完全支持每个协议。 前表已逐项对它们进行了比较,因此如需了解具体差异,请参考该表。 本摘要概述了 ISV 选择各协议的原因:OIDC 适用于新型云原生 SaaS 以及拥有现代身份体系的客户;而 SAML 则是面向企业客户、出于合规或采购要求,或因旧版身份提供商仅支持 SAML 而作出的选择。 当客户群跨越两个世界时,支持这两种协议。

如果您符合以下情况,请选择 OpenID Connect(OIDC):

  • 生成新的 SaaS 或云原生应用
  • 生成单页应用程序(SPA)或移动应用
  • 想要开发速度和新式集成
  • 借助现代身份系统服务客户
  • 规划支持多租户的可扩展分发架构

如果你符合以下情况,请选择 SAML:

  • 拥有需要 SAML 的企业客户
  • 支持与不支持 OIDC 的旧版身份提供商配合使用
  • 必须满足要求采用 SAML 的合规或采购规则
  • 已有可正常运行的 SAML 实现

如果您同时支持这两种协议:

  • 为需要两者的混合客户环境提供服务
  • 希望跨组织实现最广泛的兼容性

如果不确定,请默认为 OIDC 进行新的 SaaS 开发。 OIDC 适用于新式应用、Microsoft Entra验证以及当今的企业趋势。

准备好实现协议了吗?