基于 SAML 的单一登录:配置和限制

在本文中,你将了解如何使用 Microsoft Entra ID 为基于 SAML 的单一登录 (SSO) 配置应用程序。 本文内容包括根据规则将用户映射到特定的应用程序角色,以及映射属性时要记住的限制。 此外,文中还介绍 SAML 签名证书、SAML 令牌加密、SAML 请求签名验证和自定义声明提供程序。

可为使用 SAML 2.0 进行身份验证的应用配置基于 SAML 的单一登录 (SSO)。 使用基于 SAML 的 SSO,可以根据在 SAML 声明中定义的规则将用户映射到特定的应用程序角色。

要为 SaaS 应用程序配置基于 SAML 的 SSO,请参阅快速入门:设置基于 SAML 的单一登录

Screenshot of the SAML SSO settings blade.

许多 SaaS 应用程序都有一个特定于应用程序的教程,可引导你完成基于 SAML 的 SSO 的配置。

某些应用可以轻松地进行迁移。 具有较复杂要求(例如自定义声明)的应用可能还需要在 Microsoft Entra ID 和/或 Microsoft Entra Connect Health 中进行配置。 有关支持的声明映射的信息,请参阅操作指南:为租户中的特定应用自定义在令牌中发出的声明(预览版)

映射属性时,请记住下列限制:

  • 并非所有可在 AD FS 中发布的属性都在 Microsoft Entra ID 中显示为要发出到 SAML 令牌的属性,即使这些属性已同步也是如此。 编辑属性时,“”下拉列表将显示 Microsoft Entra ID 中可用的不同属性。 请检查 Microsoft Entra Connect 同步文章配置,确保将所需属性(例如“samAccountName”)同步到 Microsoft Entra ID。 你可使用扩展属性在 Microsoft Entra ID 中颁发不属于标准用户架构的任何声明。
  • 在最常用方案中,应用只需要 NameID 声明和其他常用的用户标识符声明。 若要确定是否需要任何额外声明,请检查要通过 AD FS 颁发的具体声明。
  • 并非所有声明都可以颁发,因为某些声明在 Microsoft Entra ID 中受到保护。
  • 用于使用加密 SAML 令牌的功能现在处于预览阶段。 请参阅操作指南:为企业应用程序自定义 SAML 令牌中颁发的声明

服务型软件 (SaaS) 应用

如果你的用户登录到 SaaS 应用(例如 Salesforce、ServiceNow 或 Workday),并与 AD FS 集成,则你使用的是适用于 SaaS 应用的联合登录。

大多数 SaaS 应用程序都可以在 Microsoft Entra ID 中进行配置。 Microsoft 在 Microsoft Entra 应用库中提供了许多预配置的 SaaS 应用连接,这使转换更容易。 SAML 2.0 应用程序可以通过 Microsoft Entra 应用库与 Microsoft Entra ID 集成,也可以作为非库应用程序进行集成。

类似地,使用 OAuth 2.0 或 OpenID Connect 的应用可作为应用注册与 Microsoft Entra ID 集成。 使用旧版协议的应用可使用 Microsoft Entra 应用程序代理向 Microsoft Entra ID 进行身份验证。

有关加入 SaaS 应用的任何问题,可联系 SaaS 应用程序集成支持别名

用于 SSO 的 SAML 签名证书

签名证书是所有 SSO 部署的重要组成部分。 Microsoft Entra ID 创建签名证书,为 SaaS 应用程序建立基于 SAML 的联合 SSO。 添加库或非库应用程序后,使用联合 SSO 选项配置添加的应用程序。 请参阅在 Microsoft Entra ID 中管理用于联合单一登录的证书

SAML 令牌加密

AD FS 和 Microsoft Entra ID 都提供令牌加密,即对发送到应用程序的 SAML 安全断言进行加密的能力。 断言使用公钥进行加密,并由接收应用程序使用匹配的私钥进行解密。 配置令牌加密时,上传 X.509 证书文件以提供公钥。

有关 Microsoft Entra SAML 令牌加密以及如何配置它的信息,请参阅操作指南:配置 Microsoft Entra SAML 令牌加密

注意

令牌加密是一项 Microsoft Entra ID P1 或 P2 功能。 若要详细了解 Microsoft Entra 版本、功能和定价,请参阅 Microsoft Entra 定价

SAML 请求签名验证

