配置 Microsoft Entra ID 以将用户预配到 SQL 数据库中

本文档介绍了将用户从 Microsoft Entra ID 自动预配到 SQL 数据库中和取消预配所需执行的步骤。

有关此服务的功能、工作原理以及常见问题解答的重要详细信息,请查看文章使用 Microsoft Entra ID 自动将用户预配到 SaaS 应用程序和取消预配本地应用程序预配体系结构

以下视频概述了本地预配。

预配到 SQL 数据库的先决条件

本地先决条件

应用程序依赖于一个 SQL 数据库,可在其中创建、更新和删除用户记录。 运行预配代理的计算机应具有:

  • Windows Server 2016 或更高版本。
  • 与目标数据库系统的连接,并且可以出站连接到 login.microsoftonline.com、其他 Microsoft Online ServicesAzure 域。 例如,托管在 Azure IaaS 或代理后面的 Windows Server 2016 虚拟机。
  • 至少 3 GB 的 RAM。
  • .NET Framework 4.7.2
  • SQL 数据库的 ODBC 驱动程序。

与应用程序数据库的连接配置是通过向导完成的。 根据你选择的选项,一些向导屏幕可能不会出现,并且信息可能略有不同。 请使用以下信息来指导你完成配置。

支持的数据库

  • Microsoft SQL Server 和 Azure SQL
  • IBM DB2 9.x
  • IBM DB2 10.x
  • IBM DB2 11.5
  • Oracle 10g 和 11g
  • Oracle 12c 和 18c
  • MySQL 5.x
  • MySQL 8.x
  • Postgres

云要求

  • 使用 Microsoft Entra ID P1 或 Premium P2(或者 EMS E3 或 E5)的 Microsoft Entra 租户。

    使用此功能需要 Microsoft Entra ID P1 许可证。 要根据需要查找合适的许可证,请参阅比较 Microsoft Entra ID 的正式发布功能

  • 用于配置预配代理的混合标识管理员角色以及用于在 Azure 门户配置预配的应用程序管理员或云应用程序管理员角色。

  • 要预配到数据库的 Microsoft Entra 用户必须已填充数据库架构所需的任何属性,并且这些属性不是数据库本身生成的。

准备示例数据库

本文介绍了将 Microsoft Entra SQL 连接器配置为与应用程序的关系数据库进行交互。 通常,应用程序使用其 SQL 数据库中的表来管理访问,每个用户对应表中一行。 如果已经有一个带有数据库的应用程序,请继续学习下一部分内容。

出于演示目的,如果你还没有包含适当表的数据库,应创建一个允许 Microsoft Entra ID 使用的数据库。 如果你使用的是 SQL Server,请运行附录 A 中的 SQL 脚本。此脚本创建一个名为 CONTOSO 的示例数据库,其中包含一个 Employees 表。 这是你将用户预配到的数据库表。

表列
ContosoLogin Microsoft Entra 用户主体名称
FirstName Microsoft Entra 给定名称
LastName Microsoft Entra 姓氏
电子邮件 Exchange Online 电子邮件地址
InternalGUID 由数据库本身生成
AzureID Microsoft Entra 对象 ID
textID Microsoft Entra ID 邮件别名

确定 Microsoft Entra SQL 连接器与数据库进行交互的方式

你需要在 SQL 实例中拥有一个用户帐户,该用户帐户有权更新数据库表中的数据。 如果你的 SQL 数据库由其他人管理,请联系他们以获取 Microsoft Entra ID 用于对数据库进行身份验证的帐户名和密码。 如果 SQL 实例安装在不同的计算机上,还需要确保 SQL 数据库允许来自代理计算机上的 ODBC 驱动程序的传入连接。

如果应用程序已有数据库,则需要确定 Microsoft Entra ID 应如何与该数据库交互:通过数据库中已存在的存储过程或通过为查询和更新提供的 SQL 语句,直接与表和视图交互。 此设置是因为较复杂的应用程序可能在其数据库中具有其他辅助表,需要对具有数千用户的表进行分页,或者可能需要 Microsoft Entra ID 调用执行额外数据处理(如加密、哈希或有效性检查)的存储过程。

