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

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

注释

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

示例方案

已配置 API 驱动的预配应用。 您的预配应用已成功使用标准 SCIM Core 用户和企业用户架构中的属性,并在 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 客户端(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
}

后续步骤