用于 Microsoft Graph 的 Microsoft Identity Manager 连接器

摘要

Microsoft Graph 的 Microsoft Identity Manager 连接器为 Microsoft Entra ID P1 或 P2 客户提供了其他集成方案。 它在 MIM 同步 Metaverse 中显示从 Microsoft Graph API v1 和 beta 版中获取的附加对象。

涵盖的方案

B2B 帐户生命周期管理

用于 Microsoft Graph 的 Microsoft Identity Manager 连接器的初始方案是作为连接器帮助自动执行外部用户的 AD DS 帐户生命周期管理。 在这种情况下,组织使用 Microsoft Entra Connect 将员工同步到 AD DS Microsoft Entra ID,还邀请来宾进入其Microsoft Entra目录。 邀请来宾会导致外部用户对象位于该组织的 Microsoft Entra 目录中,该目录不在组织的 AD DS 中。 然后,组织希望通过Microsoft Entra应用程序代理或其他网关机制,让这些来宾能够访问本地 Windows 集成身份验证或基于 Kerberos 的应用程序。 Microsoft Entra应用程序代理要求每个用户都有自己的 AD DS 帐户,以便进行标识和委派。

若要了解如何配置 MIM 同步以自动为来宾创建和维护 AD DS 帐户,请在阅读本文中的说明后,继续阅读Microsoft Entra企业到企业 (B2B) 与 MIM 2016 和 Microsoft Entra 应用程序代理的协作一文。 本文说明了连接器所需的同步规则。

其他标识管理方案

除了用户和组同步到Microsoft Entra ID之外,连接器还可用于其他特定标识管理方案,涉及在 Microsoft Entra ID 中创建、读取、更新和删除用户、组和联系人对象。 评估潜在方案时,请记住:此连接器无法在方案中运行,这将导致数据流重叠、实际或潜在的同步冲突与 Microsoft Entra Connect 部署。 建议使用 Microsoft Entra Connect 将本地目录与Microsoft Entra ID集成,方法是将用户和组从本地目录同步到Microsoft Entra ID。 Microsoft Entra Connect 具有更多同步功能,并支持密码和设备写回等方案,而 MIM 创建的对象则无法实现这些方案。 例如,如果要将数据引入 AD DS,请确保将数据从尝试将这些对象匹配回Microsoft Entra目录Microsoft Entra Connect 中排除。 此连接器也不能用于对Microsoft Entra对象进行更改,这些对象是由 Microsoft Entra Connect 创建的。

准备使用 Microsoft Graph 的连接器

授权连接器检索或管理Microsoft Entra目录中的对象

  1. 连接器要求在 Microsoft Entra ID 中创建 Web 应用/API 应用程序,以便可以使用适当的权限授权它通过 Microsoft Graph 对Microsoft Entra对象进行操作。

    “新应用程序注册”按钮的图像 应用程序注册的图像

    图 1. 新应用程序注册

  2. 在 Azure 门户中,打开创建的应用程序,并将应用程序 ID 保存为客户端 ID,以便稍后在 MA 的连接页面上使用:

    应用程序注册详细信息的图像

    图 2. 应用程序 ID

  3. 通过打开 证书 & 机密来生成新的客户端密码。 设置一些密钥说明并选择最长持续时间。 保存更改并检索客户端密码。 离开页面后,客户端机密值将无法再次查看。

    “添加新机密”按钮的图像

    图 3. 新建客户端密码

  4. 通过打开“API 权限”向应用程序授予适当的“Microsoft Graph”权限

    “添加权限”按钮的图像 图片 4. 添加新的 API

    选择“Microsoft Graph”应用程序权限。 应用程序权限的图像

    撤消所有不需要的权限。

    未授予应用程序权限的图像

    以下权限应添加到应用程序,使其可以使用"Microsoft Graph API",具体权限视方案而定:

    对象操作 所需权限 权限类型
    架构检测 Application.Read.All 应用程序
    导入组 Group.Read.AllGroup.ReadWrite.All 应用程序
    导入用户 User.Read.AllUser.ReadWrite.AllDirectory.Read.AllDirectory.ReadWrite.All 应用程序

    有关所需权限的更多详细信息,请参阅 权限参考

注意

Application.Read.All 权限对于架构检测是必需的,无论将使用哪种对象类型连接器,都必须授予权限。

  1. 授予管理员对所选权限的同意。 已授予管理员同意的图像

安装连接器

  1. 在安装连接器之前,请确保在同步服务器上具有以下内容:
  • Microsoft .NET 4.6.2 Framework 或更高版本
  • Microsoft Identity Manager 2016 SP2,并且必须使用修补程序 4.4.1642.0 KB4021562或更高版本。
  1. Microsoft Graph 的连接器以及 Microsoft Identity Manager 2016 SP2 的其他连接器可从 Microsoft 下载中心下载

  2. 重启 MIM 同步服务。

连接器配置

  1. 在 Synchronization Service Manager UI 中,选择“连接器”和“创建”。 选择“ 图形 (Microsoft) ”,创建连接器并为其指定描述性名称。

新连接器映像

  1. 在 MIM 同步服务 UI 中,指定应用程序 ID 和生成的客户端密码。 MIM Sync 中配置的每个管理代理都应在Microsoft Entra ID中有自己的应用程序,以避免为同一应用程序并行运行导入。