为连接器创建配置以与应用程序数据库交互时,首先需要配置一种方法,以便连接器主机读取数据库的架构,然后通过运行配置文件配置连接器应持续使用的方法。 每个运行配置文件指定连接器生成 SQL 语句的方式。 运行配置文件的选择以及运行配置文件中的方法取决于数据库引擎支持哪些内容以及应用程序的要求。

  • 配置后,预配服务启动时,它将自动执行在“完整导入”运行配置文件中配置的交互。 在此运行配置文件中,连接器将读取应用程序数据库中用户的所有记录,通常使用“SELECT”语句。 此运行配置文件是必需的,以便稍后如果 Microsoft Entra ID 需要为用户执行更改,Microsoft Entra ID 可知道在数据库中为该用户更新现有记录,而不是为该用户创建新记录。

  • 每次在 Microsoft Entra ID 进行更改(例如,向应用程序分配新用户或更新现有用户)时,预配服务都执行 SQL 数据库交互配置的“导出”运行配置文件。 在“导出”运行配置文件中,Microsoft Entra ID 将发出 SQL 语句以在数据库中插入、更新和删除记录,使数据库的内容与 Microsoft Entra ID 同步。

  • 如果数据库支持它,还可以选择性地配置“增量输入”运行配置文件。 在此运行配置文件中,Microsoft Entra ID 读取自上次完整导入或增量导入以来在数据库中所做的更改(而不是 Microsoft Entra ID 所做的更改)。 此运行配置文件是可选的,因为它需要结构化数据库以支持读取更改。

在连接器的每个运行配置文件的配置中,你需要指定 Microsoft Entra 连接器是应为表或视图生成自己的 SQL 语句、调用存储过程,还是应使用你提供的自定义 SQL 查询。 通常,你将对连接器中所有运行配置文件使用相同的方法。

  • 如果选择运行配置文件的表或视图方法,Microsoft Entra 连接器将生成必要的 SQL 语句“SELECT”、“INSERT”、“UPDATE”和“DELETE”,以便与数据库中的表或视图交互。 如果数据库包含单个表或一个可更新的视图,且其中现有行较少,则此方法是最简单的方法。
  • 如果选择“存储过程”方法,则数据库需要具有四个存储过程:读取用户页、添加用户、更新用户和删除用户,你将使用要调用的这些存储过程的名称和参数来配置 Microsoft Entra 连接器。 此方法需要在 SQL 数据库中进行更多配置,并且通常仅在应用程序需要对用户的每次更改进行更多处理时,才需要该方法,以通过大型结果集进行分页。
  • 如果选择“SQL 查询”方法,则需要在运行配置文件期间键入希望连接器发布的特定 SQL 语句。 你需要使用连接器应在 SQL 语句中填充的参数来配置连接器(例如,在导入期间对结果集进行分页,或在导出过程中设置要创建的新用户的属性)。

本文演示如何在“导出”和“全部导入”运行配置文件中使用表方法与示例数据库表 Employees 交互。 若要详细了解如何配置存储过程或 SQL 查询方法,请参阅通用 SQL 配置指南,其中提供了更多详细信息和具体要求。

选择应用程序数据库架构中的唯一标识符

大多数应用程序对应用程序的每个用户都有唯一标识符。 如果要预配到现有数据库表中,则应标识该表中的某一列,该列包含对应于每个用户的一个值,该值唯一且不会更改。 此列将是“定位点”,供 Microsoft Entra ID 用于标识现有行,以便更新或删除它们。 有关定位点的详细信息,请参阅关于定位点属性和可分辨名称

