Proton 홈페이지

SCIM 프로비저닝 API

읽기
2분
카테고리
Proton VPN for Business

개요

SCIM(System for Cross-domain Identity Management) 프로비저닝 API는 클라우드 기반 애플리케이션에서 사용자 신원의 프로비저닝 및 관리를 자동화하기 위한 표준 프로토콜입니다. Proton은 이 API를 지원하며, 이를 통해 귀하는 사용자 계정 및 그룹을 생성, 업데이트, 삭제, 관리할 수 있습니다. 이 API는 통합을 쉽게 하기 위해 공통 사용자 스키마와 RESTful API 인터페이스를 제공하는 SCIM 2.0 사양을 기반으로 합니다.

Proton은 다음 신원 제공업체를 지원합니다:

신원 제공업체로부터의 모든 호출에 대한 기본 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}

사용자

핵심 속성

idProton에서 정의한 사용자와 같은 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}

그룹

핵심 속성

idProton에서 정의한 사용자와 같은 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: 서버 측에서 오류가 발생했습니다.