此功能可验证已签名的身份验证请求的签名。 应用管理员可以启用和禁用已签名请求的强制执行,并上传应该用于完成验证的公钥。 有关详细信息,请参阅如何强制执行已签名的 SAML 身份验证请求

自定义声明提供程序(预览版)

若要从旧系统(如 ADFS)或数据存储(如 LDAP)迁移数据,应用将依赖于令牌中的某些数据。 可以使用自定义声明提供程序将声明添加到令牌中。 有关详细信息,请参阅自定义声明提供程序概述

目前可移动的应用和配置

目前可以轻松移动的应用包括 SAML 2.0 应用,这些应用使用包含配置元素和声明的标准集。 这些标准项包括:

  • 用户主体名称
  • 电子邮件地址
  • 给定名称
  • 充当 SAML NameID 的备用属性,包括 Microsoft Entra ID 邮件属性、邮件前缀、雇员 ID、扩展属性 1-15,或者本地 SamAccountName 属性。 有关详细信息,请参阅编辑 NameIdentifier 声明
  • 自定义声明。

下列内容需要执行更多的配置步骤来迁移到 Microsoft Entra ID:

目前在 Microsoft Entra 中不受支持的应用和配置

需要某些功能的应用目前不能迁移。

协议功能

需要以下协议功能的应用目前不能迁移:

  • 对 WS-Trust ActAs 模式的支持
  • SAML 项目解析

将应用设置从 AD FS 映射到 Microsoft Entra ID

迁移需要评估应用程序在本地的配置方式,然后将该配置映射到 Microsoft Entra ID。 AD FS 和 Microsoft Entra ID 的工作原理类似,因此配置信任、登录和注销 URL 以及标识符的概念在两种情况下都适用。 记录应用程序的 AD FS 配置设置,以便可以轻松地在 Microsoft Entra ID 中配置这些设置。

映射应用配置设置

下表描述 AD FS 信赖方信任与 Microsoft Entra 企业应用程序之间的一些最常见设置映射:

  • AD FS - 查找应用的 AD FS 信赖方信任中的设置。 右键单击信赖方,然后选择“属性”。
  • Microsoft Entra ID - 此设置在 Microsoft Entra 管理中心的每个应用程序的 SSO 属性中配置。
配置设置 AD FS 如何在 Microsoft Entra ID 中配置 SAML 令牌
应用登录 URL

用户在服务提供商 (SP) 启动的 SAML 流中用于登录应用的 URL。

空值 从基于 SAML 的登录打开基本 SAML 配置 空值
应用回复 URL

从标识提供者 (IdP) 角度来看的应用 URL。 用户登录到 IdP 后,IdP 会将用户和令牌发送到此处。 这也称为 SAML 断言使用者终结点

选择“终结点”选项卡 从基于 SAML 的登录打开基本 SAML 配置 SAML 令牌中的 Destination 元素。 示例值: https://contoso.my.salesforce.com
应用注销 URL

这是用户从应用注销时向其发送注销清理请求的 URL。 IdP 还会发送从所有其他应用注销用户的请求。

选择“终结点”选项卡 从基于 SAML 的登录打开基本 SAML 配置 空值
应用标识符

这是从 IdP 角度来看的应用标识符。 通常使用登录 URL 值作为标识符(但也不一定)。 应用有时将其称为实体 ID

选择“标识符”选项卡 从基于 SAML 的登录打开基本 SAML 配置 映射到 SAML 令牌中的 Audience 元素。
应用联合元数据

这是应用的联合元数据的位置。 IdP 用它来自动更新特定的配置设置,例如终结点或加密证书。

选择“监视”选项卡 不适用。 Microsoft Entra ID 不支持直接使用应用程序联合元数据。 你可以手动导入联合元数据。 空值
用户标识符/名称 ID

一个属性,用于以唯一方式向应用指示 Microsoft Entra ID 或 AD FS 中的用户标识。 此属性通常为用户的 UPN 或电子邮件地址。

声明规则。 大多数情况下,声明规则在发出声明时,其类型以“NameIdentifier”结尾。 可以在标头“用户属性和声明”下找到标识符。 默认使用 UPN 映射到 SAML 令牌中的 NameID 元素。
其他声明

通常从 IdP 发送到应用的其他声明信息的示例包括名字、姓氏、电子邮件地址和组成员身份。