如果应用程序的数据库已存在,其中有用户,并且你想让 Microsoft Entra ID 保持这些用户处于最新状态,则需要为每个用户提供一个标识符,该标识符在应用程序的数据库和 Microsoft Entra 架构之间是相同的。 例如,如果将用户分配到 Microsoft Entra ID 中的应用程序,并且该用户已位于该数据库中,则 Microsoft Entra ID 中的该用户更改应会更新该用户的现有行,而不是添加新行。 由于 Microsoft Entra ID 可能未存储该用户的应用程序内部标识符,因此需要选择另一列来查询数据库。 此列的值可以是应用程序范围内 Microsoft Entra ID 中每个用户的用户主体名称、电子邮件地址、员工 ID 或其他标识符。 如果应用程序使用的用户标识符不是存储在用户的 Microsoft Entra 表示形式中的属性,则无需使用扩展属性扩展 Microsoft Entra 用户架构,也无需从数据库中填充该属性。 可以使用 PowerShell 扩展 Microsoft Entra 架构并设置扩展值。

将 Microsoft Entra ID 中的属性映射到数据库架构

如果 Microsoft Entra ID 已在 Microsoft Entra ID 中的用户和数据库中的记录之间建立联系,无论是对于数据库中已有的用户还是新用户,Microsoft Entra ID 都可以将属性更改从 Microsoft Entra 用户预配到数据库中。 除唯一标识符之外,请检查你的数据库以确定是否有任何其他必需的属性。 如果有,请确保将被预配到数据库中的用户具有可映射到所需属性的特性。

还可配置取消配置行为。 如果分配给应用程序的用户在 Microsoft Entra ID 中被删除,则 Microsoft Entra ID 将向数据库发送删除操作。 当用户超出使用应用程序的范围时,你可能还希望让 Microsoft Entra ID 更新数据库。 如果用户从应用中被取消分配、在 Microsoft Entra ID 中被软删除或被阻止登录,则可以将 Microsoft Entra ID 配置为发送属性更改。 如果要预配到现有数据库表中,则需要将该表的某一列映射到 isSoftDeleted。 当用户超出范围时,Microsoft Entra ID 会将该用户的值设置为 True

1. 安装 ODBC 驱动程序

将在其中安装预配代理的 Windows Server 需要适用于目标数据库的 ODBC 驱动程序。 如果你打算连接到 SQL Server 或 Azure SQL 数据库,应下载适用于 SQL Server (x64) 的 ODBC 驱动程序,然后在 Windows Server 上安装该驱动程序。 对于其他 SQL 数据库,请参阅独立软件供应商提供的关于如何安装 ODBC 驱动程序的指导。

2. 创建 DSN 连接文件

通用 SQL 连接器需要数据源名称 (DSN) 文件才能连接到 SQL 终结点。 首先,需要创建一个包含 ODBC 连接信息的文件。

  1. 在服务器上启动 ODBC 管理实用工具。 使用 64 位版本。

    显示 ODBC 管理界面的屏幕截图。

  2. 选择“DSN 文件”选项卡,然后选择“添加” 。

    显示“DSN 文件”选项卡的屏幕截图。

  3. 如果你使用的是 SQL Server 或 Azure SQL,请选择“SQL Server Native Client 11.0”,然后选择“下一步”。 如果你使用的是其他数据库,请选择其 ODBC 驱动程序。

    显示选择本机客户端的屏幕截图。

  4. 为文件指定名称,如“GenericSQL”,选择“下一步”。 显示命名连接器的屏幕截图。

  5. 选择“完成”。

    显示“完成”的屏幕截图。

  6. 配置连接。 根据你使用的 ODBC 驱动程序,以下步骤会有所不同。 此图假定你正在使用驱动程序连接到 SQL Server。 如果 SQL Server 位于不同的服务器计算机上,则输入该服务器的名称。 然后选择下一步

    显示输入服务器名称的屏幕截图。

  7. 如果正在运行此步骤的用户有权连接到数据库,请选择 Windows 身份验证。 如果 SQL Server 管理员需要 SQL 本地帐户,则改为提供这些凭据。 然后,选择“下一步”。

    显示“Windows 身份验证”的屏幕截图。

  8. 输入数据库的名称,本例中的名称为 CONTOSO。

    显示输入数据库名称的屏幕截图。

  9. 保留此屏幕上默认设置的所有内容,选择“完成”。

    显示选择“完成”的屏幕截图。

  10. 如要验证所有设置是否正常工作,请单击“测试数据源”。

    显示“测试数据源”的屏幕截图。

  11. 请确保测试成功。

    显示测试成功的屏幕截图。

  12. 选择“确定”两次。 关闭 ODBC 数据源管理器。 默认情况下,DSN 连接文件保存到“Documents”文件夹。

