ディレクトリ拡張属性との同期を構成する

名前空間: microsoft.graph

重要

Microsoft Graph のバージョンの /beta API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 API が v1.0 で使用できるかどうかを確認するには、 バージョン セレクターを使用します。

同期スキーマをカスタマイズして、ディレクトリAzure Active Directory (Azure AD) 属性を含めます。 この記事では、ディレクトリ拡張属性 (extension_9d98asdfl15980a_Nickname)を使用して、Salesforce で User.CommunityNickname の値を設定する方法について説明します。 このシナリオでは、オンプレミスAzure AD Connectからディレクトリ拡張属性の数をプロビジョニングするようにWindows Server Active Directory設定Azure AD。

この記事では、Azure Portalを介したテナントへの同期をサポートするアプリケーション、アプリケーションの表示名が分かっているアプリケーション、および Microsoft Graph の承認トークンが既に追加済みである必要があります。 承認トークンを取得する方法については、「Get access token to call Microsoft Graph」 を参照してください

サービス プリンシパル オブジェクトを表示名で検索する

次の例は、"Salesforce Sandbox" という表示名を持つサービス プリンシパル オブジェクトを検索する方法を示しています。

GET https://graph.microsoft.com/beta/servicePrincipals?$select=id,appId,displayName&$filter=startswith(displayName, 'salesforce')
Authorization: Bearer {Token}
{
    "@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"
    }
    ]
}

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

サービス プリンシパルのコンテキストで同期ジョブを一覧表示する

次の例は、作業に必要な jobId データを取得する方法を示しています。 通常、応答は 1 つのジョブのみを返します。

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

is {jobId} SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa .

必要なディレクトリ拡張属性の名前を検索する

拡張属性の完全な名前が必要です。 完全な名前 (extension_9d98asdfl15980a_Nickname に似ている必要があります) が分からない場合は、ディレクトリ拡張属性とそれらを検査する方法に関する次の情報を参照してください。

同期スキーマの取得

次の例は、同期スキーマを取得する方法を示しています。

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 Editor Online)を使用して、次の処理を行います。

  1. 属性の 属性定義 を追加 extension_9d98asdfl15980a_Nickname します。

    • ディレクトリの下で、"Azure Active Directory" という名前のディレクトリを見つけ、オブジェクトの配列で User という名前のディレクトリを検索 します
    • 次の例に示すように、名前と種類を指定して、新しい属性をリストに追加します。
  2. ユーザーとCommunityNickname のextension_9d98asdfl15980a_Nicknameを追加します。

    • synchronizationRules の下で、ソース ディレクトリAzure ADを指定し、Salesforce.com ディレクトリ ( ) として指定するルールを検索します "sourceDirectoryName": "Azure Active Directory", "targetDirectoryName": "salesforce.com"
    • ルールの objectMappings で、ユーザー間のマッピング () を検索します "sourceObjectName": "User", "targetObjectName": "User"
    • objectMapping の attributeMappings配列で、次の例に示すように、新しいエントリを追加します。
    {
        "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"
            },
        ]
    }
    

変更された同期スキーマを保存する

更新された同期スキーマを保存する場合は、変更されていない部分を含むスキーマ全体を含める必要があります。 この要求は、既存のスキーマを指定したスキーマに置き換える必要があります。

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

HTTP/1.1 201 No Content

スキーマが正常に保存された場合、同期ジョブの次の繰り返しで、Azure AD のすべてのアカウントの再処理が開始され、新しいマッピングがすべてのプロビジョニング済みアカウントに適用されます。