扩展 API 驱动的预配以同步自定义属性

默认情况下,API 驱动的预配应用支持处理属于标准 SCIM 核心用户和企业用户架构的属性。 记录系统可能具有你可能希望将其包含在 API 驱动的预配中的自定义属性。 本高级教程介绍如何扩展 API 驱动的预配应用以处理其他自定义属性。

注意

在尝试此高级方案之前,建议使用以下 API 客户端 Graph ExplorercURL 之一验证现成预配应用配置是否按预期工作。

示例方案

你已配置 API 驱动的预配应用。 你成功使用属于标准 SCIM 核心用户和企业用户架构的属性预配应用,并在 Microsoft Entra ID 中预配用户。 现在,你希望将两个自定义属性 HireDateJobCode 从 HR 系统发送到入站预配 API 终结点。 你想将这两个自定义属性映射到 Microsoft Entra 属性 employeeHireDatejobTitle

步骤 1 - 扩展预配应用架构

在此步骤中,我们会将不属于标准 SCIM 架构的两个属性“HireDate”和“JobCode”添加到预配应用,并在预配数据流中使用它们。

  1. 以至少应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到 Entra ID>企业应用程序
  3. 打开 API 驱动型预配应用。
  4. 打开 “预配 ”边栏选项卡。
  5. 单击“ 编辑预配 ”按钮。
  6. 展开 “映射 ”部分,然后单击属性映射链接。
    编辑属性映射的屏幕截图。
  7. 向下滚动 “属性映射 ”页。 选择“ 显示高级选项 ”,然后单击 API 链接的“编辑属性”列表 编辑 API 属性列表的屏幕截图。
  8. 向下滚动到 “编辑属性列表 ”页的末尾。
  9. 将以下两个属性作为 SCIM 架构扩展添加到列表中。 可以使用自己的 SCIM 架构命名空间。
    urn:ietf:params:scim:schemas:extension:contoso:1.0:User:HireDate
    urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode
    添加自定义属性的屏幕截图。
  10. 保存 更改

注意

如果只想将几个其他属性添加到预配应用,请使用 Microsoft Entra 管理中心来扩展架构。 如果想要添加更多自定义属性(假设有 20 多个属性),我们建议使用 UpdateSchema CSV2SCIM PowerShell 脚本的模式 ,该脚本可自动执行上述手动过程。

步骤 2 - 映射自定义属性

现在,让我们将这些扩展添加到预配应用属性映射。

  1. 单击“属性映射”页上的“添加新映射”链接。 添加新映射的屏幕截图。

  2. urn:ietf:params:scim:schemas:extension:contoso:1.0:User:HireDate 属性映射到 employeeHireDate。 单击“确定”。
    招聘日期映射的屏幕截图。

  3. 接下来,为 title 选择现有映射,然后单击它以编辑映射。

  4. 编辑映射到表达式的属性,以将 urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode 纳入为 jobTitle Microsoft Entra 属性一部分。

      Join("", [title], "(", [urn:ietf:params:scim:schemas:extension:contoso:1.0:User:JobCode], ")")
    

    职位名称映射的屏幕截图。

    使用此表达式映射,如果 title 为“Tour Lead”且 JobCode 为“TL-1001”,则 Microsoft Entra 属性 jobTitle 将设置为“Tour Lead (TL-1001)”。

  5. 保存属性映射。

步骤 3 - 上传具有自定义属性的批量请求

  1. 打开 API 客户端 (Graph 浏览器/ cURL)。
  2. 使用 自定义属性复制粘贴批量请求
  3. 将批量请求发送到预配 API 终结点 URL。
    批量上传请求的屏幕截图。
  4. 一段时间后,可以检查预配日志来验证属性更改。
    预配日志的屏幕截图。
  5. 还可以在 Microsoft Entra 用户配置文件中验证更改。 Employee hire date 的值反映租户时区。
    用户配置文件的屏幕截图。

附录

具有自定义属性的批量请求

批量请求包括上述步骤中配置的自定义属性。

请求正文

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
    "Operations": [
    {
        "method": "POST",
        "bulkId": "701984",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"],
            "externalId": "701984",
            "userName": "bjensen@example.com",
            "name": {
                "formatted": "Ms. Barbara J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Barbara",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Babs Jensen",
            "nickName": "Babs",
            "emails": [
            {
              "value": "bjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "234300 Universal City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91608",
              "country": "USA",
              "formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5555",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Guide",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
                "employeeNumber": "701984",
                "costCenter": "4130",
                "organization": "Universal Studios",
                "division": "Theme Park",
                "department": "Tour Operations",
                "manager": {
                  "value": "89607",
                  "displayName": "John Smith"
                 }
            },
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User": {
                "HireDate": "2021-05-01T00:00:00-05:00",
                "JobCode": "TG-1001"
            }            
        }
    },
    {
        "method": "POST",
        "bulkId": "701985",
        "path": "/Users",
        "data": {
            "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User",
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"],
            "externalId": "701985",
            "userName": "Kjensen@example.com",
            "name": {
                "formatted": "Ms. Kathy J Jensen, III",
                "familyName": "Jensen",
                "givenName": "Kathy",
                "middleName": "Jane",
                "honorificPrefix": "Ms.",
                "honorificSuffix": "III"
            },
            "displayName": "Kathy Jensen",
            "nickName": "Kathy",
            "emails": [
            {
              "value": "kjensen@example.com",
              "type": "work",
              "primary": true
            }
            ],
            "addresses": [
            {
              "type": "work",
              "streetAddress": "100 Oracle City Plaza",
              "locality": "Hollywood",
              "region": "CA",
              "postalCode": "91618",
              "country": "USA",
              "formatted": "100 Oracle City Plaza\nHollywood, CA 91618 USA",
              "primary": true
            }
            ],
            "phoneNumbers": [
            {
              "value": "555-555-5545",
              "type": "work"
            }
            ],
            "userType": "Employee",
            "title": "Tour Lead",
            "preferredLanguage": "en-US",
            "locale": "en-US",
            "timezone": "America/Los_Angeles",
            "active":true,
            "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
              "employeeNumber": "701984",
              "costCenter": "4130",
              "organization": "Universal Studios",
              "division": "Theme Park",
              "department": "Tour Operations",
              "manager": {
                "value": "701984",
                "displayName": "Barbara Jensen"
             }
            },
            "urn:ietf:params:scim:schemas:extension:contoso:1.0:User": {
                "HireDate": "2022-07-15T00:00:00-05:00",
                "JobCode": "TL-1003"
            }            
        }
    }
],
    "failOnErrors": null
}

后续步骤