3.安装并配置 Microsoft Entra Connect 预配代理

如果已经下载了预配代理并为另一个本地应用程序进行了配置,请继续阅读下一节。

  1. 登录到 Azure 门户。
  2. 请转到“企业应用程序”并选择“新建应用程序”。
  3. 搜索“本地 ECMA 应用”应用程序,为该应用命名,然后选择“创建”以将其添加到租户。
  4. 在菜单中导航到应用程序的“预配”页。
  5. 选择“开始”。
  6. 在“预配”页上,将模式更改为“自动”。

选择自动的屏幕截图。

  1. 在“本地连接”下,选择“下载并安装”,然后选择“接受条款并下载”

代理下载位置的屏幕截图。

  1. 离开门户,运行预配代理安装程序,同意服务条款,然后选择“安装”。
  2. 等待 Microsoft Entra 预配代理配置向导,然后选择“下一步”。
  3. 在“选择扩展”步骤中,选择“本地应用程序预配”,然后选择“下一步”。
  4. 预配代理将使用操作系统的 Web 浏览器显示一个弹出窗口,供你向 Microsoft Entra ID 进行身份验证,还可能向组织的标识提供者进行身份验证。 如果使用 Internet Explorer 作为 Windows Server 上的浏览器,那么可能需要将 Microsoft 网站添加到浏览器的受信任站点列表中,以允许 JavaScript 正常运行。
  5. 当系统提示你授权时,请提供 Microsoft Entra 管理员的凭据。 用户必须至少具有混合标识管理员角色。
  6. 选择“确认”以确认设置。 安装成功后,可以选择“退出”,并关闭“预配代理包”安装程序。

4. 配置本地 ECMA 应用

  1. 返回到门户,在“本地连接”部分,选择已部署的代理,然后单击“分配代理”。

    显示如何选择并分配代理的屏幕截图。

  2. 在使用配置向导完成下一步配置时,请保持此浏览器窗口为打开状态。

5.配置 Microsoft Entra ECMA 连接器主机证书

  1. 在安装了预配代理的 Windows Server 上,右键单击开始菜单中的“Microsoft ECMA2Host 配置向导”,以管理员身份运行。 必须以 Windows 管理员身份运行,向导才能创建必要的 Windows 事件日志。

  2. 在 ECMA 连接器主机配置启动后,如果这是你第一次运行该向导,它将要求你创建证书。 保留默认端口 8585 并选择“生成证书”以生成证书。 自动生成的证书将作为部分受信任根证书进行自签名。 证书 SAN 与主机名匹配。

    显示配置设置的屏幕截图。

  3. 选择“保存”。

注意

如果选择生成新证书,请记录证书到期日期,以确保计划在证书到期前返回配置向导并重新生成证书。

6. 创建通用 SQL 连接器

在本部分中,你将为数据库创建连接器配置。

6.1 配置 SQL 连接

