次の方法で共有


Microsoft Entra ユーザー プロビジョニング サービスの SCIM 2.0 プロトコルへのコンプライアンスに関する既知の問題と解決策

Microsoft Entra ID は、 システム for Cross-Domain Identity Management (SCIM) 2.0 プロトコル仕様で定義されているインターフェイスを使用して、Web サービスによって前面に出される任意のアプリケーションまたはシステムにユーザーとグループを自動的にプロビジョニングできます。

SCIM 2.0 プロトコルに対する Microsoft Entra のサポートについては、「 System for Cross-Domain Identity Management (SCIM) を使用して Microsoft Entra ID からアプリケーションにユーザーとグループを自動的にプロビジョニングする」で説明されています。この場合、MICROSOFT Entra ID から SCIM 2.0 をサポートするアプリケーションにユーザーとグループを自動的にプロビジョニングするために実装されるプロトコルの特定の部分が一覧表示されます。

この記事では、Microsoft Entra ユーザー プロビジョニング サービスの SCIM 2.0 プロトコルへの準拠に関する現在および過去の問題と、これらの問題を回避する方法について説明されています。

プロビジョニング ジョブについて

プロビジョニング サービスでは、ジョブの概念を使用して、アプリケーションに対して操作を行います。 jobID は 進行状況バーにあります。 すべての新しいプロビジョニング アプリケーションは、 scim以降の jobID で作成されます。 scim ジョブはサービスの現在の状態を表します。 古いジョブには ID customappssoがあります。 このジョブは、2018 年のサービスの状態を表します。

ギャラリーでアプリケーションを使用している場合、ジョブには通常、アプリの名前 (zoom snowFlake や dataBricks など) が含まれます。 ギャラリー アプリケーションを使用する場合は、このドキュメントをスキップできます。 これは主に、jobID が SCIM または customAppSSO の、ギャラリー以外のアプリケーションに適用されます。

SCIM 2.0 へのコンプライアンスに関する問題と状態

この中で、固定としてマークされている項目は、SCIM ジョブで適切な動作が見つかることを意味します。 Microsoft は、加えた変更の下位互換性を確保するように取り組んでいます。 新しい実装用の新しい動作を使用し、既存の実装を更新することをお勧めします。 2018 年 12 月より前の既定の customappSSO 動作はサポートされなくなりました。

注意

2018 年に行われた変更については、customappsso の動作に戻す可能性があります。 2018 年以降に加えられた変更については、URL を使用して以前の動作に戻すことができます。 Microsoft では、以前の jobID に戻せるようにするか、フラグを使用して、Microsoft が加えた変更の下位互換性を確保するようにしました。 ただし、既に説明したように、サポートされなくなった古い動作を実装することはお勧めしません。 新しい実装用の新しい動作を使用し、既存の実装を更新することをお勧めします。

SCIM 2.0 コンプライアンスの問題 付け。 修正日 下位互換性
Microsoft Entra ID では、"/scim" がアプリケーションの SCIM エンドポイント URL のルート内にある必要がある はい 2018 年 12 月 18 日 customappSSO にダウングレード
拡張属性では、コロン ":" 表記ではなく、属性名の前にドット . 表記が使用されます はい 2018 年 12 月 18 日 customappSSO にダウングレード
複数値属性のパッチ要求に無効なパス フィルター構文が含まれている はい 2018 年 12 月 18 日 customappSSO にダウングレード
グループの作成要求に無効なスキーマ URI が含まれている はい 2018 年 12 月 18 日 customappSSO にダウングレード
PATCH の動作を更新してコンプライアンスを確保する (ブール値としての active、適切なグループ メンバーシップの削除など) いいえ 未定 機能フラグの使用

SCIM の動作を変更するフラグ

既定の SCIM クライアント動作を変更するには、アプリケーションのテナント URL のフラグを使用します。

SCIM フラグを後の動作に設定します。

次の URL を使用して PATCH の動作を更新し、SCIM へのコンプライアンスを確保します。 フラグは、次の動作を変更します。

  • ユーザーを無効にするために行われる要求
  • 単一値の文字列属性を追加するための要求
  • 複数の属性を置き換える要求
  • グループのメンバーを削除する要求

この動作は、現在、フラグを使用している場合にのみ使用できますが、今後数か月以内に既定の動作になる予定です。 この機能フラグは、現在、オンデマンド プロビジョニングでは機能しません。

同期エンジンが現在送信している内容と、機能フラグが有効になった後に送信される要求の概要を示すサンプル要求。

ユーザーを無効にするために行われた要求:

機能フラグなし

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Replace",
          "path": "active",
          "value": "False"
      }
  ]
}

機能フラグ付き

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "replace",
          "path": "active",
          "value": false
      }
  ]
}

単一値の文字列属性を追加するために行われた要求:

機能フラグなし

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
    {
      "op": "Add",
      "path": "nickName",
      "value": "Babs"
    }
  ]
}

機能フラグ付き

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    {
      "op": "add",
      "path": "nickName",
      "value": "Babs"
    }
  ]
}

複数の属性を置き換える要求:

