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에 플래그를 사용합니다.
다음 URL을 사용하여 패치 동작을 업데이트하고 SCIM 준수를 보장합니다. 플래그는 다음 동작을 변경합니다.
- 사용자를 사용하지 않도록 설정하기 위한 요청
- 단일 값 문자열 특성을 추가하기 위한 요청
- 여러 특성을 바꾸기 위한 요청
- 그룹 구성원을 제거하기 위한 요청
이 동작은 현재 플래그를 사용하는 경우에만 사용할 수 있지만 향후 몇 달 동안 기본 동작이 될 것입니다. 이 기능 플래그는 현재 주문형 프로비저닝에서 작동하지 않습니다.
- URL(SCIM 규격): aadOptscim062020
- SCIM RFC 참조:
기능 플래그를 사용하도록 설정한 후 전송되는 요청과 동기화 엔진이 현재 보내는 내용을 간략하게 설명하는 샘플 요청입니다.
사용자를 사용하지 않도록 설정하기 위한 요청:
기능 플래그가 없는 경우
{
"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 작업을 만듭니다.
최소한 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
Entra ID>Enterprise 앱으로 찾습니다.
기존 SCIM 애플리케이션을 찾아 선택합니다.
기존 SCIM 앱의 속성 섹션에서 개체 ID를 복사합니다.
새 웹 브라우저 창에서 https://developer.microsoft.com/graph/graph-explorer로 이동하여 앱이 추가된 Microsoft Entra 테넌트의 관리자로 로그인합니다.
Graph 탐색기에서 아래 명령을 실행하여 프로비저닝 작업의 ID를 찾습니다. “[object-id]”를 세 번째 단계에서 복사한 서비스 주체 ID(개체 ID)로 바꿉니다.
GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs
결과에서 “customappsso” 또는 “scim”으로 시작하는 전체 “ID” 문자열을 복사합니다.
백업을 수행할 수 있도록, 아래 명령을 실행하여 특성 매핑 구성을 검색합니다. 이전과 동일한 [object-id]를 사용하고, [job-id]를 마지막 단계에서 복사한 프로비저닝 작업 ID로 바꿉니다.
GET https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]/schema
마지막 단계의 JSON 출력을 복사하여 텍스트 파일에 저장합니다. JSON에는 이전 앱에 추가한 모든 사용자 지정 특성 매핑이 포함되어 있으며, 약 몇 천 줄의 JSON이 있어야 합니다.
아래 명령을 실행하여 프로비저닝 작업을 삭제합니다.
DELETE https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs/[job-id]
아래 명령을 실행하여 최신 서비스 수정 사항이 있는 새 프로비저닝 작업을 만듭니다.
POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs
{ "templateId": "scim" }
- 마지막 단계의 결과에서 “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> }
- 첫 번째 웹 브라우저 창으로 돌아가서 애플리케이션에 대한 프로비전 탭을 선택합니다.
- 구성을 확인한 후 프로비저닝 작업을 시작합니다.
SCIM 작업에서 customappsso 작업으로 다운그레이드(권장하지 않음)
이전 동작으로 다시 다운그레이드할 수 있지만 customappsso가 일부 업데이트의 혜택을 받지 않으며 영원히 지원되지 않을 수 있으므로 권장하지 않습니다.
최소한 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
Entra ID>Enterprise 앱으로 찾습니다.
애플리케이션 만들기 섹션에서 새 비갤리어 애플리케이션을 만듭니다.
새 사용자 지정 앱의 속성 섹션에서 개체 ID를 복사합니다.
새 웹 브라우저 창에서 https://developer.microsoft.com/graph/graph-explorer로 이동하여 앱이 추가된 Microsoft Entra 테넌트의 관리자로 로그인합니다.
Graph 탐색기에서 아래 명령을 실행하여 앱의 프로비저닝 구성을 초기화합니다. “[object-id]”를 세 번째 단계에서 복사한 서비스 주체 ID(개체 ID)로 바꿉니다.
POST https://graph.microsoft.com/beta/servicePrincipals/[object-id]/synchronization/jobs
{ templateId: "customappsso" }
첫 번째 웹 브라우저 창으로 돌아가서 애플리케이션에 대한 프로비전 탭을 선택합니다.
일반적으로 하는 방법대로 사용자 프로비저닝 구성을 완료합니다.