Настройка синхронизации с атрибутами расширения каталога
Статья
Пространство имен: microsoft.graph
Схему синхронизации можно настроить так, чтобы она включала Microsoft Entra атрибуты расширения каталога. В этой статье описывается использование атрибута расширения каталога (extension_9d98asdfl15980a_Nickname) для заполнения значения User.CommunityNickname в Salesforce. В этом сценарии Microsoft Entra Connect настроено для подготовки ряда атрибутов расширения каталога из Windows Server Active Directory локальной среды в Microsoft Entra ID.
GET https://graph.microsoft.com/v1.0/servicePrincipals?$select=id,appId,displayName&$filter=startswith(displayName, 'salesforce')
Authorization: Bearer {Token}
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string []{ "id","appId","displayName" };
requestConfiguration.QueryParameters.Filter = "startswith(displayName, 'salesforce')";
requestConfiguration.Headers.Add("Authorization", "Bearer {Token}");
});
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc service-principals list --filter "startswith(displayName, 'salesforce')" --select "id,appId,displayName"
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
ServicePrincipalCollectionResponse result = graphClient.servicePrincipals().get(requestConfiguration -> {
requestConfiguration.queryParameters.select = new String []{"id", "appId", "displayName"};
requestConfiguration.queryParameters.filter = "startswith(displayName, 'salesforce')";
requestConfiguration.headers.add("Authorization", "Bearer {Token}");
});
GET https://graph.microsoft.com/v1.0/servicePrincipals/60443998-8cf7-4e61-b05c-a53b658cb5e1/synchronization/jobs
Authorization: Bearer {Token}
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].Synchronization.Jobs.GetAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Authorization", "Bearer {Token}");
});
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
SynchronizationJobCollectionResponse result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").synchronization().jobs().get(requestConfiguration -> {
requestConfiguration.headers.add("Authorization", "Bearer {Token}");
});
Имеет {jobId} значение SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa.
Найдите имя необходимого атрибута расширения каталога.
Вам потребуется полное имя атрибута расширения. Если вы не знаете полное имя (которое должно выглядеть как extension_9d98asdfl15980a_Nickname), ознакомьтесь со следующими сведениями об атрибутах расширения каталога и их проверке:
GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.ServicePrincipals["{servicePrincipal-id}"].Synchronization.Jobs["{synchronizationJob-id}"].Schema.GetAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Authorization", "Bearer {Token}");
});
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc service-principals synchronization jobs schema get --service-principal-id {servicePrincipal-id} --synchronization-job-id {synchronizationJob-id}
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
SynchronizationSchema result = graphClient.servicePrincipals().byServicePrincipalId("{servicePrincipal-id}").synchronization().jobs().bySynchronizationJobId("{synchronizationJob-id}").schema().get(requestConfiguration -> {
requestConfiguration.headers.add("Authorization", "Bearer {Token}");
});
В разделе каталоги найдите каталог с именем "Microsoft Entra ID", а в массиве объекта найдите каталог с именем User.
Добавьте новый атрибут в список, указав имя и тип, как показано в следующем примере.
Добавьте сопоставление атрибутов между extension_9d98asdfl15980a_Nickname и CommunityNickname.
В разделе synchronizationRules найдите правило, указывающее Microsoft Entra ID в качестве исходного каталога, а Salesforce.com в качестве целевого каталога ("sourceDirectoryName": "Azure Active Directory", "targetDirectoryName": "salesforce.com").
В objectMappings правила найдите сопоставление между пользователями ("sourceObjectName": "User", "targetObjectName": "User").
В массиве attributeMappingsобъекта objectMapping добавьте новую запись, как показано в следующем примере.
При сохранении обновленной схемы синхронизации убедитесь, что вы включили всю схему, включая неизмененные части. Этот запрос заменит существующую схему указанной схемой.
Если схема была успешно сохранена, запрос возвращает 204 No Content код ответа. При следующей итерации задания синхронизации начнется повторная обработка всех учетных записей в Microsoft Entra ID, а новые сопоставления будут применены ко всем подготовленным учетным записям.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.