了解Microsoft的 SSO 模型

Microsoft Entra ID是一个中心标识平台。 它跨使用不同身份验证协议的应用提供单一登录(SSO)。 本文介绍了Microsoft Entra ID如何在平台级别实现 SSO,以及如何实现应用集成。

Microsoft Entra ID作为集中式标识平台

Microsoft Entra ID是一个中心标识提供者。 它对用户进行身份验证,并向应用颁发标识令牌。 它为用户提供一种登录体验,并支持不同的协议将标识信息传送到应用。

用户通过Microsoft Entra ID登录一次。 随后,平台即可向多个应用证明用户的身份,而无需用户再次登录。 身份验证策略、安全控件和用户凭据位于一个位置。 每个应用都以自己的协议格式接收标识信息。

关键思路:跨平台统一身份验证。 安全断言标记语言(SAML)和 OpenID Connect(OIDC)等协议仅在身份验证后打包和传递标识信息的方式不同。

Microsoft Entra 如何处理 SAML 和 OIDC 身份验证

无论应用是使用 SAML 还是 OpenID Connect,Microsoft Entra ID都使用相同的身份验证阶段。

共享身份验证阶段

用户身份验证:Microsoft Entra ID验证用户凭据。 用户可以使用密码、多重身份验证或无密码方法登录。 对于每个应用,此步骤都是相同的,无论它使用哪种协议。

策略强制实施:平台会检查条件访问策略、设备符合性和其他安全控制。 这些检查会在登录后执行,但会在 Microsoft Entra ID 颁发任何令牌或断言之前完成。

标识确定:Microsoft Entra ID决定要包括哪些标识信息。 它根据应用的配置,以及用户的个人资料和组成员身份来确定。 有关详细信息,请参阅 “对应用程序和用户进行身份验证”。

协议偏差

身份验证和策略检查后,这两种协议在打包和传递标识信息的方式上有所不同。

SAML 应用程序 以 XML 格式接收 SAML 断言。 每个断言都保存标识信息和属性,经过数字签名,并在 SAML 协议消息中传输。

OpenID Connect 应用程序 接收保存标识声明的 JSON Web 令牌(JWT)。 这些令牌遵循 OAuth 2.0 授权代码流 和 OpenID Connect 规范进行结构和传递。

身份验证和授权决策相同。 根据应用的协议,只有格式和传递不同。

共享执行和策略层

Microsoft Entra ID将相同的安全策略和访问控制应用于每个应用,无论它使用哪种协议。 此项强制执行会在 Microsoft Entra ID 颁发任何令牌或断言之前进行。

条件访问策略 权衡了用户位置、设备符合性、登录风险和应用敏感度等因素。 策略可能需要额外的身份验证、阻止访问或在设置条件下允许访问。 平台对 SAML 和 OpenID Connect 应用强制实施这些策略。

多重身份验证 (MFA) 在登录过程中生效,在颁发任何协议特定的令牌之前。 无论应用是使用 SAML 还是 OIDC,用户都根据分配的策略看到相同的 MFA 提示。

基于设备的策略 检查设备符合性、注册状态和基于设备的条件访问规则。 这些检查在登录期间运行,并针对每个应用协议应用相同的方式。

此共享策略层使安全控制和访问决策在所有应用中保持一致,无论你使用哪种 SAML 和 OpenID Connect 组合。

配置模型:应用程序、租户和协议设置

Microsoft Entra ID使用结构化配置模型来管理应用集成和特定于协议的设置。 租户是组织的专属 Microsoft Entra ID 实例。

应用程序对象 是应用的全局定义。 应用程序对象包含应用的身份验证要求、支持的协议和基本配置。 它定义应用可以执行的操作。

服务主体代表特定租户中的应用。 当有人将应用添加到租户时,Microsoft Entra ID创建服务主体。 服务主体保存特定于租户的配置、用户分配和协议设置。 由于应用对象和服务主体是独立的,因此你的应用可以在不同的客户租户中使用不同的配置。

协议配置 位于服务主体级别,因此 SAML 和 OpenID Connect 设置特定于租户。 这些设置包括:

  • SAML 断言属性和 NameID 格式
  • OpenID Connect 作用域和声明映射
  • 重定向 URI 和协议特定的端点
  • 令牌签名的证书和密钥配置

此配置模型允许 ISV 应用支持 多个租户,每个租户都有自己的协议首选项和配置。

支持的终结点和协议

Microsoft Entra ID提供特定于租户的终结点。 应用使用这些终结点进行身份验证和令牌请求。

OpenID Connect 终结点 遵循标准 OAuth 2.0 和 OpenID Connect 模式。 其特定于租户的 URL 包括租户标识符。 这些终结点处理授权和令牌请求。 它们还会发布发现元数据,以便应用可以自动配置自己。

SAML 配置通过元数据进行发现。 Microsoft Entra ID发布特定于租户的 SAML 元数据,其中列出了可用的终结点、证书信息和协议功能。 应用读取此元数据以自动配置其 SAML 设置。

这两种协议都使用租户范围的终结点,因此每个租户都有自己的 URL 集进行身份验证。 这种隔离可确保每个请求都处于正确的组织上下文中,并确保令牌携带正确的租户特定信息。

支持的 SSO 模式和流程发起方式

Microsoft Entra ID支持 SAML 和 OpenID Connect 应用的服务提供商(SP)发起的流。 在 SP 发起的流中,用户从应用开始。 然后,应用会将其重定向到 Microsoft Entra ID 进行登录。

对于 SAML 应用程序,Microsoft Entra ID 还支持由身份提供程序 (IdP) 发起的流程。 用户从 Microsoft Entra ID(例如通过 我的应用 门户)访问时,Microsoft Entra ID 会将其重定向到该应用,并附带已通过身份验证的断言。

OpenID Connect 遵循 OAuth 2.0 授权流。 Web 应用通常使用授权代码流,移动应用和单页应用使用适合它们的流。

后续步骤

继续规划如何将 SSO 与 Microsoft Entra ID 集成: