基于 SAML 的单一登录:配置和限制
在本文中,你将了解如何使用 Microsoft Entra ID 为基于 SAML 的单一登录 (SSO) 配置应用程序。 本文内容包括根据规则将用户映射到特定的应用程序角色,以及映射属性时要记住的限制。 此外,文中还介绍 SAML 签名证书、SAML 令牌加密、SAML 请求签名验证和自定义声明提供程序。
可为使用 SAML 2.0 进行身份验证的应用配置基于 SAML 的单一登录 (SSO)。 使用基于 SAML 的 SSO,可以根据在 SAML 声明中定义的规则将用户映射到特定的应用程序角色。
要为 SaaS 应用程序配置基于 SAML 的 SSO,请参阅快速入门:设置基于 SAML 的单一登录。
许多 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 进行身份验证。
用于 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:
- AD FS 中的自定义授权或多重身份验证 (MFA) 规则。 可以使用 Microsoft Entra 条件访问功能配置它们。
- 具有多个回复 URL 终结点的应用。 使用 PowerShell 或 Microsoft Entra 管理中心界面在 Microsoft Entra ID 中配置它们。
- 需要 SAML 1.1 版令牌的 WS 联合身份验证应用(例如 SharePoint 应用)。 可使用 PowerShell 手动配置它们。 还可以从库中为 SharePoint 和 SAML 1.1 应用程序添加预集成的通用模板。 我们支持 SAML 2.0 协议。
- 复杂的声明颁发转换规则。 有关支持的声明映射的信息,请参阅:
目前在 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 联合身份验证服务名称。 例如: |
将 {tenant-id} 替换为租户 ID。 对于使用 SAML-P 协议的应用: 对于使用 WS 联合身份验证协议的应用: |
IdP 注销 URL 从应用角度来看的 IdP 注销 URL(当用户选择注销应用时将用户重定向到其中的位置)。 |
注销 URL 与登录 URL 相同,或者在相同的 URL 后追加 wa=wsignout1.0 。 例如:https://fs.contoso.com/adfs/ls/?wa=wsignout1.0 |
将 {tenant-id} 替换为租户 ID。 对于使用 SAML-P 协议的应用: 对于使用 WS 联合身份验证协议的应用: |
令牌签名证书 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。 |
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 格式的租户名称。 有关详细信息,请参阅联合元数据。 |