Настройка синхронизации с атрибутами расширения каталога
Пространство имен: microsoft.graph
Схему синхронизации можно настроить так, чтобы она включала атрибуты расширения каталога Azure Active Directory (Azure AD). В этой статье описывается использование атрибута расширения каталога (extension_9d98asdfl15980a_Nickname) для заполнения значения User.CommunityNickname в Salesforce. В этом сценарии Azure AD Connect настроено для подготовки нескольких атрибутов расширения каталога из Windows Server Active Directory локальной среды в Azure AD.
В этой статье предполагается, что вы уже добавили приложение, которое поддерживает синхронизацию с клиентом на портале Azure, знаете отображаемое имя приложения и что у вас есть маркер авторизации для Microsoft Graph. Сведения о том, как получить маркер авторизации, см. в статье Получение маркеров доступа для вызова Microsoft Graph.
Поиск объекта субъекта-службы по отображаемого имени
В следующем примере показано, как найти объект субъекта-службы с отображаемым именем Salesforce Sandbox.
Запрос
GET https://graph.microsoft.com/beta/servicePrincipals?$select=id,appId,displayName&$filter=startswith(displayName, 'salesforce')
Authorization: Bearer {Token}
Отклик
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$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"
}
]
}
Имеет {servicePrincipalId}
значение 60443998-8cf7-4e61-b05c-a53b658cb5e1
.
Вывод списка заданий синхронизации в контексте субъекта-службы
В следующем примере показано, как получить jobId
объект , с которым необходимо работать. Как правило, ответ возвращает только одно задание.
Запрос
GET https://graph.microsoft.com/beta/servicePrincipals/60443998-8cf7-4e61-b05c-a53b658cb5e1/synchronization/jobs
Authorization: Bearer {Token}
Отклик
HTTP/1.1 200 OK
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals('60443998-8cf7-4e61-b05c-a53b658cb5e1')/synchronization/jobs",
"value": [
{
"id": "SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa",
"templateId": "SfSandboxOutDelta",
"schedule": {},
"status": {}
}
]
}
Имеет {jobId}
значение SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa
.
Найдите имя необходимого атрибута расширения каталога.
Вам потребуется полное имя атрибута расширения. Если вы не знаете полное имя (которое должно выглядеть как extension_9d98asdfl15980a_Nickname), ознакомьтесь со следующими сведениями об атрибутах расширения каталога и их проверке:
- Расширение схемы каталога Azure AD пользовательскими свойствами
- Расширения схемы каталогов | основные понятия API Graph
Получение схемы синхронизации
В следующем примере показано, как получить схему синхронизации.
GET https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}
Примечание. Объект отклика, показанный здесь, может быть сокращен для удобочитаемости. Все свойства будут возвращены в фактическом вызове.
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"
}
]
}
]
}
Добавьте определение атрибута расширения каталога и сопоставление между атрибутами.
Используйте редактор обычного текста по своему выбору (например, Блокнот++ или редактор JSON Online), чтобы:
Добавьте определение атрибута для атрибута
extension_9d98asdfl15980a_Nickname
.- В разделе каталоги найдите каталог с именем Azure Active Directory, а в массиве объекта найдите каталог с именем User.
- Добавьте новый атрибут в список, указав имя и тип, как показано в следующем примере.
Добавьте сопоставление атрибутов между extension_9d98asdfl15980a_Nickname и CommunityNickname.
- В разделе synchronizationRules найдите правило, указывающее Azure AD в качестве исходного каталога, а Salesforce.com в качестве целевого каталога (
"sourceDirectoryName": "Azure Active Directory", "targetDirectoryName": "salesforce.com"
). - В objectMappings правила найдите сопоставление между пользователями (
"sourceObjectName": "User", "targetObjectName": "User"
). - В массиве attributeMappingsобъекта objectMapping добавьте новую запись, как показано в следующем примере.
{ "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" }, ] }
- В разделе synchronizationRules найдите правило, указывающее Azure AD в качестве исходного каталога, а Salesforce.com в качестве целевого каталога (
Сохранение измененной схемы синхронизации
При сохранении обновленной схемы синхронизации убедитесь, что вы включили всю схему, включая неизмененные части. Этот запрос заменит существующую схему указанной схемой.
PUT https://graph.microsoft.com/beta/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}
{
"directories": [],
"synchronizationRules": []
}
Если схема была успешно сохранена, запрос возвращает 204 No Content
код ответа. При следующей итерации задания синхронизации начнется повторная обработка всех учетных записей в Azure AD, а новые сопоставления будут применены ко всем подготовленным учетным записям.