应用程序预配在 Microsoft Entra ID 中是如何工作的
自动预配是指在用户需要访问的云应用程序中创建用户标识和角色。 除了创建用户标识外,自动预配还包括在状态或角色发生更改时维护和删除用户标识。 在开始部署之前,可以阅读本文以了解 Microsoft Entra 预配的工作原理并获取配置建议。
“Microsoft Entra 预配服务”通过连接到由应用程序供应商或本地预配代理提供的用于跨域身份管理系统 (SCIM) 2.0 用户管理 API 终结点,将用户预配到 SaaS 应用和其他系统。 此 SCIM 终结点允许 Microsoft Entra ID 以编程方式创建、更新和删除用户。 对于选定的应用程序,预配服务还可创建、更新和移除其他标识相关的对象,例如组。 用于在 Microsoft Entra ID 和应用程序之间预配的通道使用 HTTPS TLS 1.2 加密进行加密。
图 1:Microsoft Entra 预配服务
图 2:从 Microsoft Entra ID 到常见 SaaS 应用程序的“出站”用户预配工作流
图 3:从常见人力资本管理 (HCM) 应用程序到 Microsoft Entra ID 和 Windows Server Active Directory 的“入站”用户预配工作流
使用 SCIM 2.0 进行预配
Microsoft Entra 预配服务使用 SCIM 2.0 协议进行自动预配。 该服务连接到应用程序的 SCIM 终结点,并使用 SCIM 用户对象架构和 REST API 来自动预配和取消预配用户和组。 为 Microsoft Entra 库中的大多数应用程序提供基于 SCIM 的预配连接器。 开发人员使用 Microsoft Entra ID 中的 SCIM 2.0 用户管理 API 为其应用生成与预配服务集成的终结点。 有关详细信息,请参阅 生成 SCIM 终结点并配置用户预配。 本地预配代理还将 Microsoft Entra SCIM 操作转换为 LDAP、SQL、REST 或 SOAP、PowerShell,以及对自定义 ECMA 连接器或合作伙伴构建的连接器和网关的调用。
若要为当前没有自动 Microsoft Entra 预配连接器的应用请求一个连接器,请参阅 Microsoft Entra 应用程序请求。
授权
Microsoft Entra ID 需要凭据才能连接到应用程序的用户管理 API。 在为应用程序配置自动用户预配时,需要输入有效凭据。 对于库应用程序,可以参考应用教程来查找应用程序的凭据类型和要求。 对于非库应用程序,可以参考 SCIM 文档来了解凭据的类型和要求。 在 Microsoft Entra 管理中心中,能够让 Microsoft Entra ID 尝试使用提供的凭据连接到该应用的预配应用来测试凭据。
映射属性
为第三方 SaaS 应用程序启用用户预配时,Microsoft Entra 管理中心通过属性映射控制其属性值。 在预配或更新用户帐户后,映射确定在 Microsoft Entra ID 和目标应用程序之间转移的用户属性。
Microsoft Entra 用户对象与每个 SaaS 应用的用户对象之间存在一组预先配置的属性和属性映射。 某些应用与用户一起管理其他类型的对象,例如“组”。
在设置预配时,重要的是查看并配置属性映射和工作流,它们可以确定哪些用户(或组)属性将从 Microsoft Entra ID 流向应用程序。 检查并配置用于在两个系统之间唯一标识和匹配用户/组的匹配属性(“使用此属性匹配对象”)。
可以根据业务需求自定义默认的属性映射。 因此,可以更改或删除现有属性映射或者创建新的属性映射。 有关详细信息,请参阅为 SaaS 应用程序自定义用户预配属性映射。
将预配配置到 SaaS 应用程序时,表达式映射是可指定的属性映射类型之一。 对于这些映射,必须编写一个类似于脚本的表达式,允许将用户的数据转换为 SaaS 应用程序更可接受的格式。 有关详细信息,请参阅为属性映射编写表达式。
Scoping
基于分配的范围
对于从 Microsoft Entra ID 到 SaaS 应用程序的出站设置,依赖于用户或组分配是确定哪些用户处于预配范围内的最常见方法。 由于用户分配还用于启用单一登录,因此可以使用相同的方法管理访问和预配。 基于分配的范围不适用于入站预配方案,如 Workday 和 Successfactors。
组。 使用 Microsoft Entra ID P1 或 P2 许可证计划,可以使用组来分配对 SaaS 应用程序的访问权限。 然后,当预配范围设置为“仅同步已分配的用户和组”时,Microsoft Entra 预配服务将根据用户是否是分配给应用程序的组的成员来预配或取消预配用户。 除非应用程序支持组对象,否则不会预配组对象本身。 确保分配给应用程序的组的属性“SecurityEnabled”设置为“True”。
动态组。 Microsoft Entra 用户预配服务可以读取和预配动态成员资格组中的用户。 请牢记以下注意事项和建议:
动态组可能会影响从 Microsoft Entra ID 到 SaaS 应用程序的端到端预配的性能。
SaaS 应用程序中的用户在动态组中预配或取消预配的速度取决于动态组评估成员身份更改的速度。 有关如何检查动态组的处理状态的信息,请参阅检查成员身份规则的处理状态。
当用户失去动态组中的成员身份时,将其视为取消预配事件。 为动态成员资格组创建规则时,请考虑这种情况。
嵌套组。 Microsoft Entra 用户预配服务无法读取或预配嵌套组中的用户。 该服务只能读取和预配属于显式分配组直接成员的用户。 “应用程序基于组的分配”的限制会影响单一登录(请参阅使用组来管理对 SaaS 应用程序的访问)。 相反,直接分配或限定包含需要预配的用户的组。
基于属性的范围
你可以使用范围筛选器定义基于属性的规则,用于确定哪些用户将预配到应用程序。 此方法通常用于从 HCM 应用程序到 Microsoft Entra ID 和 Active Directory 的入站设置。 在每个 Microsoft Entra 用户预配连接器的属性映射过程中,配置范围筛选器。 有关配置基于属性的范围筛选器的详细信息,请参阅使用范围筛选器进行基于属性的应用程序预配。
B2B(来宾)用户
可以使用 Microsoft Entra 用户预配服务将 Microsoft Entra ID 中的 B2B(来宾)用户预配到 SaaS 应用程序。 但是,若要使 B2B 用户使用 Microsoft Entra ID 登录到 SaaS 应用程序,则必须手动将 SaaS 应用程序配置为使用 Microsoft Entra ID 作为安全断言标记语言 (SAML) 标识提供者。
为 B2B(来宾)用户配置 SaaS 应用时,请遵循以下一般准则:
- 对于大多数应用,需要手动完成用户设置。 此外,还必须在应用中手动创建用户。
- 对于支持自动设置的应用(例如 Dropbox),可从这些应用创建单独的邀请。 用户必须接受每个邀请。
- 在用户属性中,为了缓解来宾用户的任何用户配置文件磁盘 (UPD) 损坏问题,请始终将“用户标识符”设置为 user.mail。
注意
B2B 协作用户的 userPrincipalName 将外部用户的电子邮件地址 alias@theirdomain 表示为“alias_theirdomain#EXT#@yourdomain”。 将 userPrincipalName 属性作为源属性包含在属性映射中,并且正在预配 B2B 用户时,#EXT# 和域将从 userPrincipalName 中剥离,因此仅使用其原始 alias@theirdomain 进行匹配或预配。 如果需要提供完整的用户主体名称(包括 #EXT# 和域),请将 userPrincipalName 替换为 originalUserPrincipalName 作为源属性。
userPrincipalName = alias@theirdomain
originalUserPrincipalName = alias_theirdomain#EXT#@yourdomain
预配周期:初始和增量
如果 Microsoft Entra ID 是源系统,预配服务将使用增量查询跟踪 Microsoft Graph 数据中的更改来监视用户和组。 预配服务针对源系统和目标系统运行初始周期,然后运行定期的增量周期。
初始周期
当预配服务启动时,第一个周期将:
查询源系统中的所有用户和组,并检索属性映射中定义的所有属性。
使用配置的任何分配或基于属性的范围筛选器筛选返回的用户和组。
当分配用户或用户处于预配范围内时,服务使用指定的匹配属性在目标系统查询匹配的用户。 示例:如果源系统中的 userPrincipal 名称是匹配的属性并映射到目标系统中的 userName,则预配服务会在目标系统中查询与源系统中 userPrincipal 名称值匹配的 userName。
如果在目标系统中未找到匹配的用户,则使用从源系统返回的属性创建匹配的用户。 创建用户帐户后,预配服务将检测并缓存新用户的目标系统 ID。 此 ID 用于对该用户运行以后的所有操作。
如果找到了匹配的用户,则使用源系统提供的属性更新该用户。 匹配用户帐户后,预配服务将检测并缓存新用户的目标系统 ID。 此 ID 用于对该用户运行以后的所有操作。
如果属性映射包含“reference”属性,该服务将对目标系统执行更多更新,以创建并链接引用的对象。 例如,用户可能在目标系统中有“Manager”属性,该属性链接到目标系统中创建的另一个用户。
在初始周期结束时保留水印,可为之后的增量周期提供起点。
某些应用程序(例如 ServiceNow、G Suite 和 Box)不仅支持预配用户,而且还支持预配组及其成员。 在这些情况下,如果在映射中启用了组预配,则预配服务将同步用户和组,然后同步动态成员资格组。
增量周期
初始周期后,所有其他周期将执行以下操作:
在源系统中查询自上次存储水印以来已更新的所有用户和组。
使用配置的任何分配或基于属性的范围筛选器筛选返回的用户和组。
当分配用户或用户处于预配范围内时,服务使用指定的匹配属性在目标系统查询匹配的用户。
如果在目标系统中未找到匹配的用户,则使用从源系统返回的属性创建匹配的用户。 创建用户帐户后,预配服务将检测并缓存新用户的目标系统 ID。 此 ID 用于对该用户运行以后的所有操作。
如果找到了匹配的用户,则使用源系统提供的属性更新该用户。 如果匹配的是新分配的帐户,则预配服务将检测并缓存新用户的目标系统 ID。 此 ID 用于对该用户运行以后的所有操作。
如果属性映射包含“reference”属性,该服务将对目标系统执行更多更新,以创建并链接引用的对象。 例如,用户可能在目标系统中有“Manager”属性,该属性链接到目标系统中创建的另一个用户。
如果从范围中删除了以前在预配范围内的某个用户(包括未分配的用户),该服务会通过更新在目标系统中禁用该用户。
如果在源系统中禁用或软删除了以前在预配范围内的某个用户,该服务会通过更新在目标系统中禁用该用户。
如果在源系统中硬删除了以前在预配范围内的某个用户,该服务会在目标系统中删除该用户。 在 Microsoft Entra ID 中,软删除用户 30 天后会将其硬删除。
在增量周期结束时保留新的水印,可为之后的增量周期提供起点。
注意
可以根据需要,使用映射部分中的“目标对象操作”复选框来禁用“创建”、“更新”或“删除”操作 。 还可使用“accountEnabled”等字段通过属性映射来控制用于在更新期间禁用用户的逻辑。
预配服务会根据特定于每个应用程序的教程中定义的间隔,持续无限期地运行后端到后端的增量周期。 增量周期将继续,直到发生以下某个事件:
- 使用 Microsoft Entra 管理中心或使用相应的 Microsoft Graph API 命令手动停止了该服务。
- 在 Microsoft Entra 管理中心中使用“重启预配”选项,或使用相应的 Microsoft Graph API 命令触发了新的初始周期。 该操作会清除所有存储的水印,并导致重新评估所有源对象。 另外,该操作不会中断源对象和目标对象之间的链接。 若要中断链接,请将 Restart synchronizationJob 与以下请求结合使用:
POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/restart
Authorization: Bearer <token>
Content-type: application/json
{
"criteria": {
"resetScope": "Full"
}
}
- 由于属性映射或范围筛选器发生更改而触发了新的初始周期。 此操作会清除所有存储的水印,并导致重新评估所有源对象。
- 高错误率导致预配进程进入隔离区(参阅示例),并在隔离区保留四周以上。 在此情况下,该服务会自动禁用。
错误和重试
如果目标系统中的错误阻止在目标系统中添加、更新或删除单个用户,则在下一个同步周期中重试该操作。 错误会不断被重试,并逐渐减少重试的频率。 若要解决失败,管理员需要查看预配日志,以确定根本原因并采取适当的措施。 常见的失败包括:
- 未在源系统中填充目标系统中所需的某个用户属性
- 源系统中存在一个在目标系统中具有唯一约束的用户属性值,但另一条用户记录中存在相同的值
可在源系统中调整受影响用户的属性值,或调整属性映射,解决这些失败,以避免冲突。
隔离
如果某个错误(例如管理员凭据无效)导致针对目标系统发出的大部分或所有调用持续失败,则预配作业会进入“隔离”状态。 预配摘要报告中会指示此状态,如果在 Microsoft Entra 管理中心中配置了电子邮件通知,则会通过电子邮件告知此状态。
处于隔离状态后,增量周期的频率会逐渐减少为每天一次。
解决所有错误并开始下一个同步周期后,预配作业将退出隔离状态。 如果预配作业在隔离区中保留四周以上,则会禁用预配作业。 可在此处了解有关隔离状态的详细信息。
预配花费多长时间
性能取决于预配作业是运行初始预配周期还是增量周期。 有关预配需要多长时间以及如何监视预配服务状态的详细信息,请参阅检查用户预配的状态。
如何判断用户预配是否正确
Microsoft Entra 预配日志中记录了用户预配服务运行的所有操作。 该日志包括对源系统和目标系统执行的所有读写操作,以及在每次操作期间读取或写入的用户数据。 有关如何在 Microsoft Entra 管理中心中读取预配日志的信息,请参阅预配报告指南。
取消设置
当用户访问权限被删除时,Microsoft Entra 预配服务通过取消预配帐户来使源系统和目标系统保持同步。
预配服务支持删除和禁用(有时称为软删除)用户。 根据目标应用的实现,“禁用”和“删除”的确切定义会有所不同,但“禁用”通常表示用户无法登录。 “删除”表示已从应用程序中完全删除用户。 对于 SCIM 应用程序,禁用是将用户的 active 属性设置为 false 的请求。
配置应用程序以禁用用户
确认已选中更新复选框。
确认应用的活动映射。 如果你在使用应用库中的应用程序,映射可能会略有不同。 在这种情况下,请使用库应用的默认映射。
配置应用程序以删除用户
此方案会触发禁用或删除:
- 在 Microsoft Entra ID 中软删除用户(发送到回收站/AccountEnabled 属性设置为 false)。 在 Microsoft Entra ID 中删除用户 30 天后,会从租户中永久删除他们。 此时,配置服务会发送 DELETE 请求以永久删除应用程序中的用户。 在 30 天窗口期中的任何时候,你都可以手动永久删除用户,这将向应用程序发送一个删除请求。
- 在 Microsoft Entra ID 中永久删除/移除回收站中的用户。
- 从应用中取消分配用户。
- 用户从范围内移动到范围外(不再经过范围筛选器)。
默认情况下,Microsoft Entra 预配服务软删除或禁用超出范围的用户。 如果要重写此默认行为,可以将标志设置为跳过范围外删除
当发生四个事件之一,且目标应用程序不支持软删除时,预配服务会发送 DELETE 请求,以从应用中永久删除该用户。
如果在属性映射中看到属性 IsSoftDeleted
,它用于确定用户的状态以及是否发送具有 active = false
的更新请求以软删除用户。
取消预配事件
该表介绍了如何通过 Microsoft Entra 预配服务来配置取消预配操作。 这些规则在编写时已考虑到非库/自定义应用程序,但通常适用于库中的应用程序。 但是,库应用程序的行为可能会有所不同,因为已对其进行了优化,以满足应用程序的需求。 例如,如果目标应用程序不支持软删除,则 Microsoft Entra 预配服务可能会发送硬删除请求以删除用户,而不是发送软删除。
方案 | 如何在 Microsoft Entra ID 中配置 |
---|---|
用户已从应用中取消分配、在 Microsoft Entra ID 中软删除或被阻止登录。 你不想执行任何操作。 | 从属性映射中删除 isSoftDeleted ,并/或将跳过范围外删除属性设置为 true。 |
用户已从应用中取消分配、在 Microsoft Entra ID 中软删除或被阻止登录。 你想要将特定属性设为 true 或 false 。 |
将 isSoftDeleted 映射到要设为 false 的属性。 |
用户在 Microsoft Entra ID 中被禁用、从应用中取消分配、在Microsoft Entra ID 中软删除或被阻止登录。 你想要向目标应用程序发送 DELETE 请求。 | 目前,此功能在一组有限的库应用程序中受支持,这些应用程序需要此功能。 它不可由客户配置。 |
在 Microsoft Entra ID 中删除用户。 你不想要在目标应用程序中执行任何操作。 | 确保未将“删除”选为属性配置体验中的目标对象操作之一。 |
在 Microsoft Entra ID 中删除用户。 你想要在目标应用程序中设置某个属性的值。 | 不支持。 |
在 Microsoft Entra ID 中删除用户。 你想要删除目标应用程序中的用户 | 确保选择“删除”作为属性配置体验中的目标对象操作之一。 |
已知的限制
- 当用户或组从应用中取消分配并且不再使用预配服务进行管理时,将发送禁用请求。 此时,该服务不管理用户,当从目录中软删除用户时,不会发送删除请求。
- 不支持预配在 Microsoft Entra ID 中禁用的用户。 在预配之前,用户必须在 Microsoft Entra ID 中处于活动状态。
- 用户从软删除变为活动状态时,Microsoft Entra 预配服务会在目标应用中激活该用户,但不会自动还原动态成员资格组。 目标应用程序应维护处于非活动状态的用户的动态成员资格组。 如果目标应用程序不支持维护非活跃状态,则可以重启预配以更新动态成员资格组。
建议
开发应用程序时,请始终支持软删除和硬删除。 当意外禁用用户时,客户可以进行恢复。