Microsoft Entra 使用者布建服務的 SCIM 2.0 通訊協定合規性的已知問題和解決方式

Microsoft Entra ID 可以自動將使用者和群組布建至 Web 服務前面的任何應用程式或系統,以及跨網域身分識別管理 (SCIM) 2.0 通訊協定規格 定義的介面。

SCIM 2.0 通訊協定的 Microsoft Entra ID 支援說明 為跨網域識別管理使用系統來自動將使用者和群組從 Microsoft Entra ID 布建至應用程式 ,其中列出它實作的通訊協定特定部分,以便將使用者和群組從 Microsoft Entra ID 自動布建至支援 SCIM 2.0 的應用程式。

本文說明 Microsoft Entra 使用者布建服務遵守 SCIM 2.0 通訊協定的目前和過去問題,以及如何解決這些問題。

瞭解布建作業

布建服務會使用作業的概念來對應用程式運作。 您可以在進度列中 找到 jobID。 所有新的布建應用程式都是使用從 「scim」 開始的 jobID 所建立。 scim 作業代表服務的目前狀態。 較舊的作業具有識別碼 「customappsso」。 此作業代表 2018 年服務的狀態。

如果您在資源庫中使用應用程式,作業通常會包含應用程式的名稱(例如 zoom snowFlake 或 dataBricks)。 使用資源庫應用程式時,您可以略過此檔。 這主要適用于具有 jobID SCIM 或 customAppSSO 的非資源庫應用程式。

SCIM 2.0 合規性問題和狀態

在下表中,任何標示為固定的專案都表示可以在 SCIM 作業上找到適當的行為。 我們已努力確保我們所做的變更回溯相容性。 建議針對任何新的實作使用新的行為,並更新現有的實作。 請注意,不再支援 2018 年 12 月之前預設值的 customappSSO 行為。

注意

對於 2018 年所做的變更,可以還原回 customappsso 行為。 對於自 2018 年以來所做的變更,您可以使用 URL 來還原回較舊的行為。 我們已努力確保我們所做的變更回溯相容性,方法是讓您還原回舊的 jobID 或使用 旗標。 不過,如先前所述,我們不建議實作舊行為,因為它不再受到支援。 建議針對任何新的實作使用新的行為,並更新現有的實作。

SCIM 2.0 合規性問題 固定? 修正日期 回溯相容性
Microsoft Entra ID 需要 「/scim」 位於應用程式 SCIM 端點 URL 的根目錄中 Yes 2018 年 12 月 18 日 降級為 customappSSO
擴充屬性在屬性名稱之前使用點 「.」 標記法,而不是冒號 「:」 標記法 Yes 2018 年 12 月 18 日 降級為 customappSSO
多重值屬性的修補要求包含不正確路徑篩選語法 Yes 2018 年 12 月 18 日 降級為 customappSSO
群組建立要求包含不正確架構 URI Yes 2018 年 12 月 18 日 降級為 customappSSO
更新 PATCH 行為以確保合規性(例如作用中做為布林值和適當的群組成員資格移除) No 待定 使用功能旗標

變更 SCIM 行為的旗標

在應用程式的租使用者 URL 中使用下列旗標,以變更預設 SCIM 用戶端行為。

SCIM flags to later behavior.

使用下列 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. 以至少應用程式管理員istrator 身分登入 Microsoft Entra 系統管理中心

  2. 流覽至 [ 身分 > 識別應用程式企業應用程式]。 >

  3. 找出並選取現有的 SCIM 應用程式。

  4. 在現有 SCIM 應用程式的 [ 屬性] 區段中,複製 [ 物件識別碼 ]。

  5. 在新的網頁瀏覽器視窗中,移至 https://developer.microsoft.com/graph/graph-explorer ,並以您應用程式新增所在 Microsoft Entra 租使用者的系統管理員身分登入。

  6. 在 Graph 總管中,執行下列命令來找出布建作業的識別碼。 將 「[object-id]」 取代為從第三個步驟複製的服務主體識別碼(物件識別碼)。

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

    Get Jobs

  7. 在結果中,複製開頭為 「customappsso」 或 「scim」 的完整 「ID」 字串。

  8. 執行下列命令來擷取屬性對應組態,以便進行備份。 使用與之前相同的 [object-id],並將 [job-id] 取代為從上一個步驟複製的布建作業識別碼。

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

    Get 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],然後輸入步驟 #7 的 JSON 輸出做為要求本文。

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

  1. 返回第一個網頁瀏覽器視窗,然後選取 應用程式的 [布建 ] 索引標籤。
  2. 確認您的設定,然後啟動布建作業。

我們可讓您降級回舊的行為,但不建議使用,因為 customappsso 不會受益于我們所做的一些更新,而且可能永遠不受支援。

  1. 以至少應用程式管理員istrator 身分登入 Microsoft Entra 系統管理中心

  2. 流覽至 [ 身分 > 識別應用程式企業應用程式]。 >

  3. 在 [ 建立應用程式 ] 區段中,建立新的 非資源庫 應用程式。

  4. 在新自訂應用程式的 [ 屬性] 區段中,複製 [ 物件識別碼 ]。

  5. 在新的網頁瀏覽器視窗中,移至 https://developer.microsoft.com/graph/graph-explorer ,並以您應用程式新增所在 Microsoft Entra 租使用者的系統管理員身分登入。

  6. 在 Graph 總管中,執行下列命令來初始化應用程式的布建組態。 將 「[object-id]」 取代為從第三個步驟複製的服務主體識別碼(物件識別碼)。

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

  7. 返回第一個網頁瀏覽器視窗,然後選取 應用程式的 [布建 ] 索引標籤。

  8. 如平常一樣完成使用者布建設定。

下一步

深入瞭解如何布建和取消布建至 SaaS 應用程式