若要创建通用 SQL 连接器,请按照下列步骤操作:

  1. 生成一个机密令牌,用于向连接器验证 Microsoft Entra ID。 它至少应为 12 个字符,并且对于每个应用程序都是唯一的。

  2. 如果还没有这样做,请从 Windows 开始菜单启动“Microsoft ECMA2Host 配置向导”。

  3. 选择“新建连接器”。

    显示选择“新建连接器”的屏幕截图。

  4. 在“属性”页的文本框中填入图片下表格中的数值,选择“下一步”。

    显示输入属性的屏幕截图。

    属性
    名称 为连接器选择的名称,它在环境中的所有连接器中应是唯一的。 例如,如果你只有一个 SQL 数据库,则为 SQL
    自动同步计时器(分钟) 120
    机密令牌 输入你为此连接器生成的机密令牌。 密钥长度应不少于 12 个字符。
    扩展 DLL 对于通用 SQL 连接器,请选择“Microsoft.IAM.Connector.GenericSql.dll”。
  5. 在“属性”页,在文本框中填写图片下面表格中的数值,选择“下一步”。

    显示“连接性”页的屏幕截图。

    属性 说明
    DSN 文件 在上一步中创建的数据源名称文件,用于连接到 SQL 实例。
    用户名 有权对 SQL 实例中的表进行更新的帐户的用户名。 如果目标数据库是 SQL Server,并且你正在使用 Windows 身份验证,那么对于独立服务器,用户名必须采用 hostname\sqladminaccount 格式,对于域成员服务器,则必须采用 domain\sqladminaccount 格式。 对于其他数据库,用户名将是数据库中的本地帐户。
    密码 提供的用户名的密码。
    DN 是定位点 除非已知环境需要这些设置,否则不要选中“DN 为定位点”和“导出类型: 对象替换”复选框 。

6.2 从数据库中检索架构

提供凭据后,ECMA 连接器主机将准备好检索数据库的架构。 继续进行 SQL 连接配置:

  1. 在“架构 1”页面上,指定对象类型列表。 在此示例中,有一个对象类型 User。 在文本框中填写图片下方的表中指定的值,然后选择“下一步”。

    显示“架构 1”页的屏幕截图。

    属性
    对象类型检测方法 固定值
    固定值列表/表/视图/SP 用户
  2. 选择“下一页”后,下一个页面会自动显示,用于配置 User 对象类型。 在“架构 2”页上,你将指示用户在你的数据库中是如何表现的。 在本例中,它是一个名为 Employees 的单一 SQL 表。 在文本框中填写图片下方的表中指定的值,然后选择“下一步”。

    显示“架构 2”页的屏幕截图。

    属性
    用户: 属性检测
    用户: 表/视图/SP 数据库中表的名称,例如 Employees

    注意

    如果发生错误,请检查数据库配置,以确保在“连接”页上指定的用户对数据库架构拥有读取访问权限。

  3. 选择“下一步”后,将自动显示下一页,以便选择前面指定的表(例如此示例中的 Employees 表)的列,这些列将用作用户的 AnchorDN 这些列包含数据库中的唯一标识符。 可以使用相同或不同的列,但请确保此数据库中已有的所有行在这些列中具有唯一值。 在“架构 3”页的文本框中填写图片下表格中的数值,选择“下一步”。

    显示“架构 3”页的屏幕截图。

    属性 说明
    为以下用户选择定位点:User 要用于定位点的数据库表的列,例如 User:ContosoLogin
    选择用户的 DN 属性 要用于 DN 属性的数据库列,例如 AzureID
  4. 选择“下一页”后,下一个页面会自动显示,用于确认 Employee 表的每一列的数据类型,以及连接器是应导入还是导出它们。 在“架构 4”页,保留默认值,选择“下一步”。

    显示“架构 4”页的屏幕截图。

  5. 在“全局”页上,填写文本框,然后选择“下一步” 。 按照图像下方的表填写各个文本框。

    显示“全局”页的屏幕截图。

    属性 说明
    增量策略 对于 IBM DB2,请选择 None
    水印查询 对于 IBM DB2,请键入 SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1;
    数据源日期时间格式 对于 SQL Server、yyyy-MM-dd HH:mm:ss 和 IBM DB2,YYYY-MM-DD
  6. 在“分区”页,选择“下一步”。

    显示“分区”页的屏幕截图。

6.3 配置运行配置文件

接下来,你将配置“导出”和“完全导入”运行配置文件。 当 ECMA 连接器主机需要将 Microsoft Entra ID 中的更改发送到数据库时,将使用“导出”运行配置文件来插入、更新和删除记录。 当 ECMA 连接器主机服务启动时,将使用“完全导入”运行配置文件来读取数据库的当前内容。 在此示例中,你将在两个运行配置文件中使用 Table 方法,以便 ECMA 连接器主机生成必需的 SQL 语句。