在 AD FS 中,可以看到此项充当信赖方的其他声明规则。 可以在标头“用户属性和声明”下找到标识符。 选择“查看”,然后编辑所有其他的用户属性。 空值

映射标识提供者 (IdP) 设置

将应用程序配置为指向 Microsoft Entra ID(而不是 AD FS)以实现 SSO。 这里,我们将重点介绍使用 SAML 协议的 SaaS 应用。 不过,此概念也适用于自定义业务线应用。

注意

Microsoft Entra ID 的配置值遵循以下模式:Azure 租户 ID 替换 {tenant-id},应用程序 ID 替换 {application-id}。 可在 Microsoft Entra 管理中心中的“Microsoft Entra ID > 属性”下找到此信息:

  • 选择“目录 ID”以查看你的租户 ID。
  • 选择“应用程序 ID”以查看你的应用程序 ID。

概括而言,将以下关键 SaaS 应用配置元素映射到 Microsoft Entra ID。

元素 配置值
标识提供者颁发者 https://sts.windows.net/{tenant-id}/
标识提供者登录 URL https://login.microsoftonline.com/{tenant-id}/saml2
标识提供者注销 URL https://login.microsoftonline.com/{tenant-id}/saml2
联合元数据位置 https://login.windows.net/{tenant-id}/federationmetadata/2007-06/federationmetadata.xml?appid={application-id}

映射 SaaS 应用的 SSO 设置

SaaS 应用需要知道将身份验证请求发送到何处,以及如何验证收到的令牌。 下表介绍在应用中用于配置 SSO 设置的元素,以及它们在 AD FS 和 Microsoft Entra ID 中的值或位置。

配置设置 AD FS 如何在 Microsoft Entra ID 中配置
IdP 登录 URL

从应用的角度来看,IdP 的登录 URL(将用户重定向到其中以便进行登录的位置)。

AD FS 登录 URL 是后跟 /adfs/ls/ 的 AD FS 联合身份验证服务名称。

例如:https://fs.contoso.com/adfs/ls/

{tenant-id} 替换为租户 ID。

对于使用 SAML-P 协议的应用:https://login.microsoftonline.com/{tenant-id}/saml2

对于使用 WS 联合身份验证协议的应用:https://login.microsoftonline.com/{tenant-id}/wsfed

IdP 注销 URL

从应用角度来看的 IdP 注销 URL(当用户选择注销应用时将用户重定向到其中的位置)。

注销 URL 与登录 URL 相同,或者在相同的 URL 后追加 wa=wsignout1.0。 例如:https://fs.contoso.com/adfs/ls/?wa=wsignout1.0 {tenant-id} 替换为租户 ID。

对于使用 SAML-P 协议的应用:

https://login.microsoftonline.com/{tenant-id}/saml2

对于使用 WS 联合身份验证协议的应用:https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0

令牌签名证书

IdP 使用证书的私钥对颁发的令牌进行签名。 它可以验证令牌是否来自已配置应用所信任的 IdP。

AD FS 令牌签名证书位于 AD FS 管理中的“证书”下。 此证书位于 Microsoft Entra 管理中心内应用程序的“单一登录属性”中的“SAML 签名证书”下。 可以在其中下载要上传到应用的证书。

如果应用程序有多个证书,则可在联合元数据 XML 文件中找到所有证书。

标识符/“颁发者”

从应用角度来看的 IdP 标识符(有时称为“颁发者 ID”)。

在 SAML 令牌中,此值显示为 Issuer 元素。

AD FS 的标识符通常是 AD FS 管理中的联合身份验证服务标识符,位于“服务”>“编辑联合身份验证服务属性”下。 例如:http://fs.contoso.com/adfs/services/trust {tenant-id} 替换为租户 ID。

https://sts.windows.net/{tenant-id}/

IdP 联合元数据

IdP 的公开提供的联合元数据的位置。 (某些应用使用联合元数据来分别代替管理员配置 URL、标识符、令牌签名证书。)

AD FS 联合元数据 URL 位于 AD FS 管理中的“服务”>“终结点”>“元数据”>“类型: 联合元数据”下。 例如:https://fs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml Microsoft Entra ID 的相应值遵循模式 https://login.microsoftonline.com/{TenantDomainName}/FederationMetadata/2007-06/FederationMetadata.xml。 将 {TenantDomainName} 替换为 contoso.onmicrosoft.com 格式的租户名称。

有关详细信息,请参阅联合元数据

后续步骤