Compartilhar via


Configurar a sincronização com atributos de extensão de diretório

Namespace: microsoft.graph

Pode personalizar o esquema de sincronização para incluir Microsoft Entra atributos de extensão de diretório. Este artigo descreve como utilizar um atributo de extensão de diretório (extension_9d98asdfl15980a_Nickname) para preencher o valor de User.CommunityNickname no Salesforce. Neste cenário, tem o Microsoft Entra Connect configurado para aprovisionar vários atributos de extensão de diretório de Windows Server Active Directory no local para Microsoft Entra ID.

Este artigo pressupõe que já adicionou uma aplicação que suporta a sincronização com o seu inquilino através do centro de administração do Microsoft Entra, que sabe o nome a apresentar da aplicação e que tem um token de autorização para o Microsoft Graph. Para obter informações sobre como obter o token de autorização, consulte Obter tokens de acesso para chamar o Microsoft Graph.

Localizar o objeto do principal de serviço por nome a apresentar

O exemplo seguinte mostra como localizar um objeto principal de serviço com o nome a apresentar "Sandbox do Salesforce".

Solicitação

GET https://graph.microsoft.com/v1.0/servicePrincipals?$select=id,appId,displayName&$filter=startswith(displayName, 'salesforce')
Authorization: Bearer {Token}

Resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals(id,appId,displayName)",
    "value": [
    {
        "id": "167e33e9-f80e-490e-b4d8-698d4a80fb3e",
        "appId": "cd3ed3de-93ee-400b-8b19-b61ef44a0f29",
        "displayName": "Salesforce"
    },
    {
        "id": "8cbbb70b-7290-42da-83ee-89fa3517a977",
        "appId": "b0f2e3b1-fe31-4658-b216-44dcaeabb63a",
        "displayName": "salesforce 1"
    },
    {
        "id": "60443998-8cf7-4e61-b05c-a53b658cb5e1",
        "appId": "79079396-c301-405d-900f-e2e0c2439a90",
        "displayName": "Salesforce Sandbox"
    }
    ]
}

O {servicePrincipalId} é 60443998-8cf7-4e61-b05c-a53b658cb5e1.

Listar tarefas de sincronização no contexto do principal de serviço

O exemplo seguinte mostra-lhe como obter o jobId com o qual precisa de trabalhar. Geralmente, a resposta devolve apenas uma tarefa.

Solicitação

GET https://graph.microsoft.com/v1.0/servicePrincipals/60443998-8cf7-4e61-b05c-a53b658cb5e1/synchronization/jobs
Authorization: Bearer {Token}

Resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('60443998-8cf7-4e61-b05c-a53b658cb5e1')/synchronization/jobs",
    "value": [
        {
            "id": "SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa",
            "templateId": "SfSandboxOutDelta",
            "schedule": {},
            "status": {}
    }
    ]
}

O {jobId} é SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa.

Localize o nome do atributo de extensão de diretório de que precisa

Precisará do nome completo do atributo de extensão. Se não souber o nome completo (que deverá ter um aspeto semelhante ao extension_9d98asdfl15980a_Nickname), veja as seguintes informações sobre os atributos da extensão de diretório e como inspecioná-los:

Obter o esquema de sincronização

O exemplo seguinte mostra como obter o esquema de sincronização.

GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade. Todas as propriedades serão devolvidas numa chamada real.

HTTP/1.1 200 OK
Content-Type: application/json