继续进行 SQL 连接配置:

  1. 在“运行配置文件”页,保持“导出”复选框为选中状态。 选择“全部导入”复选框,选择“下一步”。

    显示“运行配置文件”页的屏幕截图。

    属性 说明
    导出 将数据导出到 SQL 的运行配置文件。 此运行配置文件是必选的。
    完全导入 将从前面指定的 SQL 源导入所有数据的运行配置文件。
    增量导入 将仅导入自上次完整导入或增量导入后的 SQL 更改的运行配置文件。
  2. 选择“下一页”后,下一个页面会自动显示,可在其中配置“导出”运行配置文件的方法。 在“导出”页,填写文本框,选择“下一步”。 按照图像下方的表填写各个文本框。

    显示“导出”页的屏幕截图。

    属性 说明
    操作方法
    表/视图/SP 与“架构 2”选项卡上配置的表相同,例如 Employees
  3. 填写“全部导入”页的文本框,选择“下一步”。 按照图像下方的表填写各个文本框。

    显示“完全导入”页的屏幕截图。

    属性 说明
    操作方法
    表/视图/SP 与“架构 2”选项卡上配置的表相同,例如 Employees

6.4 配置属性在 Microsoft Entra ID 中的显示方式

在 SQL 连接设置的最后一步,配置如何在 Microsoft Entra ID 中显示属性:

  1. 填写“对象类型”页的文本框,选择“下一步”。 按照图像下方的表填写各个文本框。

    • 定位点:此属性的值对于目标数据库中的每个对象都应是唯一的。 Microsoft Entra 预配服务将在初始周期后使用此属性查询 ECMA 连接器主机。 此定位点值应与之前在“架构 3”页上配置的定位点列相同
    • 查询属性:此属性应当与定位点相同。
    • DN:在大多数情况下,应选择“自动生成”选项。 如果未选中此项,请确保将 DN 属性映射到 Microsoft Entra ID 中的属性,其按以下格式存储 DN:CN = anchorValue, Object = objectType。 有关定位点和 DN 的详细信息,请参阅关于定位点属性和可分辨名称
    属性 说明
    “目标对象” 用户
    定位点 在“架构 3”选项卡中配置的列,例如 ContosoLogin
    查询属性 与定位点相同的列,例如 ContosoLogin
    DN 与架构 3 选项卡中配置的列相同,例如 ContosoLogin
    自动生成 已选中
  2. ECMA 连接器主机可发现目标数据库支持的属性。 可以选择要公开给 Microsoft Entra ID 的属性。 然后,可在 Azure 门户中配置这些属性以进行预配。 在“选择属性”页面上,添加下拉列表中的所有属性,一次添加一个。

“属性”下拉列表中显示在目标数据库中发现、且先前未在“选择属性”页中选择的任何属性。 添加所有相关属性后,选择“下一步”。

属性下拉列表的屏幕截图。

  1. 在“取消预配”页,“禁用流”下,选择“删除”。 在前一个页中选择的属性将无法在“取消预配”页中进行选择。 选择“完成”。

注意

如果选择设置属性值,请注意仅允许布尔值。

显示“取消设置”页的屏幕截图。

7. 确保 ECMA2Host 服务正在运行

  1. 在运行 Microsoft Entra ECMA 连接器主机的服务器上,选择“启动”。

  2. 在框中键入“run”,并输入“services.msc”。

  3. 在“服务”列表,确保“Microsoft ECMA2Host”存在且正在运行。 否则,请选择“启动”。

    显示服务正在运行的屏幕截图。

如果要连接到一个新的数据库或一个空的且没有用户的目录服务器,请继续阅读下一节。 否则,请按照以下步骤确认连接器已从数据库中识别出现有用户。

  1. 如果最近启动了该服务,并且数据库中有许多用户对象,请等待几分钟,让连接器与数据库建立连接。

