콘텐츠로 건너뛰기

SCIM API 참조

XID에 사용자와 그룹을 프로비저닝하는 SCIM 2.0 엔드포인트 계약.

Markdown으로 보기

기본 URL

XID는 /scim/v2/organizations/{organization_id} 아래에서 조직 범위 SCIM 2.0 API를 제공합니다. 사용자 및 그룹 리소스는 경로의 조직 ID로 지정됩니다.

ID 공급자에 기본 URL을 설정하세요 https://xid.dev/scim/v2/organizations/{organization_id} 그리고 디렉터리를 만들거나 순환할 때 한 번만 표시되는 디렉터리 토큰입니다.

curl https://xid.dev/scim/v2/organizations/{organization_id}/Users \
  -H 'Authorization: Bearer scim_xxx' \
  -H 'Content-Type: application/scim+json'

인증

SCIM 호출은 관리 API에서 생성한 디렉터리 Bearer 토큰을 사용합니다. XID는 토큰 해시만 저장하며 생성 또는 순환 시 평문 토큰을 한 번만 반환합니다.

헤더 참고
Authorization Bearer scim_xxx 조직 범위 사용자 및 그룹 엔드포인트에 필요합니다.
Content-Type application/scim+json POST, PUT, PATCH 요청에 필요합니다.
Accept application/scim+json 모든 SCIM 클라이언트에 권장됩니다.

엔드포인트

엔드포인트 방법 사용
/scim/v2/ServiceProviderConfig GET SCIM 클라이언트 검색을 위한 ServiceProviderConfig 응답입니다.
/scim/v2/Schemas GET 사용자 및 그룹 스키마 메타데이터입니다.
/scim/v2/ResourceTypes GET 지원되는 SCIM 리소스 유형입니다.
/scim/v2/organizations/{organization_id}/Users GET, POST 디렉터리 사용자를 만들고 조회합니다.
/scim/v2/organizations/{organization_id}/Users/{id} GET, PUT, PATCH, DELETE 디렉터리 사용자 하나를 조회, 교체, 패치 또는 프로비저닝 해제합니다.
/scim/v2/organizations/{organization_id}/Groups GET, POST 디렉터리 그룹을 만들고 조회합니다.
/scim/v2/organizations/{organization_id}/Groups/{id} GET, PUT, PATCH, DELETE 디렉터리 그룹 하나를 조회, 교체, 패치 또는 제거합니다.

사용자 리소스

사용자 리소스는 외부 식별자로 userName을 사용합니다. 이메일 값, 프로필 이름 필드, 활성 상태, 엔터프라이즈 확장 필드는 SCIM 원본 프로필에 보존됩니다.

SCIM 필드 XID 동작
id 안정적인 XID 디렉터리 사용자 ID입니다.
userName 필수입니다. 디렉터리 안에서 고유해야 합니다.
active false는 사용자를 프로비저닝 해제하고 활성 세션을 폐기합니다.
emails 기본 이메일은 매칭과 계정 연결에 사용됩니다.
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User 부서 같은 엔터프라이즈 속성을 위해 저장되고 반환됩니다.
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
  "userName": "alice@example.com",
  "active": true,
  "name": { "givenName": "Alice", "familyName": "Lee" },
  "emails": [{ "value": "alice@example.com", "primary": true }]
}

그룹 리소스

그룹 리소스는 displayName을 고유한 디렉터리 그룹 이름으로 사용합니다. 멤버는 SCIM 사용자 ID를 참조하며 멱등 방식으로 동기화됩니다.

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
  "displayName": "Engineering",
  "members": [
    { "value": "dir_user_123", "display": "alice@example.com" }
  ]
}

필터링, 정렬 및 페이지네이션

XID는 and, or, not 및 비교 연산자(eq, ne, co, sw, ew, gt, ge, lt, le, pr)를 포함한 SCIM 필터 문법을 지원합니다. 지원되지 않는 식은 invalidFilter를 반환합니다. 목록 응답은 startIndex, count, totalResults를 사용하는 SCIM 1 기반 페이지네이션과 선택적 sortBy, sortOrder를 사용합니다.

쿼리 지원
filter=userName eq "alice@example.com" userName으로 사용자 하나를 찾습니다.
filter=displayName eq "Engineering" displayName으로 그룹 하나를 찾습니다.
filter=userName sw "alice" and active eq true 논리 연산자와 비교 연산자를 결합합니다.
sortBy=userName&sortOrder=ascending 사용자 또는 그룹 목록 결과를 정렬합니다.
startIndex=1&count=100 첫 결과부터 최대 100개 리소스를 반환합니다.
attributes=userName,emails.value schemas, id 및 요청된 SCIM 속성만 반환합니다.
excludedAttributes=emails,meta 제외된 SCIM 속성이 없는 기본 리소스를 반환합니다.

일괄 작업

POST /scim/v2/organizations/{organization_id}/Bulk는 최대 100개 작업, 1MiB 페이로드 제한의 BulkRequest를 받습니다. 일부 작업이 실패해도 BulkResponse에서 작업별 HTTP 상태를 반환합니다.

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
  "Operations": [
    {
      "method": "POST",
      "path": "/Users",
      "bulkId": "user1",
      "data": { "userName": "alice@example.com", "active": true }
    }
  ]
}

ETag and If-Match

리소스 GET 응답에는 meta.versionETag: W/"<meta.version>"가 포함됩니다. PUTPATCH는 현재 버전과 일치하는 If-Match 헤더가 필요하며, 누락 시 428, 불일치 시 412를 반환합니다.

PATCH 작업

PATCH 요청은 urn:ietf:params:scim:api:messages:2.0:PatchOp를 사용합니다. XID는 쓰기 가능한 프로필 필드와 그룹 멤버십에 대해 add, replace, remove를 지원합니다.

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

오류 응답

SCIM 오류는 SCIM 오류 스키마, HTTP 상태, 세부 정보, 선택적 scimType와 함께 application/scim+json을 반환합니다.

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
  "status": "409",
  "scimType": "uniqueness",
  "detail": "userName already exists"
}

ServiceProviderConfig 기능

  • ServiceProviderConfigsort.supported=true, bulk.supported=true, etag.supported=true를 공개합니다.
  • XID는 외부 IdP용 inbound SCIM Service Provider 엔드포인트를 제공합니다. Downstream SaaS SCIM push client는 로컬 fake-SaaS 증거가 있지만, 프로덕션 지원에는 여전히 실제 SaaS 관리자 L4가 필요합니다.

프로비저닝 해제 동작

  • 디렉터리 토큰 순환은 짧은 유예 기간 동안 이전 토큰을 계속 유효하게 유지합니다.
  • active=falseDELETE /Users/{id} 사용자를 프로비저닝 해제하고 활성 세션을 폐기합니다.
  • 그룹 멤버십 업데이트는 멱등입니다. 알 수 없는 멤버는 사용자가 ID 공급자에서 도착한 뒤 해석할 수 있습니다.
탐색

입력하여 검색...

화살표 키로 이동Enter 키로 선택Escape 키로 닫기