機能フラグなし

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Replace",
          "path": "displayName",
          "value": "Pvlo"
      },
      {
          "op": "Replace",
          "path": "emails[type eq \"work\"].value",
          "value": "TestBcwqnm@test.microsoft.com"
      },
      {
          "op": "Replace",
          "path": "name.givenName",
          "value": "Gtfd"
      },
      {
          "op": "Replace",
          "path": "name.familyName",
          "value": "Pkqf"
      },
      {
          "op": "Replace",
          "path": "externalId",
          "value": "Eqpj"
      },
      {
          "op": "Replace",
          "path": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber",
          "value": "Eqpj"
      }
  ]
}

機能フラグ付き

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "replace",
          "path": "emails[type eq \"work\"].value",
          "value": "TestMhvaes@test.microsoft.com"
      },
      {
          "op": "replace",
          "value": {
              "displayName": "Bjfe",
              "name.givenName": "Kkom",
              "name.familyName": "Unua",
              "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber": "Aklq"
          }
      }
  ]
}

グループ メンバーを削除するために行われた要求:

機能フラグなし

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "Remove",
          "path": "members",
          "value": [
              {
                  "value": "u1091"
              }
          ]
      }
  ]
}

機能フラグ付き

{
  "schemas": [
      "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ],
  "Operations": [
      {
          "op": "remove",
          "path": "members[value eq \"7f4bc1a3-285e-48ae-8202-5accb43efb0e\"]"
      }
  ]
}
  • ダウングレード URL: ギャラリー以外のアプリケーションで新しい SCIM 準拠の動作が既定値になったら、次の URL を使用して、SCIM に準拠していない古い動作にロールバックできます: AzureAdScimPatch2017

前の customappsso ジョブから SCIM ジョブへのアップグレード

既存の customappsso ジョブを削除し、新しい SCIM ジョブを作成します。

  1. Microsoft Entra 管理センターに、少なくともアプリケーション管理者としてサインインします。

  2. Entra ID>Enterprise アプリを参照します。

  3. 既存の SCIM アプリケーションを見つけて選択します。

  4. 既存の SCIM アプリの [プロパティ] セクションで、 オブジェクト ID をコピーします

  5. 新しい Web ブラウザー ウィンドウで https://developer.microsoft.com/graph/graph-explorer に移動し、アプリの追加先の Microsoft Entra テナントの管理者としてサインインします。

  6. Graph エクスプローラーで次のコマンドを実行して、プロビジョニング ジョブの ID を確認します。 "[object-id]" を、手順 3 でコピーしたサービス プリンシパル ID (オブジェクト ID) に置き換えます。

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs

    ジョブの取得 ジョブ

  7. 結果内で、"customappsso" または "scim" のいずれかで始まる完全な "ID" 文字列をコピーします。

  8. バックアップを作成するために、次のコマンドを実行して属性マッピング構成を取得します。 前と同じ [object-id] を使用し、[job-id] を、最後の手順でコピーしたプロビジョニング ジョブ ID に置き換えます。

    GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/schema

  9. 最後の手順から JSON 出力をコピーし、テキスト ファイルに保存します。 この JSON には、前のアプリに追加したすべてのカスタム属性マッピングが含まれており、およそ数千行の JSON となります。

  10. 次のコマンドを実行して、プロビジョニング ジョブを削除します。

    DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]

  11. 次のコマンドを実行して、最新のサービス修正プログラムを含む新しいプロビジョニング ジョブを作成します。

POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { "templateId": "scim" }

  1. 最後の手順の結果内で、"scim" で始まる完全な "ID" 文字列をコピーします。 必要に応じて、次のコマンドで、[new-job-id] をコピーした新しいジョブ ID に置き換え、要求本文として手順 7 の JSON 出力を入力してコマンドを実行し、前の属性マッピングを再適用します。

PUT https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[new-job-id]/schema { <your-schema-json-here> }

  1. 最初の Web ブラウザー ウィンドウに戻り、アプリケーションの [プロビジョニング] タブ 選択します。
  2. 構成を確認し、プロビジョニング ジョブを開始します。

古い動作にダウングレードできますが、customappsso は私たちが行う更新プログラムの一部の恩恵を受けず、永遠にサポートされない可能性があるため、お勧めしません。

  1. Microsoft Entra 管理センターに、少なくともアプリケーション管理者としてサインインします。

  2. Entra ID>Enterprise アプリを参照します。

  3. [ アプリケーションの作成 ] セクションで、新しい ギャラリー以外の アプリケーションを作成します。

  4. 新しいカスタム アプリの [プロパティ ] セクションで、 オブジェクト ID をコピーします

  5. 新しい Web ブラウザー ウィンドウで https://developer.microsoft.com/graph/graph-explorer に移動し、アプリの追加先の Microsoft Entra テナントの管理者としてサインインします。

  6. Graph エクスプローラーで次のコマンドを実行して、アプリのプロビジョニング構成を初期化します。 "[object-id]" を、手順 3 でコピーしたサービス プリンシパル ID (オブジェクト ID) に置き換えます。

    POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs { templateId: "customappsso" }

  7. 最初の Web ブラウザー ウィンドウに戻り、アプリケーションの [プロビジョニング] タブ 選択します。

  8. 通常どおりにユーザー プロビジョニング構成を完了します。

次のステップ

SaaS アプリケーションへのプロビジョニングとプロビジョニング解除の詳細