8. 在 Azure 门户中配置应用程序连接

  1. 返回到在其中配置应用程序预配的 Web 浏览器窗口。

    注意

    如果窗口已超时,则需要重新选择代理。

    1. 登录到 Azure 门户。
    2. 转到“企业应用程序”和“本地 ECMA 应用”应用程序 。
    3. 选择“预配”。
    4. 如果出现“开始”,则将模式更改为“自动”,在“本地连接”部分,选择部署的代理并选择“分配代理”。 否则,请转到“编辑预配”。
  2. 在“管理员凭据”部分中,输入以下 URL。 将 {connectorName} 部分替换为 ECMA 连接器主机上的连接器名称,例如“SQL”。 连接器名称区分大小写,并且应该与向导中配置的大小写相同。 也可以将 localhost 替换为计算机主机名。

    属性 Value
    租户 URL https://localhost:8585/ecma2host_{connectorName}/scim
  3. 输入你在创建连接器时定义的“机密令牌”值。

    注意

    如果你刚刚将代理分配到应用程序,请等待 10 分钟,以便完成注册。 在注册完成之前,连接性测试将无法正常工作。 通过在服务器上重新启动预配代理来强制完成代理注册,可以加快注册过程。 转到你的服务器,在 Windows 搜索栏中搜索“服务”,找到“Microsoft Entra Connect 预配代理服务”,右键单击该服务并重启。

  4. 单击“测试连接性”并等待一分钟。

    显示正在分配代理的屏幕截图。

  5. 连接测试成功并表明提供的凭据有权启用预配后,选择“保存”。

    显示正在测试代理的屏幕截图。

9. 配置属性映射

现在,需要在 Microsoft Entra ID 中的用户表示形式与本地应用程序的 SQL 数据库中的用户表示形式之间映射属性。

你将使用 Azure 门户配置 Microsoft Entra 用户的属性与你之前在 ECMA 主机配置向导中选择的属性之间的映射。

  1. 确保 Microsoft Entra 架构包含数据库所需的属性。 如果数据库要求用户具有一个属性(例如 uidNumber),而该属性还不是用户的 Microsoft Entra 架构的一部分,那就需要使用目录扩展功能将该属性添加为扩展。

  2. 在 Microsoft Entra 管理中心的“企业应用程序”下,选择“本地 ECMA 应用”应用程序,然后选择“预配”页面。

  3. 选择“编辑预配”,然后等待 10 秒。

  4. 展开“映射”,然后选择“预配 Microsoft Entra ID 用户”映射。 如果这是首次为此应用程序配置属性映射,则仅有一个用于占位符的映射存在。

    显示正在预配用户的屏幕截图。

  5. 要确认数据库的架构在 Microsoft Entra ID 中可用,请选中“显示高级选项”复选框并选择“编辑 ScimOnPremises 的属性列表”。 确保列出配置向导中选择的所有属性。 如果没有,请等待几分钟让架构刷新,然后重新加载页面。 看到属性列出后,关闭页面以返回到映射列表。

  6. 现在,单击“userPrincipalName”占位符映射。 首次配置本地预配时,默认会添加此映射。

占位符的屏幕截图。 更改属性值,与下方保持一致:

映射类型 源属性 目标属性
直接 userPrincipalName urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:ContosoLogin

更改值的屏幕截图。

  1. 现在选择“添加新映射”,并为每个映射重复接下来的步骤。

    显示“添加新映射”的屏幕截图。

  2. 为下表中的每个映射指定源和目标属性。

    显示正在保存映射的屏幕截图。

    映射类型 源属性 目标属性
    直接 userPrincipalName urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:ContosoLogin
    直接 objectId urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:AzureID
    直接 mail urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:Email
    直接 givenName urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:FirstName
    直接 surname urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:LastName
    直接 mailNickname urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:textID
  3. 添加所有映射后,选择“保存”。

10. 将用户分配到应用程序

让 Microsoft Entra ECMA 连接器主机与 Microsoft Entra ID 通信并配置属性映射后,接下来即可继续配置预配对象的范围。

