ID 관리를 위한 오픈 API, SCIM 2가 완성되어 IETF에 등록되었습니다.
Note
|
IEFT
국제 인터넷 표준화 기구 |
Overview
SCIM(System for Cross-domain Identity Management) 스펙은 클라우드 기반 어플리케이션 혹은 서비스에서 user identities를 보다 쉽게 관리할 수 있도록 설계되었다. 이 스펙 suites는 기존 인증(authentication), 권한(authorization), 개인 정보(privacy) 모델을 적용하면서 개발 및 통합의 단순성에 중점을 두고 기존 스키마 및 배포 경험을 기반으로 한다. SCIM의 목적은 공통 유저 스키마와 확장된 모델을 제공하고, 표준 프로토콜을 사용하여 이 스키마를 교환하기 위한 패턴을 제공하는 바인딩 문서를 제공함으로써 사용자 관리 작업의 cost과 complexity 를 줄이는 것이다. 본질적으로, 빠르고, 저렴하고, 쉽게 유저를 클라우드 내부, 외부 및 주변으로 쉽게 이동할 수 있다.
Model
SCIM 2.0은 리소스가 공통 분모이고 모든 SCIM 객체가 여기서 파생되는 객체 모델을 기반으로 구축된다. id, externalId 및 메타를 속성으로 가지고 있으며 RFC7643은 공통 속성을 확장하는 User, Group, EnterpriseUser를 정의한다.
Example User
이것은 사용자 데이터가 JSON에서 SCIM 객체로 인코딩도리 수 있는 예시다.
이 예제에는 사용 가능한 전체 속성들을 포함하진 않지만, SCIM 객체를 만드는데 사용할 수 있는 ID 문자열, 사용자 이름 등과 같은 다양한 타입의 데이터가 있다. 복잡한 타입으로 e-mail, phonenumber, address 등과 하위 속성을 같이 가진 속성들도 있다.
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id":"2819c223-7f76-453a-919d-413861904646",
"externalId":"dschrute",
"meta":{
"resourceType": "User",
"created":"2011-08-01T18:29:49.793Z",
"lastModified":"2011-08-01T18:29:49.793Z",
"location":"https://example.com/v2/Users/2819c223...",
"version":"W\/\"f250dd84f0671c3\""
},
"name":{
"formatted": "Mr. Dwight K Schrute, III",
"familyName": "Schrute",
"givenName": "Dwight",
"middleName": "Kurt",
"honorificPrefix": "Mr.",
"honorificSuffix": "III"
},
"userName":"dschrute",
"phoneNumbers":[
{
"value":"555-555-8377",
"type":"work"
}
],
"emails":[
{
"value":"dschrute@example.com",
"type":"work",
"primary": true
}
]
}
Example Group
사용자 외에도 SCIM에는 그룹 정의가 포함됩니다. 그룹은 프로비저닝된 리소스의 조직 구조를 모델링하는데 사용됩니다. 그룹은 사용자 또는 다른 그룹을 포함할 수 있습니다.
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id":"e9e30dba-f08f-4109-8486-d5c6a331660a",
"displayName": "Sales Reps",
"members":[
{
"value": "2819c223-7f76-453a-919d-413861904646",
"$ref": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646",
"display": "Dwight Schrute"
},
{
"value": "902c246b-6245-4190-8e05-00816be7344a",
"$ref": "https://example.com/v2/Users/902c246b-6245-4190-8e05-00816be7344a",
"display": "Jim Halpert"
}
],
"meta": {
"resourceType": "Group",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W\/\"3694e05e9dff592\"",
"location": "https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a"
}
}
Operations
리소스 조작을 위해 SCIM은 풍부하지만 간단한 작업 집합을 포함하는 REST API를 제공합니다. 이 작업 집합은 특정 사용자의 특정 속성을 패치하는 것부터 대규모 대량 업데이트를 수행하는 것까지 모든 것을 지원합니다.
-
Create: POST https://example.com/{v}/{resource}
-
Read: GET https://example.com/{v}/{resource}/{id}
-
Replace: PUT https://example.com/{v}/{resource}/{id}
-
Delete: DELETE https://example.com/{v}/{resource}/{id}
-
Update: PATCH https://example.com/{v}/{resource}/{id}
-
Bulk: POST https://example.com/{v}/Bulk
Discovery
상호 운용성을 단순화하기 위해 SCIM은 지원되는 기능 및 특정 속성 세부 정보를 검색할 수 있는 세가지 엔드포인트를 제공합니다.
-
GET /ServiceProviderConfig
Specification compliance, authentication schemes, data models.
-
GET /ResourceTypes
An endpoint used to discover the types of resources available.
-
GET /Schemas
Introspect resources and attribute extensions.