{
  "directories": [
    {
      "id": "66e4a8cc-1b7b-435e-95f8-f06cea133828",
      "name": "Azure Active Directory",
      "objects": [
        {
          "attributes": [
            {
              "anchor": true,
              "caseExact": false,
              "defaultValue": null,
              "metadata": [],
              "multivalued": false,
              "mutability": "ReadWrite",
              "name": "objectId",
              "required": false,
              "referencedObjects": [],
              "type": "String"
            },
            {
              "anchor": false,
              "caseExact": false,
              "defaultValue": null,
              "metadata": [],
              "multivalued": false,
              "mutability": "ReadWrite",
              "name": "streetAddress",
              "required": false,
              "referencedObjects": [],
              "type": "String"
            }
          ],
          "name": "User"
        }
      ]
    },
    {
      "id": "8ffa6169-f354-4751-9b77-9c00765be92d",
      "name": "salesforce.com",
      "objects": []
    }
  ],
  "synchronizationRules": [
    {
      "editable": true,
      "id": "4c5ecfa1-a072-4460-b1c3-4adde3479854",
      "name": "USER_OUTBOUND_USER",
      "objectMappings": [
        {
          "attributeMappings": [
            {
              "defaultValue": "True",
              "exportMissingReferences": false,
              "flowBehavior": "FlowWhenChanged",
              "flowType": "Always",
              "matchingPriority": 0,
              "source": {
                "expression": "Not([IsSoftDeleted])",
                "name": "Not",
                "parameters": [
                  {
                    "key": "source",
                    "value": {
                      "expression": "[IsSoftDeleted]",
                      "name": "IsSoftDeleted",
                      "parameters": [],
                      "type": "Attribute"
                    }
                  }
                ],
                "type": "Function"
              },
              "targetAttributeName": "IsActive"
            }
          ],
          "enabled": true,
          "flowTypes": "Add, Update, Delete",
          "name": "Synchronize Azure Active Directory Users to salesforce.com",
          "scope": null,
          "sourceObjectName": "User",
          "targetObjectName": "User"
        }
      ]
    }
  ]
}

Adicionar uma definição para o atributo de extensão de diretório e um mapeamento entre os atributos

Utilize um editor de texto simples à sua escolha (por exemplo, Bloco de notas++ ou JSON Editor Online) para:

  1. Adicione uma definição de atributo para o extension_9d98asdfl15980a_Nickname atributo .

    • Em diretórios, localize o diretório com o nome "Microsoft Entra ID" e, na matriz do objeto, localize o denominado Utilizador.
    • Adicione o novo atributo à lista, especificando o nome e o tipo, conforme mostrado no exemplo seguinte.
  2. Adicione um mapeamento de atributos entre extension_9d98asdfl15980a_Nickname e CommunityNickname.

    • Em synchronizationRules, localize a regra que especifica Microsoft Entra ID como diretório de origem e Salesforce.com como o diretório de destino ("sourceDirectoryName": "Azure Active Directory", "targetDirectoryName": "salesforce.com").
    • Nos objectMappings da regra, localize o mapeamento entre utilizadores ("sourceObjectName": "User", "targetObjectName": "User").
    • Na matriz attributeMappings do objectMapping, adicione uma nova entrada, conforme mostrado no exemplo seguinte.
    {
        "directories": [
            {
                "id": "66e4a8cc-1b7b-435e-95f8-f06cea133828",
                "name": "Azure Active Directory",
                "objects": [
                    {
                        "attributes": [
                                ,{
                                "name": "extension_9d98asdfl15980a_Nickname",
                                "type": "String"
                                }
                        ],
                        "name":"User"
                    }]
            }
        ],
        "synchronizationRules": [
            {
            "editable": true,
            "id": "4c5ecfa1-a072-4460-b1c3-4adde3479854",
            "metadata": [..],
            "name": "USER_OUTBOUND_USER",
            "objectMappings": [
                {
                    "attributeMappings": [
                    ,{
                        "source": {
                            "name": "extension_9d98asdfl15980a_Nickname",
                            "type": "Attribute"
                        },
                        "targetAttributeName": "CommunityNickname"
                        }
                ],
                "name": "Synchronize Azure Active Directory Users to salesforce.com",
                    "scope": null,
                    "sourceObjectName": "User",
                    "targetObjectName": "User"
                }
            ],
            "priority": 1,
            "sourceDirectoryName": "Azure Active Directory",
            "targetDirectoryName": "salesforce.com"
            },
        ]
    }
    

Guardar o esquema de sincronização modificado

Quando guardar o esquema de sincronização atualizado, certifique-se de que inclui todo o esquema, incluindo as partes não modificadas. Este pedido substituirá o esquema existente pelo que fornecer.

PUT https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}
{
    "directories": [],
    "synchronizationRules": []
}

Se o esquema tiver sido guardado com êxito, o pedido devolve um 204 No Content código de resposta. Na próxima iteração da tarefa de sincronização, começará a reprocessar todas as contas no seu Microsoft Entra ID e os novos mapeamentos serão aplicados a todas as contas aprovisionadas.