重要

如果使用混合标识管理员角色登录,则在本部分,你需要先退出登录,然后使用至少具有应用程序管理员角色的帐户登录。 混合标识管理员角色无权将用户分配到应用程序。

如果 SQL 数据库中存在现有用户,则应为这些现有用户创建应用程序角色分配。 若要详细了解如何批量创建应用程序角色分配,请参阅管理 Microsoft Entra ID 中的应用程序现有用户

否则,如果没有应用程序的当前用户,则从 Microsoft Entra 中选择一个将预配到应用程序的测试用户。

  1. 确保用户具有将映射到数据库架构所需特性的所有属性。

  2. 在 Microsoft Azure AD 门户中,选择“企业应用程序”。

  3. 选择“本地 ECMA 应用”应用程序。

  4. 在左边的“管理”下,选择“用户和组” 。

  5. 选择“添加用户/组”。

    显示添加用户的屏幕截图。

  6. 在“用户”下,单击“未选择”。

    显示“未选择”界面的屏幕截图。

  7. 在屏幕右侧选择用户,单击“选择”按钮。

    显示“选择用户”的屏幕截图。

  8. 单击“分配”。

    显示“分配用户”的屏幕截图。

11. 测试预配

属性已映射完毕并且已分配用户,接下来可通过一个用户测试按需预配。

  1. 在 Microsoft Azure AD 门户中,选择“企业应用程序”。

  2. 选择“本地 ECMA 应用”应用程序。

  3. 在左侧,选择“预配”。

  4. 选择“按需预配”。

  5. 搜索一个测试用户,选择“预配”。

    显示测试预配的屏幕截图。

  6. 几秒钟后,将出现消息“已在目标系统中成功创建用户”,其中包含用户属性列表。

12. 开始预配用户

  1. 按需预配成功后,返回“预配配置”页。 确保将范围设置为“仅限已分配的用户和组”,将预配状态设置为“开启”,单击“保存”。

    显示开始预配的屏幕截图。

  2. 等待几分钟,以便系统开始预配。 该过程可能需要用时 40 分钟以上。 预配作业完成后,如果已完成测试,可以按照下一部分所述,将预配状态更改为“关”,然后选择“保存”。 此操作将停止预配服务的运行。

排除预配错误

如果显示错误,请选择“查看预配日志”。 在日志中查找状态为“失败”的行,然后选择该行。

如果错误消息是“无法创建用户”,则根据数据库架构的要求检查显示的属性。

有关详细信息,请转到“疑难解答和建议”选项卡。如果 ODBC 驱动程序返回一条消息,它可显示在这里。 例如,消息 ERROR [23000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert the value NULL into column 'FirstName', table 'CONTOSO.dbo.Employees'; column does not allow nulls. 是指 ODBC 驱动程序出现错误。 在这种情况下,column does not allow nulls 可能指示数据库中的 FirstName 列是必需的,但要预配的用户没有 givenName 属性,因此无法预配用户。

检查用户是否已成功预配

等待完毕,检查 SQL 数据库,确保正在预配用户。

检查是否已预配用户的屏幕截图。

附录 A

如果你使用的是 SQL Server,可以使用以下 SQL 脚本来创建示例数据库。

---Creating the Database---------
Create Database CONTOSO
Go
-------Using the Database-----------
Use [CONTOSO]
Go
-------------------------------------

/****** Object:  Table [dbo].[Employees]    Script Date: 1/6/2020 7:18:19 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Employees](
	[ContosoLogin] [nvarchar](128) NULL,
	[FirstName] [nvarchar](50) NOT NULL,
	[LastName] [nvarchar](50) NOT NULL,
	[Email] [nvarchar](128) NULL,
	[InternalGUID] [uniqueidentifier] NULL,
	[AzureID] [uniqueidentifier] NULL,
	[textID] [nvarchar](128) NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Employees] ADD  CONSTRAINT [DF_Employees_InternalGUID]  DEFAULT (newid()) FOR [InternalGUID]
GO

后续步骤