包含连接详细信息的连接器设置图像

图 5. 连接页面

连接页面(图 5)包含使用的 Graph API 版本和租户名称。 客户端 ID 和客户端密码表示以前在 Microsoft Entra ID 中创建的应用程序的应用程序 ID 和密钥值。

连接器默认为 v1.0 以及 Microsoft Graph 全局服务的登录名和图形终结点。 如果租户位于国家云中,则需要更改配置以使用 国家云的终结点。 请注意,全球服务中的 Graph 的某些功能可能并非在所有国家/地区云中都可用。

  1. 在“全局参数”页面上进行任何必要的更改:

全局参数页图像

图 6. 全局参数页面

全局参数页面包含以下设置:

  • DateTime 格式:用于 Edm.DateTimeOffset 类型的任何属性的格式。 在导入过程中,所有日期都通过使用该格式转换为字符串。 设置格式适用于保存日期的任何属性。

  • HTTP 超时 (秒) – 每次 HTTP 调用 Graph 期间将使用的超时(以秒为单位)。

  • 在下次登录时强制更改已创建用户的密码:此选项用于将在导出过程中创建的新用户。 如果选项已启用,则 forceChangePasswordNextSignIn 属性将设置为 true,否则它将为 false。

配置连接器架构和操作

  1. 配置架构。 与 Graph v1.0 终结点一起使用时,连接器支持以下对象类型列表:
  • 用户

    • 完整/增量导入

    • 导出(添加、更新、删除)

    • 完整/增量导入

    • 导出(添加、更新、删除)

将连接器配置为使用 Graph beta 终结点时,可能会显示其他对象类型。

支持的属性类型的列表:

  • Edm.Boolean

  • Edm.String

  • Edm.DateTimeOffset(连接器空间中的字符串)

  • microsoft.graph.directoryObject(连接器空间中对任何受支持的对象的引用)

  • microsoft.graph.contact

以上列表中任一类型都支持多值属性(集合)。

连接器对所有对象的定位点和 DN 使用“id”属性。 因此,不需要重命名,因为图形 API不允许对象更改其id属性。

访问令牌生存期

Graph 应用程序需要访问令牌才能访问 Graph API。 连接器将为每个导入迭代请求一个新的访问令牌(导入迭代取决于页面大小)。 例如:

  • Microsoft Entra ID包含 10000 个对象

  • 在连接器中配置的页面大小为 5000

在这种情况下,导入期间将有两次迭代,每次迭代都会返回 5000 个对象进行同步。因此,一个新的访问令牌将被请求两次。

在导出期间,将为每个必须添加/更新/删除的对象请求一个新的访问令牌。

查询筛选器

图形 API终结点通过引入$filter参数来限制 GET 查询返回的对象数量。

为了能够使用查询筛选器来改进完整的导入性能周期,请在连接器属性的 “架构 1 ”页上启用 “添加对象筛选器 ”复选框。

连接器设置第一页图像,其中选中了“添加对象筛选器”复选框

之后,在 “架构 2 ”页上键入用于筛选用户、组、联系人或服务主体的表达式。

连接器设置第二页图像,其中包含示例筛选器 startsWith (displayName,'J')

在上面的屏幕截图中,筛选器 startsWith (displayName,“J') 设置为只读其 displayName 属性值以”J“开头的用户。

确保在连接器属性中选择筛选器表达式中使用的属性。

选择了 displayName 属性的连接器设置页面图像

有关 $filter 查询参数用法的详细信息,请参阅以下文章: 使用查询参数自定义响应

注意

Delta 查询终结点当前不提供筛选功能,因此筛选器的使用仅限于完全导入。 尝试在启用查询筛选器的情况下启动增量导入运行时会出现错误。

疑难解答

启用日志

如果 Graph 中有任何问题,可以使用日志定位问题。 因此,可以与使用通用连接器一样启用跟踪。 或只需将以下内容添加到 miiserver.exe.config(在 system.diagnostics/sources 部分中):

<source name="ConnectorsLog" switchValue="Verbose">
<listeners>
<add initializeData="ConnectorsLog"
type="System.Diagnostics.EventLogTraceListener, System, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ConnectorsLogListener" traceOutputOptions="LogicalOperationStack,
DateTime, Timestamp, Callstack" />
<remove name="Default" />
</listeners>
</source>

注意

如果“在单独的进程中运行此管理代理”已启用,则应使用 dllhost.exe.config 而不使用 miiserver.exe.config

访问令牌过期错误

连接器可能会返回 HTTP 错误 401 未授权,消息“访问令牌已过期。”:

错误详细信息图像

图 7. “访问令牌已过期。” 错误

此问题的原因可能是从 Azure 端配置访问令牌生存期。 默认情况下,访问令牌在 1 小时后过期。 若要延长过期时间,请参阅 此文

使用 Azure AD PowerShell 模块公共预览版本的示例

访问令牌生存期图像

New-AzureADPolicy -Definition @ ('{“TokenLifetimePolicy”:{“Version”:1, “AccessTokenLifetime”:“5:00:00”}}') -DisplayName “OrganizationDefaultPolicyScenario” -IsOrganizationDefault $true -Type “TokenLifetimePolicy”

后续步骤