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를 정의한다.

model

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를 제공합니다. 이 작업 집합은 특정 사용자의 특정 속성을 패치하는 것부터 대규모 대량 업데이트를 수행하는 것까지 모든 것을 지원합니다.

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.

Create Request