다음을 통해 공유


Microsoft Entra 사용자 프로비저닝 서비스의 SCIM 2.0 프로토콜 준수와 관련하여 알려진 문제 및 해결 방법

Microsoft Entra ID는 SCIM(System for Cross-Domain Identity Management) 2.0 프로토콜 사양에 정의된 인터페이스를 사용하여 웹 서비스가 앞에 있는 모든 애플리케이션 또는 시스템에 사용자 및 그룹을 자동으로 프로비전할 수 있습니다.

SCIM 2.0 프로토콜에 대한 Microsoft Entra 지원은 SCIM(도메인 간 ID 관리용 시스템)을 사용하여 Microsoft Entra ID에서 애플리케이션으로 사용자 및 그룹을 자동으로 프로비전하는 데 설명되어 있습니다. 여기에는 MICROSOFT Entra ID에서 SCIM 2.0을 지원하는 애플리케이션으로 사용자 및 그룹을 자동으로 프로비전하기 위해 구현하는 프로토콜의 특정 부분이 나열되어 있습니다.

이 문서에서는 Microsoft Entra 사용자 프로비저닝 서비스의 SCIM 2.0 프로토콜 준수와 관련한 현재와 과거의 문제 및 이러한 문제를 해결하는 방법을 설명합니다.

프로비저닝 작업 이해

프로비저닝 서비스는 작업 개념을 사용하여 애플리케이션에 대해 작동합니다. jobID는 진행률 표시줄에서 찾을 수 있습니다. 모든 새 프로비저닝 애플리케이션은 jobID scim를 사용하여 만들어집니다. SCIM 작업은 서비스의 현재 상태를 나타냅니다. 이전 작업에는 ID 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 엔드포인트 URL의 루트에 위치하려면 “/scim”이 필요함 2018년 12월 18일 customappSSO로 다운그레이드
확장 특성은 콜론 ":" 표기법 대신 특성 이름 앞에 점 . 표기법을 사용합니다. 2018년 12월 18일 customappSSO로 다운그레이드
다중 값 특성의 패치 요청에 있는 경로 필터 구문이 잘못됨 2018년 12월 18일 customappSSO로 다운그레이드
그룹 생성 요청에 있는 스키마 URI가 잘못됨 2018년 12월 18일 customappSSO로 다운그레이드
준수를 보장하기 위해 패치 동작 업데이트(예: 부울로 활성화 및 적절한 그룹 멤버 자격 제거) 아니요 미정 기능 플래그 사용

SCIM 동작을 변경하기 위한 플래그

기본 SCIM 클라이언트 동작을 변경하려면 애플리케이션의 테넌트 URL에 플래그를 사용합니다.

SCIM은 이후 동작에 플래그를 지정합니다.

다음 URL을 사용하여 패치 동작을 업데이트하고 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. 새 웹 브라우저 창에서 https://developer.microsoft.com/graph/graph-explorer로 이동하여 앱이 추가된 Microsoft Entra 테넌트의 관리자로 로그인합니다.

  6. Graph 탐색기에서 아래 명령을 실행하여 프로비저닝 작업의 ID를 찾습니다. “[object-id]”를 세 번째 단계에서 복사한 서비스 주체 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. 첫 번째 웹 브라우저 창으로 돌아가서 애플리케이션에 대한 프로비전 탭을 선택합니다.
  2. 구성을 확인한 후 프로비저닝 작업을 시작합니다.

이전 동작으로 다시 다운그레이드할 수 있지만 customappsso가 일부 업데이트의 혜택을 받지 않으며 영원히 지원되지 않을 수 있으므로 권장하지 않습니다.

  1. 최소한 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.

  2. Entra ID>Enterprise 앱으로 찾습니다.

  3. 애플리케이션 만들기 섹션에서 새 비갤리어 애플리케이션을 만듭니다.

  4. 새 사용자 지정 앱의 속성 섹션에서 개체 ID를 복사합니다.

  5. 새 웹 브라우저 창에서 https://developer.microsoft.com/graph/graph-explorer로 이동하여 앱이 추가된 Microsoft Entra 테넌트의 관리자로 로그인합니다.

  6. Graph 탐색기에서 아래 명령을 실행하여 앱의 프로비저닝 구성을 초기화합니다. “[object-id]”를 세 번째 단계에서 복사한 서비스 주체 ID(개체 ID)로 바꿉니다.

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

  7. 첫 번째 웹 브라우저 창으로 돌아가서 애플리케이션에 대한 프로비전 탭을 선택합니다.

  8. 일반적으로 하는 방법대로 사용자 프로비저닝 구성을 완료합니다.

다음 단계

SaaS 애플리케이션 프로비저닝 및 프로비전 해제에 대해 자세히 알아보기