用于 Microsoft Graph 的 Microsoft Identity Manager 连接器

“摘要”

用于 Microsoft Graph 的 Microsoft Identity Manager 连接器为 Azure AD Premium 客户启用其他集成方案。 它在 MIM 同步 Metaverse 中显示从 Microsoft Graph API v1 和 beta 版中获取的附加对象。

涵盖的方案

B2B 帐户生命周期管理

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

要了解如何将 MIM 同步配置为自动为来宾创建和维护 AD DS 帐户,请在阅读本文说明后,继续阅读文章通过 Azure 应用程序代理实现 MIM 2016 SP1 与 Azure AD 企业对企业 (B2B) 之间的协作。 本文说明了连接器所需的同步规则。

其他标识管理方案

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

准备使用 Microsoft Graph 的连接器

对连接器进行授权以检索或管理 Azure AD 目录中的对象

  1. 连接器需要在 Azure AD 中创建 Web 应用/API 用程序,这样就可以授予它适当的权限以通过 Microsoft Graph 对 Azure AD 对象进行操作。

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

    图 1. 新应用程序注册

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

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

    图 2. 应用程序 ID

  3. 通过打开"证书机密"生成 新的客户端 机密。 设置一些秘钥说明并选择必要的持续时间。 保存更改。 离开页面后密码值将不可用。

    图 3. 新建客户端密码

  4. 打开"API Graph",向应用程序授予适当的"Microsoft 应用"权限

    图 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.5.2 Framework 或更高版本
  • Microsoft Identity Manager 2016 SP1,并且必须使用修补程序 4.4.1642.0 KB4021562 或更高版本。
  1. 除了 Microsoft Identity Manager 2016 SP1 的其他连接器之外,Microsoft Graph 的连接器还可从 Microsoft 下载中心下载。

  2. 重启 MIM 同步服务。

连接器配置

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

新连接器映像

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

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

图 5. 连接页面

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

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

全局参数页图像

图 6. 全局参数页面

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

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

  • HTTP 超时(秒):将在每次对 WebAPI 应用程序发起 HTTP 调用期间使用的超时(以秒为单位)。

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

配置连接器架构和操作

  1. 配置架构。 连接器支持以下对象类型列表:
  • 用户

    • 完整/增量导入

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

    • 完整/增量导入

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

支持的属性类型的列表:

  • Edm.Boolean

  • Edm.String

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

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

  • microsoft.graph.contact

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

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

访问令牌生存期

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

  • Azure AD 包含 10000 个对象

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

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

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

查询筛选器

图形 API 端点提供了通过引入$filter参数来限制获取查询返回的对象量的能力。

若要允许使用查询筛选器来改善完全导入性能周期,请在连接器属性的 " 架构 1 " 页上启用 " 添加对象筛选器 " 复选框。

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

连接器设置页具有示例筛选器的两个图像 startsWith (displayName,' J ' )

在上面的屏幕截图上,筛选器 startsWith (displayName,"J" ) 设置为仅读取 displayName 属性值以 "J" 开头的用户。

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

已选中 displayName 属性的连接器设置页面图像

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

注意

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

疑难解答

启用日志

如果 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, Call stack" />
<remove name="Default" />
</listeners>
</source>

注意

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

访问令牌过期错误

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

错误详细信息图像

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

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

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

New-AzureADPolicy 定义 @ ( "{" TokenLifetimePolicy ": {" Version ":1, " AccessTokenLifetime ":" 5:00: 00 "}}" ) -DisplayName "OrganizationDefaultPolicyScenario"-IsOrganizationDefault $True-Type "TokenLifetimePolicy"

后续步骤