Drupal SCIM 서버 API 엔드포인트
회사 개요
이 문서에서는 SCIM 사용자 프로비저닝 및 프로비저닝 해제를 활성화하는 데 필요한 SCIM 엔드포인트에 대해 설명합니다. SCIM은 사용자 CRUD(사용자 작업 자동화)를 자동화할 수 있는 업계 표준 프로토콜입니다. 모듈Drupal 사이트는 SCIM 서버 역할을 할 수 있습니다. 즉, ID 공급자(예: SCIM 클라이언트)에서 변경된 모든 내용이 Drupal 사이트와 동기화됩니다.
SCIM 개요
- 프로토콜 버전: SCIM 2.0
- 기본 경로: 베이스_URL/scim
- 지원되는 리소스: 사용자, 그룹
- 데이터 형식: JSON
인증 및 헤더
- 권한 부여: 무기명 토큰
- 컨텐츠 타입: 응용 프로그램 / json
- 수락 : 응용 프로그램 / json
지원되는 API 작업
다음 API 작업이 지원됩니다.
사용자 엔드포인트
그룹 엔드포인트
사용자 엔드포인트
1. 사용자 비활성화(PATCH)
- 오류 :
- 요청 예 :
- 응답 예시 - 204 콘텐츠 없음.
Drupal에서 사용자를 비활성화하거나 삭제하려면 모듈에서 필요한 설정을 활성화해야 합니다. 이러한 옵션은 모듈의 구성 페이지에서 사용할 수 있습니다.
패치 /Users/{user-id}| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 리소스가 발견되지 않음 예외 | 지정된 사용자가 존재하지 않습니다. | 404 |
PATCH /Users/{user-id} HTTP/1.1 Content-Type: application/json Authorization: Bearer { "작업": [ { "op": "교체", "경로": "활성", "값": false } ] }
{ "스키마": ["urn:ietf:params:scim:schemas:core:2.0:사용자"], "id": "4", "userName": "사용자 이름", "활성": , "이메일": [{ "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" }], "meta": { "resourceType": "사용자" } }
2. ID로 사용자 검색
- 오류 :
- 요청 예 :
- 예시 응답:
- 404 찾을 수 없음.
- 200개의 Ok가 발견되었습니다.
기존 사용자를 가져오려면 GET 요청을 만드세요. / 사용자 사용자 ID를 사용하여.
GET /Users/{사용자 ID}| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 리소스가 발견되지 않음 예외 | 지정된 사용자가 존재하지 않습니다. | 404 |
GET /Users/{user-id} HTTP/1.1 권한 부여: Bearer { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "사용자를 찾을 수 없습니다", "status": 404 }
{ "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자" ], "id": "4", "userName": "사용자 이름", "활성": 1, "이메일": [ { "기본": true, "값": "example@example.com", "유형": "작업", "디스플레이": "example@example.com" } ], "메타": { "리소스유형": "사용자" } }
3. 사용자 목록
- 오류 :
- 쿼리 매개변수:
- 요청 예 :
- 예시 응답:
- 요청 예 :
- 예시 응답:
- UserName으로 사용자를 찾을 수 없는 경우 사용자를 찾을 수 없음을 나타내는 빈 스키마를 보냅니다.
- 요청 예 :
- 예시 응답:
- 사용자가 이메일을 제시하는 경우.
- 이메일로 사용자를 찾을 수 없는 경우, 모듈은 사용자를 찾을 수 없음을 나타내는 빈 스키마를 전송합니다.
이 엔드포인트를 사용하면 기존 사용자 목록에서 특정 사용자를 필터링하고 검색할 수 있습니다. GET 요청을 보내면 / 사용자 엔드포인트에 필터 매개변수를 추가하면 사용자 이름 및 이메일과 같은 속성을 기준으로 검색 결과를 좁힐 수 있습니다. 엔드포인트는 필터링된 검색을 지원하지만 요청당 최대 50개의 사용자 레코드를 반환할 수 있습니다.
| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 리소스가 발견되지 않음 예외 | 지정된 사용자가 존재하지 않습니다. | 404 |
GET /사용자
3.1 StartIndex 및 count
startIndex와 count를 쿼리 매개변수로 허용합니다. 여기서 startIndex는 시작 ID이고, count는 쿼리가 반환할 수 있는 최대 결과 수입니다.
GET /Users?startIndex=1&count=50 권한: Bearer
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 2, "startIndex": 1, "itemsPerPage": 2, "리소스": [ { "id": "1", "externalId": "1", "meta": { "resourceType": "사용자" }, "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자" ], "userName": "example1@example.com", "displayName": "example1@example.com", "emails": { "value": "example1@example.com", "type": "work", "primary": true }, "active": true, "name": { "familyName": "", "givenName": "" }, "그룹": [ "인증됨, 관리자" ], "부서": "" }, { "id": "13", "externalId": "13", "meta": { "resourceType": "사용자" }, "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자" ], "사용자 이름": "example2", "디스플레이 이름": "example2", "이메일": { "값": "example2@example.com", "유형": "업무", "기본": true }, "활성": true, "이름": { "가족 이름": "", "givenName": "" }, "그룹": [ "인증됨, 관리자" ], "부서": "" }, ] }
3.2 사용자 이름으로 사용자 검색
GET /Users?filter=userName eq "admin"
사용자를 찾을 수 없습니다 - 200 Ok.
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "startIndex": 1, "itemsPerPage": 0, "리소스": [] }
사용자를 찾았습니다 - 200 Ok.
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 10, "리소스": [ { "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "사용자의 UID", "사용자 이름": "관리자", "이메일": [ { "값": "email@gmail.com", "기본": true, "유형": "작업" } ] } ] }
3.3 이메일 주소로 사용자 검색
GET /Users?filter=emails[type eq "work"].value eq "email@gmail.com" 권한: 전달자
사용자를 찾았습니다 - 200 Ok.
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 10, "리소스": [ { "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "사용자의 UID", "username": "사용자 이름", "이메일": [ { "값": "email@gmail.com", "primary": true, "유형": "작업" } ] } ] }
사용자를 찾을 수 없습니다 - 200 Ok.
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "startIndex": 1, "itemsPerPage": 0, "리소스": [] }
4. 사용자 업데이트(PATCH)
GET 요청에서 사용자가 발견되면 PATCH 또는 PUT 요청이 수행되어 사용자를 업데이트합니다. 그렇지 않으면 POST 요청이 수행되어 사용자를 생성합니다. 다음을 사용하여 사용자의 특정 필드를 업데이트할 수 있습니다. 반점 요청 / 사용자 엔드포인트. 요청 본문에 변경하려는 속성과 업데이트된 값을 포함합니다.
패치 /Users/{user-id}- 오류 :
- 요청 예 :
- 응답 예시: 200 OK.
| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 리소스가 발견되지 않음 예외 | 지정된 사용자가 존재하지 않습니다. | 404 |
PATCH/Users/{{user-id}} HTTP/1.1 콘텐츠 유형: application/json 권한 부여: Bearer { "스키마": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "작업": [ { "op": "바꾸기", "경로": "emails[유형 eq \"work\"].value", "값": "email@gmail.com" }, { "op": "바꾸기", "경로": "이름.가족 이름", "값": "가족 이름" } ] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "사용자의 UID", "userName": "사용자 이름", "active": 1, "emails": [ { "primary": true, "value": "email@gmail.com", "type": "work", "display": "email@gmail.com" } ], "meta": { "resourceType": "사용자" } }
5. 사용자 업데이트(PUT)
PUT 요청을 사용하여 사용자를 업데이트할 수 있습니다. / 사용자 엔드포인트. 이 요청은 사용자 객체 전체를 대체하므로, 모든 필수 사용자 속성을 본문에 제공해야 합니다.
PUT /Users/{{user-id}}- 오류 :
- 요청 예 :
- 응답 예시: 200 확인.
| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 리소스가 발견되지 않음 예외 | 지정된 사용자가 존재하지 않습니다. | 404 |
PUT/Users/{{user-id}} HTTP/1.1 콘텐츠 유형: application/json 권한 부여: Bearer { "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자" ], "id": "97", "userName": "예", "활성": 1, "이메일": [ { "기본": true, "값": "exmple@example.com", "유형": "작업", "표시": "exmple@example.com" } ], "메타": { "리소스유형": "사용자" }, "이름": { "givenName": "givenName", "가족이름": "가족이름", "중간이름": "sdf", "honorificPrefix": "sdf" }, "표시이름": "givenName 가족이름", "별명": "df", "주소": [ { "기본": true, "지역": "fdd" } ], "locale": "en-US", "externalId": "9rqltOOLI95d7", "groups": [] }
{ "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자" ], "id": "97", "사용자 이름": "예제", "활성": 1, "이메일": [ { "기본": true, "값": "example@example.com", "유형": "작업", "디스플레이": "example@example.com" } ], "메타": { "리소스 유형": "사용자" } }
6. 사용자 생성(POST)
POST 요청을 사용하세요 / 사용자 새 사용자를 생성하려면 엔드포인트를 사용하세요. 요청 본문에 필요한 모든 필드를 포함해야 합니다. 요청이 성공하면 201 Created와 사용자 세부 정보가 반환됩니다.
POST /사용자
- 오류 :
- 요청 예 :
- 응답 예시: 201개가 생성되었습니다.
| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 충돌 예외 | 사용자가 이미 존재합니다. | 409 |
POST /Users HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer { "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자", "urn:ietf:params:scim:schemas:확장:엔터프라이즈:2.0:사용자"], "externalId": "abc", "userName": "예제", "활성": true, "이메일": [{ "기본": true, "유형": "작업", "값": "example@example.com" }], "메타": { "리소스타입": "사용자" }, "이름": { "포맷팅됨": "이름 성", "가족이름": "성", "givenName": "이름" } }
{ "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:사용자", "urn:ietf:params:scim:schemas:확장:엔터프라이즈:2.0:사용자" ], "externalId": "abc", "userName": "예제", "활성": true, "이메일": [ { "기본": true, "유형": "작업", "값": "example@example.com" } ], "메타": { "리소스타입": "사용자" }, "이름": { "포맷팅됨": "이름 성", "가족이름": "성", "givenName": "이름" }, "id": "98" }
그룹 엔드포인트
1. 그룹 목록
The /여러 떼 엔드포인트는 SCIM 서버에서 사용 가능한 그룹 목록을 검색하는 GET 요청을 지원합니다. 이 작업은 그룹 ID 및 표시 이름과 같은 기본 그룹 정보만 반환합니다. 엔드포인트가 응답에 그룹 멤버십 정보를 포함하지 않으므로 멤버 목록은 항상 비어 있는 상태로 반환됩니다.
- 요청 예 :
- 응답 예시 - 200 ok
- 지원되는 필터:
- 요청 예 :
- 응답 예시: 200 확인.
GET /그룹 HTTP/1.1 권한 부여: 베어러
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 4, "리소스": [ { "id": "익명", "메타": { "resourceType": "그룹" }, "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:그룹" ], "displayName": "익명" }, { "id": "인증됨", "메타": { "resourceType": "그룹" }, "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:그룹" ], "displayName": "인증됨" }, { "id": "관리자", "메타": { "resourceType": "그룹" }, "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:그룹" ], "디스플레이 이름": "관리자" }, { "id": "editor_admin", "메타": { "resourceType": "그룹" }, "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:그룹" ], "디스플레이 이름": "editor_admin" } ], "startIndex": 1, "itemsPerPage": 4 }
GET /그룹?필터=디스플레이이름 eq "관리자"
GET /scim/Groups?filter=displayName eq "administrator" HTTP/1.1 권한 부여: Bearer
표시 이름으로 그룹이 발견된 경우.
{ "스키마": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "리소스": [], "startIndex": 1, "itemsPerPage": 20 }
2. ID로 그룹 검색
/그룹/{아이디} 제공된 그룹 ID와 연결된 그룹 리소스를 검색합니다. 응답에는 그룹의 메타데이터만 반환되며, 멤버십 정보는 포함되지 않습니다.
- 요청 예 :
- 예시 응답:
GET /Groups/administrator HTTP/1.1 권한 부여: Bearer
발견됨 - 200 OK.
{ "스키마": [ "urn:ietf:params:scim:스키마:core:2.0:그룹" ], "id": "관리자", "meta": { "resourceType": "그룹" }, "displayName": "관리자" }
찾을 수 없음 - 404.
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "그룹 관리자를 찾을 수 없습니다", "status": 404 }
3. 그룹 만들기
사용하십시오 POST 요청하다 /여러 떼 새 그룹을 만들려면 그룹 이름(displayName)을 입력해야 합니다. 요청 본문에 구성원을 포함할 수는 있지만, 응답은 항상 빈 구성원 목록을 반환합니다.
- 오류 :
- 요청 예 :
- 회원 목록이 포함되지 않은 요청입니다.
- 회원목록과 함께 요청하세요.
- 응답: 201개 생성됨.
| 오류 | 상태 | HTTP 상태 코드 |
|---|---|---|
| 유효성 검사 예외 | 모듈이 활성화되지 않았거나 잘못된 라이센스 키가 사용되었습니다. | 400 |
| 권한이 없는 예외 | 권한 헤더가 잘못되었거나 없습니다. | 401 |
| 지원되지 않는 예외 | 그룹 수정은 허용되지 않습니다. | 501 |
POST /그룹 HTTP/1.1 권한 부여: 베어러 { "스키마": ["urn:ietf:params:scim:schemas:core:2.0:그룹"], "externalId": "내부 ID", "displayName": "그룹2", "메타": { "리소스 유형": "그룹" } }
POST /그룹 HTTP/1.1 콘텐츠 유형: application/json 권한: Bearer { "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:그룹" ], "디스플레이 이름": "그룹1", "멤버": [ { "값": "3", "디스플레이": "admin@gmail.com" }, { "값": "2", "디스플레이": "admin2@gmail.com" } ] }
{ "스키마": [ "urn:ietf:params:scim:schemas:core:2.0:그룹" ], "외부 ID": "내부 ID", "표시 이름": "그룹2", "메타": { "리소스 유형": "그룹" }, "멤버": [], "ID": "그룹2" }
4. 그룹 업데이트 [비멤버 속성]
PATCH 요청을 사용하여 표시 이름과 같은 그룹의 기본 세부 정보를 업데이트할 수 있습니다. /그룹/{그룹-ID}. 이 요청은 사용자가 제공한 속성만 업데이트하며 그룹 구성원은 변경하지 않습니다. 업데이트가 성공하면 204 콘텐츠 없음이 반환됩니다.
- 요청 예 :
- 응답 예시 - 204 콘텐츠 없음.
PATCH /Groups/group1 HTTP/1.1 권한 부여: Bearer{ "스키마": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "작업": [{ "op": "바꾸기", "경로": "디스플레이이름", "값": "그룹1 업데이트됨" }] }
5. 그룹 업데이트 [멤버]
The /그룹/{아이디} 엔드포인트는 PATCH 요청을 통해 구성원을 추가하고 제거할 수 있습니다. 요청 본문에는 추가할 사용자 ID 목록이 포함되어야 합니다. 이 작업은 그룹 구성원만 업데이트하며, 성공 시 204 콘텐츠 없음을 반환합니다.
- 요청 예 :
- 그룹에 멤버를 추가합니다.
- 그룹에서 멤버를 제거합니다.
- 응답 예시 - 204 콘텐츠 없음.
PATCH /Groups/updated group1 HTTP/1.1 Content-Type: application/json Authorization: Bearer { "스키마": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "작업": [{ "op": "추가", "경로": "멤버", "값": [{ "$ref": null, "값": "97" }] }] }
PATCH /Groups/updated group1 HTTP/1.1 권한: Bearer { "스키마": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "작업": [{ "op": "제거", "경로": "멤버", "값": [{ "$ref": null, "값": "97" }] }] }
6. 그룹 삭제
The /그룹/{아이디} 엔드포인트는 다음을 사용하여 그룹 삭제를 지원합니다. 삭제 요청. 이 작업은 SCIM 서버에서 그룹을 제거합니다. 삭제가 성공하면 다음이 반환됩니다. 204 콘텐츠 없음 응답은 그룹이 삭제되었음을 나타내며, 응답 본문은 제공되지 않습니다.
- 요청 예 :
- 응답 예시 - 204 콘텐츠 없음.
DELETE /Groups/updated group1 HTTP/1.1 권한: Bearer
구성이 성공적이지 않은 경우 다음 주소로 문의해 주세요. drupalsupport@xecurify.com. 오류 창의 스크린샷을 보내주시면 문제 해결 및 설정 과정을 안내해 드리겠습니다.
