SCIM 프로비저닝 API
- 읽기
- 2분
- 카테고리
- Proton VPN for Business
개요
SCIM(System for Cross-domain Identity Management) 프로비저닝 API는 클라우드 기반 애플리케이션에서 사용자 신원의 프로비저닝 및 관리를 자동화하기 위한 표준 프로토콜입니다. Proton은 이 API를 지원하며, 이를 통해 귀하는 사용자 계정 및 그룹을 생성, 업데이트, 삭제, 관리할 수 있습니다. 이 API는 통합을 쉽게 하기 위해 공통 사용자 스키마와 RESTful API 인터페이스를 제공하는 SCIM 2.0 사양을 기반으로 합니다.
Proton은 다음 신원 제공업체를 지원합니다:
- Okta (https://www.okta.com/(새 창))
- Microsoft Entra ID
신원 제공업체로부터의 모든 호출에 대한 기본 URL은 다음과 같습니다: https://scim.proton.me/{tenentId}/v2/(새 창). 모든 SCIM 메서드는 이 기본 URL의 하위 분기입니다.
인증
SCIM 메서드를 호출할 때 토큰은 Bearer 유형의 Authorization 헤더에 포함되어야 합니다. 이 토큰은 ‘싱글 사인온 > SCIM 자동 프로비저닝’ 섹션에서 생성 및 교체할 수 있습니다. “새 토큰 생성” 버튼을 클릭하고 생성된 토큰을 복사하세요.

예를 들어:
GET /Users?count=10Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
사용자
핵심 속성
| id | Proton에서 정의한 사용자와 같은 SCIM 리소스의 고유 식별자입니다. |
| userName (필수) | 사용자의 고유 식별자입니다. 여기서는 이메일을 userName으로 사용합니다. |
| active | 사용자가 활성 상태인지 여부를 나타내는 불리언(boolean) 값입니다. 기본값은 true입니다. |
작업
모든 사용자의 페이지가 매겨진 목록 조회
요청
GET /Users?count=1 Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
응답
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 1,
"itemsPerPage": 1,
"startIndex": 1,
"Resources": [
{
"id": "avveKyJZ_cCkULxxxZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
"userName": "test@sso.protonhub.org",
"active": true
}
]
}복사됨
새 사용자 생성
요청
POST /UsersHost: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
응답
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "avveKyJZ_cCkULxxxZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
"userName": "test@sso.protonhub.org",
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-07-25T04:39:27Z",
"lastModified": "2024-07-25T04:39:27Z",
"location": "https://scim.proton.me/{tenent-id}/v2/Users/avveKyJZ_cCkULxxxZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
"version": "1"
}
}
복사됨
단일 사용자 조회
요청
GET /Users/avveKyJZ_cCkUL1iBZj4_U8j1IxxxGkcso02I6xDFoyrfJSxxXLS3FToNOiwP1tNwBaaraqfKVExx3xaVcYSxQ==Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
응답
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "avveKyJZ_cCkUL1iBZj4_U8j1IxxxGkcso02I6xDFoyrfJSxxXLS3FToNOiwP1tNwBaaraqfKVExx3xaVcYSxQ==",
"userName": "test@sso.protonhub.org",
"active": true,
"meta": {
"resourceType": "User",
"created": "2024-07-24T06:22:20Z",
"lastModified": "2024-07-24T06:22:20Z",
"location": "https://scim.proton.me/{tenentId}/v2/Users/avveKyJZ_cCkUL1iBZj4_U8j1IwqaGkcso02I6bDFoyrfJSqqXLS3FToNOiwP1tNwBaaraqfKVE993xaVcYSxQ==",
"version": "1"
},
"externalId": "00uganxwluxxxxxxxxxx"
}복사됨
사용자 삭제
요청
DELETE /Users/avveKyJZ_cCkUL1iBZj4_U8j1IxxxGkcso02I6xDFoyrfJSxxXLS3FToNOiwP1tNwBaaraqfKVExx3xaVcYSxQ==Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
그룹
핵심 속성
| id | Proton에서 정의한 사용자와 같은 SCIM 리소스의 고유 식별자입니다. |
| displayName | 그룹의 이름입니다. |
| members | 그룹 멤버 목록입니다. |
작업
그룹 목록 조회
요청
GET /Groups?startIndex=1&count=10Host: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
응답
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 0,
"itemsPerPage": 100,
"startIndex": 1,
"Resources": [
{
"id": "d27f32f6-1e03-4e34-b5b5-9b89c11ed54e",
"displayName": "Admins",
"members": [
{
"value": "2819c223-7f76-453a-919d-413861904646",
"display": "John Doe"
}
],
"meta": {
"resourceType": "Group",
"created": "2024-07-25T05:10:22Z",
"lastModified": "2024-07-25T05:10:22Z",
"location": "https://scim.proton.me/{tenentId}/v2/Groups/d27f32f6-1e03-4e34-b5b5-9b89c11ed54e"
}
}
]
}복사됨
고유 ID로 그룹 세부 정보 조회
요청
GET /Groups/d27f32f6-1e03-4e34-b5b5-9b89c11ed54eHost: scim.proton.meAccept: application/scim+jsonAuthorization: Bearer {token}복사됨
응답
{
"id": "d27f32f6-1e03-4e34-b5b5-9b89c11ed54e",
"displayName": "Admins",
"members": [{ "value": "2819c223-7f76-453a-919d-xxxxxxxxxxxx", "display": "John Doe" }],
"meta": {
"resourceType": "Group",
"created": "2024-07-25T05:10:22Z",
"lastModified": "2024-07-25T05:10:22Z",
"location": "https://scim.proton.me/{tenentId}/v2/Groups/d27f32f6-1e03-4e34-b5b5-9b89c11ed54e"
}
}
복사됨
오류 처리
응답은 RFC-7644 섹션 3.12(새 창)에 따라 구성되며, 오류의 성격을 나타내는 HTTP 상태 코드와 자세한 정보를 제공하는 응답 본문이 함께 전달됩니다.
오류 응답
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
"detail": "UserName is already taken",
"status": "400"
}
복사됨
가장 일반적인 오류
- 400 Bad Request: 요청이 잘못되었거나 다른 방식으로 처리할 수 없습니다.
- 404 Not Found: 요청한 리소스를 찾을 수 없습니다.
- 409 Conflict: 대상 리소스의 현재 상태와 충돌이 발생하여 요청을 완료할 수 없습니다.
uniqueness: 시스템에 고유한 속성 값이 이미 존재합니다.
- 500 Internal Server Error: 서버 측에서 오류가 발생했습니다.