System for Cross-domain Identity Management: Core Schema
Internet Engineering Task Force (IETF) P. Hunt, Ed.
Request for Comments: 7643 Oracle
Category: Standards Track K. Grizzle
ISSN: 2070-1721 SailPoint
E. Wahlstroem
Nexus Technology
C. Mortimore
Salesforce
September 2015
Abstract
System for Cross-domain Identity Management (SCIM) の仕様は、クラウドベースのアプリケーションおよびサービスにおけるアイデンティティ管理を容易にすることを目的として設計されている。この仕様群は、既存のスキーマおよびデプロイの経験に基づいており、既存の認証・認可・プライバシーモデルを適用しつつ、開発と統合の単純さに特に重点を置いている。その目的は、共通のユーザースキーマおよび拡張モデル、ならびに HTTP を用いてこのスキーマを交換するためのパターンを提供するバインディング文書を用意することで、ユーザー管理操作のコストと複雑さを低減することにある。
本文書は、ユーザーおよびグループ、その他のリソース種別を JSON 形式で表現するための、プラットフォームに依存しないスキーマおよび拡張モデルを提供する。このスキーマは、クラウドサービスプロバイダとの交換および利用を意図している。
Status of This Memo
本文書は Internet Standards Track の文書である。
本文書は Internet Engineering Task Force (IETF) の成果物である。これは IETF コミュニティの合意を表す。公的なレビューを受けており、Internet Engineering Steering Group (IESG) により発行が承認されている。Internet Standards に関する追加情報は RFC 5741 の Section 2 にある。
本文書の現在の状態、正誤表、ならびにフィードバックの提供方法に関する情報は、\ http://www.rfc-editor.org/info/rfc7643\ で入手できる。
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Table of Contents
- System for Cross-domain Identity Management: Core Schema
- Abstract
- Status of This Memo
- Copyright Notice
- Table of Contents
- 1. Introduction and Overview
- 2. SCIM Schema
- 3. SCIM Resources
- 4. SCIM Core Resources and Extensions
- 5. Service Provider Configuration Schema
- 6. ResourceType Schema
- 7. Schema Definition
- 8. JSON Representation
- 9. Security Considerations
- 10. IANA Considerations
- 11. References
- Acknowledgements
- Authors' Addresses
1. Introduction and Overview
ユーザー情報を記述し交換するための既存の標準は存在するものの、その多くは実装や利用が難しい場合がある。例えば、それらのワイヤプロトコルはファイアウォールを容易に通過できなかったり、既存の web プロトコルの上に容易に重ねられなかったりする。その結果、多くのクラウドプロバイダは、自社サービス内のユーザーを管理するために非標準化のプロトコルを実装している。これは、複数のクラウドプロバイダの製品やサービスを導入する組織にとって、冗長な統合作業の開発が必要になるため、コストと複雑さの双方を増大させる。同様に、複数のアプリケーション・マーケットプレイスやクラウドのアイデンティティ・プロバイダと相互運用しようとするクラウドサービスプロバイダでは、対ごとの統合が必要になる。
SCIM は、共通のユーザースキーマと拡張モデルを提供する、容易に実装できる仕様群を通じてこの問題を単純化しようとする。加えて、HTTP ベースのプロトコルを介してこのスキーマを交換することを定義する SCIM protocol 文書も提供する [RFC7644]。SCIM の仕様は、既存のアイデンティティ関連プロトコルやスキーマから、さまざまなソースにわたって設計上の入力とフィードバックを得ている。これには、クラウドプロバイダにより公開されている既存サービス、PortableContacts [PortableContacts]、vCards [RFC6350]、および Lightweight Directory Access Protocol (LDAP) ディレクトリサービス [RFC4512] を含むが、これらに限られない。
SCIM protocol は、SCIM スキーマで規定されたアイデンティティデータをプロビジョニングし管理するためのアプリケーションレベルのプロトコルである。このプロトコルは、HTTP メソッドのサブセットを用いて、Users や Groups といった中核となるアイデンティティリソースの作成、変更、取得、発見(ディスカバリ)をサポートする(GET はリソースの取得、POST は作成・検索・一括変更、PUT はリソース内の属性の置換、PATCH は属性の部分更新、DELETE はリソースの削除)。
SCIM protocol と core schema の仕様はポイント・ツー・ポイントのシナリオを対象としているが、実装者および運用者は、例えばサービスプロバイダがドメイン内アプリケーション(例:ディレクトリ)のための汎用プロフィールサービスとして振る舞う場合のような、マルチホップおよびマルチパーティのシナリオも考慮すべきである。また、サービスプロバイダが SCIM client または SCIM service provider のいずれかとして振る舞うことで、第三者のサービスプロバイダへ情報を渡すシナリオも考慮すべきである。実装者および運用者は、個人情報を配布または伝播させる際には、サービスレベル合意およびプライバシー合意を慎重に検討すべきである(Section 9.3 を参照)。
本文書は、ユーザーおよびグループ、ならびにサービスプロバイダ設定を表現するための、JSON ベースのスキーマおよび拡張モデルを提供する。このスキーマは、クラウドサービスプロバイダおよびその他のクロスドメインのシナリオでの交換と利用を意図している。
1.1. Requirements Notation and Conventions
本文書中のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" は、[RFC2119] に記述されているとおりに解釈される。
本文書では、属性またはスキーマ要素が必須か任意かを示すために、"REQUIRED" および "OPTIONAL" というキーワードを全体を通して用いる。これらのキーワードは単独(例:"REQUIRED.")でも文中でも使用される。特に指定がない場合、その属性は任意であると見なされる。
Section 7 で使用される "DEFAULT" という語は、属性特性に対する "keyword" 値が既定の振る舞いであることを示す。
本文書全体を通して、値はそれらが文字どおりに解釈されるべきことを示すために引用符で囲まれている。これらの値をプロトコルメッセージで使用する場合、引用符は値の一部として使用してはならない。
本文書全体を通して、図には可読性の向上とスペース制約への対応のため、空白や追加の改行折り返しが含まれることがある。同様に、例に含まれる一部の URI は、スペースと可読性の理由から短縮されている。
1.2. Definitions
- Service Provider\ SCIM protocol を介してアイデンティティ情報を提供する HTTP web application。
- Client\ サービスプロバイダが保持するアイデンティティデータを管理するために SCIM protocol を使用する web サイトまたはアプリケーション。Client は、対象のサービスプロバイダに対して SCIM の HTTP リクエストを開始する。
- Provisioning Domain\ プロビジョニングドメインとは、法的または技術的な理由により、サービスプロバイダのドメインの外側にある管理ドメインである。例えば、企業内の SCIM client(プロビジョニング client)が、別の法主体により所有または支配されている SCIM service provider と通信する場合である。
- Resource Type\
サービスプロバイダによって管理されるリソースの種別。Resource Type は、リソース名、endpoint URL、スキーマ、ならびにリソースがどこで管理され、どのように構成されるかを示すその他のメタデータを定義する。例:
"User"または"Group"。
- Resource\
サービスプロバイダによって管理され、1 つ以上の属性を含む成果物。例:
"User"または"Group"。
- Endpoint\
サービスプロバイダの endpoint とは、サービスプロバイダの Base URI([RFC7644] の Section 1.3 を参照)に対する相対パスとして定義される基底パスであり、その上で SCIM の操作が SCIM resources に対して実行される。例えば、サービスプロバイダの Base URI が
"https://example.com/"であると仮定すると、"User"resources は"https://example.com/Users"または"https://example.com/v2/Users"の endpoint でアクセスできる(プロトコルのバージョニング、例:'v2'に関する詳細は [RFC7644] の Section 3.13 を参照)。サービスプロバイダのスキーマは、"/Schemas"endpoint から返されることがある。
- Schema\
リソース全体または一部の内容を記述する属性定義の集合。例:
"urn:ietf:params:scim:schemas:core:2.0:User"。属性定義は、属性名、および type(例:string, binary)、cardinality(単一、複数、complex)、mutability、returnability などのメタデータを指定する。
- Singular Attribute\
0..1 個の値を含むリソース属性。例:
"displayName"。
- Multi-valued Attribute\
0..n 個の値を含むリソース属性。例:
"emails"。
- Simple Attribute\
値がプリミティブである、単一または複数値の属性。例:
"String"。Simple attribute は sub-attributes を含んではならない。
- Complex Attribute\
値が 1 つ以上の simple attributes から構成される合成である、単一または複数値の属性。例:
"addresses"は"streetAddress"、"locality"、"postalCode"、"country"という sub-attributes を持つ。
- Sub-Attribute\ Complex attribute に含まれる simple attribute。
2. SCIM Schema
SCIM server は一連の resources を提供し、それらに許される内容は、スキーマ URI の集合と resource type によって定義される。SCIM のスキーマは [XML-Schema] のような文書中心のものではない。代わりに、SCIM のスキーマのサポートは属性ベースであり、各属性は type、mutability、cardinality、returnability がそれぞれ異なり得る。文書およびメッセージの検証は常に、SCIM 仕様で定めるとおり、意図された受信者により行われる。検証は SCIM protocol のリクエストの文脈で受信者によって実行される([RFC7644] を参照)。例えば、SCIM service provider は、既存リソースを置換 JSON オブジェクトで置き換えるリクエストを受信すると、関連するスキーマで定義された特性(例:mutability)に基づいて主張された各属性を評価し、どの属性を置換できるか、または無視すべきかを決定する。
本仕様は、多くの既存のデプロイやスキーマで見られる共通の属性を包含する、ユーザーおよびグループ(resources)を表現するための最小限の core schema を提供する。最小限の core schema に加えて、本書は、標準化された場合およびサービスプロバイダ固有の場合の双方において、サービスプロバイダが新しい resources と属性を定義するためにスキーマを拡張できる標準化された手段も規定する。
Resources は "User" や "Group" のような共通の resource types に分類される。同じ type の resources の集合は通常、同一の "container"("folder")endpoint に含まれる。
2.1. Attributes
Resource は、1 つ以上の schemas によって識別される属性の集合である。最小限として、属性は属性名と、少なくとも 1 つの simple または complex の値から成り、いずれも複数値になり得る。各属性について、SCIM schema は data type、単数/複数、mutability、その他の属性を区別する特徴を定義する。
属性名は大文字小文字を区別せず、しばしば "camel-cased"(例:"camelCase")である。SCIM resources は JSON [RFC7159] 形式で表現され、Section 3 に従って "schemas" 属性によりスキーマを指定しなければならない。
属性名は、次の ABNF ルールに適合しなければならない:
ATTRNAME = ALPHA *(nameChar)
nameChar = "$" / "-" / "_" / DIGIT / ALPHA
Figure 1: ABNF for Attribute Names
上記のルール(および本仕様のその他のルール)は、ABNF の "Core Rules" を使用する。Appendix B of [RFC5234] を参照。本文書で別段の指定がない限り、すべての ABNF 文字列は大文字小文字を区別せず、文字集合は US-ASCII である。例えば、上記ルールで定義されるすべての属性名は大文字小文字を区別しない。
属性名を定義する際、ハイフン("-")は JavaScript の属性名(あるいは他のいくつかの言語の属性名)では許可されないことに留意すべきである。HTTP protocol と JSON 記法において既知の問題はないが、ハイフンを含む属性名は、対応する JavaScript の属性名を宣言する際にエスケープが必要になる場合がある。
2.2. Attribute Characteristics
すべての属性は、その type とサービスプロバイダによる取り扱いを記述する特性の集合を持つ。完全な定義は Section 7 にある。特性には次が含まれる:
"required""canonicalValues""caseExact""mutability""returned""uniqueness""referenceTypes"
Section 7 に別段の記載がない場合、SCIM attributes は次の特性を持つ:
"required"は"false"(すなわち REQUIRED ではない)"canonicalValues": 割り当てなし(例:Section 2.4 で説明する"type"sub-attribute)"caseExact"は"false"(すなわち大文字小文字を区別しない)"mutability"は"readWrite"(すなわち変更可能)"returned"は"default"(属性値は既定で返される)"uniqueness"は"none"(一意性の強制なし)"type"は"string"(Section 2.3.1)
2.3. Attribute Data Types
Attribute data types は JSON [RFC7159] から派生する。JSON 形式は限られた data types しか定義しないため、適切な場合には、[XML-Schema] から派生した代替の JSON 表現を以下に定義する。SCIM extensions は新しい data types を導入してはならない。
Table 1 は、次の SCIM data types を、対応する SCIM schema type および基盤となる JSON data type に対応付ける:
| SCIM Data Type | SCIM Schema "type" | JSON Type |
|---|---|---|
| String | "string" |
Section 7 of [RFC7159] による String |
| Boolean | "boolean" |
Section 3 of [RFC7159] による Value |
| Decimal | "decimal" |
Section 6 of [RFC7159] による Number |
| Integer | "integer" |
Section 6 of [RFC7159] による Number |
| DateTime | "dateTime" |
Section 7 of [RFC7159] による String |
| Binary | "binary" |
Section 4 of [RFC4648] に従い base64 でエンコードされた Binary 値、または [RFC4648] の Section 5 による URL およびファイル名に安全なアルファベットの URL を用いたもの(URL)。これらは [RFC7159] の Section 7 に従う JSON 文字列として渡される |
| Reference | "reference" |
Section 7 of [RFC7159] による String |
| Complex | "complex" |
Section 4 of [RFC7159] による Object |
Table 1: SCIM Data Type to JSON Representation
2.3.1. String
[RFC2277] および [RFC3629] に従い UTF-8 を用いてエンコードされる、0 個以上の Unicode 文字の列。JSON 形式は [RFC7159] の Section 7 で定義される。SCIM schema type が "string" の属性は、必須のデータ形式を指定してよい。さらに、"canonicalValues" が指定されている場合、サービスプロバイダは受け入れる値を指定された値に制限してよい。
2.3.2. Boolean
リテラル "true" または "false"。JSON 形式は [RFC7159] の Section 3 で定義される。boolean には大文字小文字の区別や一意性はない。
2.3.3. Decimal
小数点の左右に少なくとも 1 桁ずつ数字を持つ実数。JSON 形式は [RFC7159] の Section 6 で定義される。decimal には大文字小文字の区別はない。
2.3.4. Integer
小数部や小数点を持たない整数。JSON 形式は [RFC7159] の Section 6 で定義され、さらに値は小数部または指数部を含んではならないという追加制約がある。integer には大文字小文字の区別はない。
2.3.5. DateTime
DateTime 値(例:2008-01-23T04:56:22Z)。属性値は [XML-Schema] の Section 3.3.7 で指定される有効な xsd:dateTime としてエンコードされなければならず、日付と時刻の両方を含まなければならない。date time 形式には大文字小文字の区別や一意性はない。
JSON 形式で表現される値は上記の XML 制約に適合しなければならず、[RFC7159] の Section 7 に従って JSON 文字列として表現される。
2.3.6. Binary
任意のバイナリデータ。属性値は [RFC4648] の Section 4 に従って base64 でエンコードされなければならない。URL に安全なエンコーディングが必要な場合、属性定義は [RFC4648] の Section 5 に従い base64 URL エンコーディングを使用することを指定してよい。属性定義で別段の指定がない限り、末尾のパディング文字は省略してよい("=")。
JSON 表現では、エンコードされた値は [RFC7159] の Section 7 に従って JSON 文字列として表現される。binary は case exact であり、一意性はない。
2.3.7. Reference
リソースへの URI。リソースは SCIM resource であってよいし、リソース(例:写真)への外部リンクであってよいし、URN のような識別子であってもよい。値は、対象リソースの絶対または相対 URI でなければならない。相対 URI は [RFC3986] の Section 5.2 で指定されるとおりに解決されるべきである。ただし、相対 URI 解決のための base URI には、すべての URI コンポーネントとパスセグメントを含める必要があるが、Endpoint URI(SCIM service provider の root endpoint)自体は含めてはならない。例えば、次へのリクエストに対する base URI は "https://example.com/v2/" となり、このリソースの相対 URI は "Users/2819c223-7f76-453a-919d-413861904646" となる:
https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646
JSON 表現では、URI 値は [RFC7159] の Section 7 に従って JSON 文字列として表現される。reference は case exact である。reference には "referenceTypes" 属性があり、本文書の Section 7 に従って、どの種類のリソースをリンクできるかを示す。
reference URI は HTTP でアドレス可能なリソースでなければならない。reference URI に対して GET 操作を実行する HTTP client は、対象リソース、または適切な HTTP 応答コードを受け取らなければならない。SCIM service provider は、SCIM resources を参照する reference types に対して参照整合性を強制することを選択してよい。
慣例として、reference は complex または multi-valued attributes における "$ref" sub-attribute として表現されることが多いが、これは OPTIONAL である。
2.3.8. Complex
値が 1 つ以上の simple attributes から構成される合成である、単一または複数値の属性。JSON 形式は [RFC7159] の Section 4 で定義される。構成要素となる属性の順序は重要ではない。サーバーおよびクライアントは、オブジェクトが生成または解析される際に、属性が特定の順序であることを要求したり期待したりしてはならない。complex attribute には一意性や大文字小文字の区別はない。complex attribute は sub-attributes を持つ sub-attributes(すなわち complex である sub-attributes)を含んではならない。
2.4. Multi-Valued Attributes
Multi-valued attributes は、[RFC7159] の Section 5 で定義される JSON 配列形式を用いて要素のリストを含む。要素は次のいずれかである:
- プリミティブ値、または
- [RFC7159] の Section 4 で定義される JSON オブジェクト形式を用いた、sub-attributes と値の集合を持つオブジェクト。この場合、それらは complex attributes と見なされる。complex attributes と同様に、sub-attributes の順序は重要ではない。本節に列挙する事前定義の sub-attributes は multi-valued attribute のオブジェクトで使用できるが、これらの sub-attributes はここで定義された意味で使用しなければならない。
別途定義がない場合、multi-valued attribute に対する既定の sub-attributes の集合は次のとおりである:
type\ 属性の機能を示すラベル。例:"work"または"home"。
primary\ この属性における「primary」または優先される属性値(例:優先される郵送先住所、または主要なメールアドレス)を示す Boolean 値。primary 属性値"true"は 2 回以上現れてはならない。指定がない場合、"primary"の値は"false"であると見なされる。
display\ 人が読める名称。主として表示目的に用いられ、mutability は"immutable"である。
value\ 属性の主要な値。例:メールアドレス、電話番号。
$ref\ 属性が reference である場合の、対象リソースの reference URI。URI は [RFC3986] の Section 6.2 に従って正規化される。リソースの表現は SCIM protocol の API バージョンによって異なり得る([RFC7644] の Section 3.13 を参照)が、API バージョンを含む SCIM resources の URI は、バージョンなし、または異なるバージョンの URI と比較可能であると見なされる。例えば、"https://example.com/Users/12345"は"https://example.com/v2/Users/12345"と等価である。
multi-valued attributes を返す際、サービスプロバイダは、適切な場合には返す値を正規化するべきである(例えば、"home" や "work" のような "type" sub-attribute の値を返す)。これは(例えば)メールアドレスや URL の場合に該当する。
サービスプロバイダは、同じ "value" sub-attribute を持つ要素オブジェクトを、異なる "type" sub-attribute とともに 2 回以上返してよい(例:同じメールアドレスを work と home の両方に用いる)が、クライアント側の処理を複雑にするため、同一属性内で同一の (type, value) の組み合わせを 2 回以上返すべきではない。
multi-valued attributes のスキーマを定義する際、値の正規化の目的で使用してよい type 属性を提供することは良い実践と見なされる。属性のスキーマ定義において、サービスプロバイダは推奨される canonical values を定義してよい(Section 7 を参照)。
2.5. Unassigned and Null Values
未割り当ての属性、null 値、または(multi-valued attribute の場合)空配列は、「状態」としては等価であると見なされる。属性に "null" または(multi-valued attributes の場合)空配列を割り当てることは、その属性を「未割り当て」にする効果を持つ。リソースが JSON 形式で表現される場合、未割り当ての属性はスキーマで定義されているとしても、簡潔性のために省略してよい。
3. SCIM Resources
各 SCIM resource は、次の構成要素を持つ JSON オブジェクトである:
- Resource Type\
SCIM の各 resource(または JSON オブジェクト)は、resource の core 属性スキーマおよび任意の属性拡張スキーマ、ならびに同種のオブジェクトが見つかる endpoint を定義する resource type(
"meta.resourceType"。Section 3.1 を参照)を持つ。リソースに関する追加情報は、その resource type 定義に見つかることがある(Section 6 を参照)。
- "Schemas" Attribute\
"schemas"属性は REQUIRED 属性であり、現在の JSON 構造に存在する属性を定義する SCIM schemas の名前空間を示すために使用される URI を含む String の配列である。この属性は、HTTP リクエストまたはレスポンスの本文である JSON 構造に存在する属性を、パーサが定義するために使用できる。各 String 値は一意の URI でなければならない。SCIM schemas のすべての表現は、その表現がサポートする URI 値の、空でない配列を含まなければならない。リソースの"schemas"属性は、そのリソースに定義された"resourceType"の"schema"および"schemaExtensions"として定義された値のみを含まなければならない。重複した値を含めてはならない。値の順序は規定されず、挙動に影響してはならない。
- Common Attributes\
リソースの common attributes とは、JSON 本文に存在する
"schemas"属性の値に関わらず、すべての SCIM resource の一部である属性を指す。これらの属性は特定のスキーマで定義されるのではなく、"schemas"属性の値に関わらずすべてのリソースに存在すると見なされる。Section 3.1 を参照。
- Core Attributes\
リソースの core attributes とは、common attributes(例:resource の
"id")とともに JSON オブジェクトのトップレベルに位置する属性を指す。有効な属性の一覧は、リソースの resource type の"schema"属性によって指定される(Section 6 を参照)。同じ値は、リソースの"schemas"属性にも存在する。
- Extended Attributes\
拡張スキーマ属性は、リソースの resource type の
"schemaExtensions"属性によって指定される(Section 6 を参照)。core attributes とは異なり、extended attributes はスキーマ拡張 URI により識別される独自の sub-attribute 名前空間に保持される。これにより、別々のスキーマ拡張による競合に起因して生じ得る属性名の衝突を回避する。
次の例 "User" には、common attributes "id" および "externalId" に加え、sub-attribute "resourceType" を含む complex attribute "meta" が含まれる。この resource には、core attributes "userName" および "name" に加えて、スキーマ URI により識別される独自の JSON サブ構造に含まれる、拡張された enterprise User attributes "employeeNumber" および "costCenter" も含まれる。いくつかの値は、明瞭さのために省略(...)、短縮、または間隔を空けてある。
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"id": "2819c223-7f76-453a-413861904646",
"externalId": "701984",
"userName": "bjensen@example.com",
"name": {
"formatted": "Ms. Barbara J Jensen, III",
"familyName": "Jensen",
"givenName": "Barbara",
"middleName": "Jane",
"honorificPrefix": "Ms.",
"honorificSuffix": "III"
},
"...": "...",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "701984",
"costCenter": "4130",
"...": "..."
},
"meta": {
"resourceType": "User",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W/\"3694e05e9dff591\"",
"location": "https://example.com/v2/Users/2819c223-7f76-453a-413861904646"
}
}
Figure 2: Example JSON Resource Structure
3.1. Common Attributes
各 SCIM resource(Users、Groups など)には、次の common attributes が含まれる。"ServiceProviderConfig" および "ResourceType" のサーバーディスカバリ endpoint とそれらに関連付く resources を除き、これらの属性は拡張された resource types を含むすべての resources に対して定義されなければならない。サービスプロバイダにより受理された場合(例:SCIM create の後)、属性 "id" と "meta"(およびそれに関連付く sub-attributes)はサービスプロバイダによって値が割り当てられなければならない。common attributes はすべての base resource schema の一部であると見なされ、独自の "schemas" URI を使用しない。
後方互換性のため、いくつかの既存のスキーマ定義では common attributes をスキーマの一部として列挙してよい。本節に列挙される属性特性(Section 2.2 を参照)は、既存のスキーマに含まれ得る古い定義よりも優先される。
id\ サービスプロバイダによって定義される SCIM resource の一意識別子。リソースの各表現は、空でない"id"値を含まなければならない。この識別子は SCIM service provider の全 resources にわたって一意でなければならない。これは安定的で再割り当てされない識別子であり、同じリソースが後続リクエストで返されるときに変化してはならない。"id"属性の値は常にサービスプロバイダによって発行され、client によって指定されてはならない。文字列"bulkId"は予約キーワードであり、いかなる一意識別子値の中でも使用してはならない。属性特性は、"caseExact"が"true"、mutability が"readOnly"、および"returned"特性が"always"である。プライバシーに関する追加の考慮事項については Section 9 を参照。
externalId\ プロビジョニング client によって定義される、リソースの識別子である String。"externalId"は、プロビジョニング client とサービスプロバイダの間でのリソースの識別を単純化し得る。すなわち、client がプロビジョニングドメイン由来の識別子でリソースを見つけるためにフィルタを使用できるようにし、プロビジョニングドメインにおけるリソース識別子と、サービスプロバイダが用いる識別子とのローカルなマッピングを保持する必要をなくす。各リソースは、空でない"externalId"値を含めてよい。"externalId"属性の値は常にプロビジョニング client により発行され、サービスプロバイダによって指定されてはならない。サービスプロバイダは、externalId を常にプロビジョニングドメインにスコープされたものとして解釈しなければならない。サーバーは一意性を強制しないが、値の一意性は client が値を設定することで制御されると想定される。プライバシーに関する追加の考慮事項については Section 9 を参照。この属性は"caseExact"が"true"であり、mutability は"readWrite"である。この属性は OPTIONAL である。
-
meta\ リソースのメタデータを含む complex attribute。すべての"meta"sub-attributes はサービスプロバイダによって割り当てられ("mutability"は"readOnly")、これらの sub-attributes はすべて"returned"特性が"default"である。この属性は client によって提供された場合、無視されなければならない。"meta"には次の sub-attributes が含まれる:resourceType\ リソースの resource type 名。この属性の mutability は"readOnly"であり、"caseExact"は"true"である。
created\ リソースがサービスプロバイダに追加された"DateTime"。この属性は DateTime でなければならない。
lastModified\ このリソースの詳細がサービスプロバイダで更新された、最新の DateTime。このリソースが初回作成以降一度も変更されていない場合、この値は"created"の値と同一でなければならない。
location\ 返されるリソースの URI。この値は"Content-Location"HTTP レスポンスヘッダー([RFC7231] の Section 3.1.4.2 を参照)と同一でなければならない。
version\ 返されるリソースのバージョン。この値は entity-tag(ETag)HTTP レスポンスヘッダー([RFC7232] の Sections 2.1 および 2.3 を参照)と同一でなければならない。この属性は"caseExact"が"true"である。サービスプロバイダによるこの属性のサポートは optional であり、サービスプロバイダがバージョニングをサポートするかどうかに依存する([RFC7644] の Section 3.14 を参照)。サービスプロバイダが表現に対して"version"(entity-tag)を提供し、その entity-tag の生成が強いバリデータの特性をすべて満たさない場合([RFC7232] の Section 2.1 を参照)、origin server は"version"(entity-tag)を弱いものとして示さなければならず、その不透明な値の先頭に"W/"を付与しなければならない(大文字小文字を区別する)。
3.2. Defining New Resource Types
SCIM は、resource type を定義することで、新しいクラスの resources を定義するように拡張できる。各 resource type は、名前、endpoint、ベーススキーマ(属性)、および resource type とともに使用するために登録された任意のスキーマ拡張を定義する。新しい種類の resources を提供するため、サービスプロバイダは Section 6 で指定されるとおりに新しい resource type を定義し、スキーマ表現を定義する(Section 8.7 を参照)。
3.3. Attribute Extensions to Resources
SCIM は、resource types が core schema に加えて拡張を持てるようにする。これは LDAP [RFC4512] で "objectClasses" が用いられる方法に似ている。しかし LDAP とは異なり、継承モデルはなく、すべての拡張は加算的である(LDAP の補助オブジェクトクラスに類似)。"schemas" 属性内の各値は、SCIM resource 表現に存在し得る加算的なスキーマを示す。"schemas" 属性は少なくとも 1 つの値を含まなければならず、それがリソースのベーススキーマであるものとする。"schemas" 属性は、使用中の拡張スキーマを示す追加の値を含んでよい。Schema extensions は、本仕様で定義された属性を再定義することを避けるべきであり、本仕様で定義された慣例に従うべきである。ベースオブジェクトスキーマを除き、スキーマ拡張 URI は、拡張名前空間に属する属性をベーススキーマ属性から区別するための JSON コンテナとして使用されるものとする。Figure 5 を参照。Figure 5 は enterprise User の JSON 表現の例であり、拡張スキーマを持つ User の例でもある。
任意の特定のリソースについて、"schemas" 属性内のどの URI 値がベーススキーマで、どれが拡張スキーマであるかを判断するために、リソースの "resourceType" 属性値を使用して、そのリソースの "ResourceType" スキーマを取得してよい(Section 6 を参照)。例については Figure 8 の "ResourceType" 表現を参照。
4. SCIM Core Resources and Extensions
本節では、SCIM server に存在する既定の resource schemas を定義する。SCIM はこれらの resources に限定されるものではなく、他の resource types をサポートするよう拡張できる(Section 3.2 を参照)。
4.1. "User" Resource Schema
SCIM は "User" resources のための resource type を提供する。"User" の core schema は、次のスキーマ URI によって識別される:
"urn:ietf:params:scim:schemas:core:2.0:User"
以下の attributes は、core schema attributes に加えて定義される。
4.1.1. Singular Attributes
userName\ サービスプロバイダにおける user の一意識別子であり、通常は user がサービスプロバイダに直接認証するために用いられる。多くの場合、システム内での一意識別子として user に表示される(一般に不透明で user にとって分かりにくい識別子である"id"や"externalId"とは対照的である)。各 User は空でない userName 値を含まなければならない。この識別子は、サービスプロバイダの全 Users の集合にわたって一意でなければならない。この属性は REQUIRED であり、大文字小文字を区別しない。
-
name\ user の氏名の構成要素。サービスプロバイダは、formatted sub-attribute に単一の文字列としてフルネームだけを返してよいし、他の sub-attributes を用いて個々の構成要素属性だけを返してよいし、その両方を返してよい。両方の形が返される場合、それらは同一の名前を記述しているべきであり、formatted 名は構成要素属性をどのように組み合わせるべきかを示すべきである。formatted\ 適切に、すべてのミドルネーム、敬称、接尾辞を含むフルネームを、表示用に整形したもの(例:"Ms. Barbara Jane Jensen, III")。
familyName\ User の姓、または多くの西洋言語における last name(例:フルネーム"Ms. Barbara Jane Jensen, III"における"Jensen")。
givenName\ User の名、または多くの西洋言語における first name(例:フルネーム"Ms. Barbara Jane Jensen, III"における"Barbara")。
middleName\ User のミドルネーム(複数可)(例:フルネーム"Ms. Barbara Jane Jensen, III"における"Jane")。
honorificPrefix\ User の敬称接頭辞(複数可)、または多くの西洋言語における title(例:フルネーム"Ms. Barbara Jane Jensen, III"における"Ms.")。
honorificSuffix\ User の敬称接尾辞(複数可)、または多くの西洋言語における suffix(例:フルネーム"Ms. Barbara Jane Jensen, III"における"III")。
displayName\ end-users に表示するのに適した user の名前。返される各 user は、空でない displayName 値を含んでよい。この名前は、分かっている場合には記述対象の User のフルネームであるべきである(例:"Babs Jensen"または"Ms. Barbara J Jensen, III")が、利用可能なのがそれだけである場合は username やハンドルであってもよい(例:"bjensen")。提供される値は、サービスプロバイダが end-users に提示する際に、この User を通常表示するための主要な文字列ラベルであるべきである。
nickName\ 実生活で user を呼ぶ際のくだけた呼び方。例えば"Robert"の代わりに"Bob"や"Bobby"。この属性は User の username(例:bjensen や mpepperidge)を表すために使用すべきではない。
profileUrl\ user のオンラインプロフィール(例:web ページ)を表す場所を指す uniform resource locator([RFC3986] の Section 1.1.3 で定義)である URI。URI は [RFC3986] の Section 6.2 に従って正規化される。
title\"Vice President"のような user の肩書。
userType\ 組織と user の関係を識別するために使用する。典型的に用いられる値としては"Contractor","Employee","Intern","Temp","External","Unknown"があるが、任意の値を使用してよい。
preferredLanguage\ user が好む書き言葉または話し言葉を示し、一般にローカライズされたユーザーインターフェースを選択するために使用される。この値は、好まれる自然言語の集合を示す。値の形式は HTTP Accept-Language ヘッダーフィールド("Accept-Language:"を含めない)と同一であり、[RFC7231] の Section 5.3.5 で規定される。この値の意図は、クラウドアプリケーションが、user agent(共有され得る)によって示される内容や、user が関与しないやり取り(委任された OAuth 2.0 [RFC6749] 風のやり取りなど)で通常の HTTP Accept-Language ヘッダーのネゴシエーションが行えない場合であっても、言語タグ [RFC4647] を user の言語選好に対して照合できるようにすることである。
-
locale\ 通貨、日付時刻形式、数値表現などをローカライズする目的で、User の既定の場所を示すために使用する。有効な値は [RFC5646] で定義される言語タグである。プログラミング言語は明示的に除外される。言語タグは、1 つ以上の大文字小文字を区別しない sub-tags の列であり、それぞれはハイフン文字(
"-",%x2D)で区切られる。後方互換性のため、サーバーはアンダースコア文字("_",%x5F)で区切られたタグを受け入れてよい。多くの場合、言語タグは、関連する言語の広い系統を識別する主要言語 sub-tag(例:"en"= English)から構成され、必要に応じて、その言語の範囲を絞り込む sub-tags の列が後続する(例:"en-CA"= カナダで用いられる English の変種)。言語タグ内に空白は許可されない。タグの例を以下に示す:txt fr, en-US, es-419, az-Arab, x-pig-latin, man-Nkoo-GN追加情報は [RFC5646] を参照。
timezone\ User のタイムゾーン。IANA Time Zone database 形式 [RFC6557]("Olson"タイムゾーンデータベース形式 [Olson-TZ] としても知られる)で表す(例:"America/Los_Angeles")。
active\ user の管理上の状態を示す Boolean 値。この属性の決定的な意味はサービスプロバイダによって定められる。典型例として、true は user がログイン可能であることを示し、false は user のアカウントが停止されていることを示す。
-
password\ この属性は、パスワードを設定、置換、または比較(すなわち等価性のフィルタ)する手段として使用されることを意図している。パスワードの平文値またはハッシュ値は、サービスプロバイダによって返されてはならない。サービスプロバイダが値をローカルに保持する場合、その値はハッシュ化されるべきである。client によりパスワードが設定または変更される場合、平文パスワードはサービスプロバイダにより次のとおり処理されるべきである:- 平文値を国際言語比較のために準備する。[RFC7644] の Section 7.8 を参照。
- 値をサーバーのパスワードポリシーに照らして検証する。注:パスワードポリシーの定義および強制は本文書のスコープ外である。
- 値が暗号化される(例:ハッシュ化される)ことを保証する。プロビジョニングのワークフロー上の理由で保存または永続化する際に許容されるハッシュ化および暗号化の取り扱いについては Section 9.2 を参照。
平文値を別のシステムまたはプログラミングインターフェースへ直ちに転送するサービスプロバイダは、その値を保護された接続(例:Transport Layer Security (TLS))上で直接渡さなければならない。プロビジョニングの前に、一定期間(例:ワークフローのために)値を一時的に永続化する必要がある場合、その値は暗号化などの方法により保護されなければならない。
既存の保存済みハッシュ値がある場合、等価性の一致に対するテストがサポートされてよい。等価性をテストする際、サービスプロバイダは次を行う:
- フィルタ値を国際言語比較のために準備する。[RFC7644] の Section 7.8 を参照。
- フィルタ値のソルト付きハッシュを生成し、ローカルに保持している値と一致するかをテストする。
password 属性の mutability は
"writeOnly"であり、値がいかなる形式でもサービスプロバイダにより返されてはならないことを示す(属性特性"returned"は"never")。
4.1.2. Multi-Valued Attributes
以下の multi-valued attributes を定義する。
emails\ User のメールアドレス。値は [RFC5321] に従って指定されるべきである。サービスプロバイダは [RFC5321] に従って値を正規化するべきである。例えば"bjensen@EXAMPLE.COM"ではなく"bjensen@example.com"とする。"display"sub-attribute は、メール値の正規化された表現を返すために使用してよい。"type"sub-attribute は、(人間の)user にとって意味のある分類を提供するために使用される。ユーザーインターフェースは、"work","home","other"という基本的な値の使用を促すべきであり、SCIM clients の裁量により追加の type 値を使用できるようにしてよい。
phoneNumbers\ user の電話番号。値は [RFC3966] で定義される形式に従って指定されるべきである。例:'tel:+1-201-555-0123'。サービスプロバイダは、適切な場合、[RFC3966] 形式に従って値を正規化するべきである。"display"sub-attribute は、電話番号値の正規化された表現を返すために使用してよい。"type"sub-attribute は、しばしば"work","home","mobile","fax","pager","other"という典型的な値を取り、SCIM clients によりさらに多くの type を定義できるようにしてよい。
ims\ user のインスタントメッセージングアドレス。すべてのインスタントメッセージングアドレスに対して公式の正規化ルールは存在しないが、サービスプロバイダは、適切な場合、すべての空白を取り除き、アドレスを小文字に変換するべきである。"type"sub-attribute は、次のいずれかの値を取るべきである:"aim","gtalk","icq","xmpp","msn","skype","qq","yahoo", または"other"(本書執筆時点で一般的な IM サービスを表す)。サービスプロバイダは、新しい IM サービスが導入された場合にさらに値を追加してよく、また、取り得る各値に対してより詳細な正規化ルールを指定してよい。
photos\ user の画像を表すリソース場所を指す uniform resource locator([RFC3986] の Section 1.1.3 で定義)である URI。リソースは、画像を含む web ページではなく、ファイル(例:GIF、JPEG、または PNG の画像ファイル)でなければならない。サービスプロバイダは、現在さまざまなサイズの画像を記述する標準が存在しないことが認識されているものの、同じ画像を異なるサイズで返してよい。なお、この属性は、この user が撮影した任意の写真を送るために使用すべきではない。代わりに、user を記述する際に表示に適した user のプロフィール写真を送るべきである。type に対する標準の canonical values の代わりに、この属性は一般的な写真サイズを表すために次の canonical values を定義する:"photo"および"thumbnail"。
-
addresses\ この user の物理的な郵送先住所。canonical type values は"work","home","other"。この属性は complex type であり、次の sub-attributes を持つ。すべての sub-attributes は OPTIONAL である。formatted\ 表示または宛名ラベル用途のために整形された郵送先住所の全文。この属性は改行を含んでよい。
streetAddress\ 住所の番地・通り名などの全文コンポーネント。家番号、通り名、私書箱(P.O. box)、および複数行の拡張住所情報を含んでよい。この属性は改行を含んでよい。
locality\ 市区町村、または地域(locality)のコンポーネント。
region\ 州(state)または地域(region)のコンポーネント。
postalCode\ 郵便番号(zip code または postal code)のコンポーネント。
country\ 国名のコンポーネント。指定される場合、値は ISO 3166-1 の"alpha-2"コード形式 [ISO3166] でなければならない。例:アメリカ合衆国およびスウェーデンはそれぞれ"US"と"SE"。
groups\ user が属する groups の一覧。直接の所属、入れ子になった groups を通じた所属、または動的に計算された所属を含む。値は、一般的な group-based または role-based の access control モデルの表現を可能にすることを目的としているが、明示的な authorization モデルは定義されない。group membership の意味論、および membership の結果として付与されるいかなる挙動や authorization も、サービスプロバイダによって定義されることを意図している。group membership がどのように導出されたかを記述するため、canonical types として"direct"と"indirect"を定義する。Direct group membership は user が group に直接関連付けられていることを示し、clients が"Group"resource を通じて membership を変更できることを示すべきである。Indirect membership は user の membership が推移的または動的であることを示し、clients が"Group"resource を通じて indirect group membership を変更できないことを意味するが、"Group"resource を通じて direct group membership を変更してよく、それが indirect memberships に影響し得ることを意味する。SCIM service provider が"Group"resource を公開する場合、"value"sub-attribute は"id"でなければならず、"$ref"sub-attribute は user が属する対応する"Group"resources の URI でなければならない。この属性は mutability が"readOnly"であるため、group membership の変更は"Group"Resource(Section 4.2)を介して適用されなければならない。この属性の mutability は"readOnly"である。
entitlements\ user の entitlements の一覧であり、user が保有している「もの」を表す。entitlement は、ある「もの」、オブジェクト、またはサービスに対する追加の権利であり得る。語彙や構文は指定されない。サービスプロバイダと clients は、user がアクセス可能なものを正確かつ曖昧さなく判定できるよう、十分な情報を値にエンコードすることが期待される。この値には canonical types はないが、type は entitlements のスコープを定める手段として有用であり得る。
roles\ user の roles の一覧であり、集合として user が誰であるかを表す。例:"Student","Faculty"。語彙や構文は指定されないが、role 値は entitlements の集合を表す String またはラベルであることが期待される。この値には canonical types はない。
x509Certificates\ リソース(例:User)に関連付けられた証明書の一覧。各値は、DER エンコードされた X.509 証明書([RFC5280] の Section 4 を参照)をちょうど 1 つ含み、[RFC4648] の Section 4 に従って base64 エンコードされなければならない。単一の値は複数の証明書を含んではならず、そのため、いかなる形であってもエンコード"SEQUENCE OF Certificate"を含まない。
4.2. "Group" Resource Schema
SCIM は groups を表現するためのスキーマを提供し、次のスキーマ URI により識別される:
"urn:ietf:params:scim:schemas:core:2.0:Group"
"Group" resources は、一般的な group-based または role-based の access control モデルの表現を可能にすることを目的としているが、明示的な authorization モデルは定義されない。group membership の意味論、および membership の結果として付与されるいかなる挙動や authorization も、サービスプロバイダによって定義されることを意図している。これらは本仕様のスコープ外と見なされる。
次の singular attribute は、SCIM core schema で定義される common attributes に加えて定義される:
displayName\ Group の人が読める名前。REQUIRED。
次の multi-valued attribute は、SCIM core schema で定義される common attributes に加えて定義される:
members\ Group のメンバー一覧。値は追加または削除してよいが、members の sub-attributes は"immutable"である。"value"sub-attribute は SCIM resource の"id"属性の値を含み、"$ref"sub-attribute は"User"や"Group"のような SCIM resource の URI でなければならない。"Group"type の意図は、サービスプロバイダが入れ子の groups をサポートできるようにすることである。サービスプロバイダは、"Group"resource schema において"members"属性の sub-attribute の"required"属性特性を設定することで、clients に空でない値の提供を要求してよい。
4.3. Enterprise User Schema Extension
次の SCIM extension は、企業または事業体に属する、あるいはそれらを代表して行動する users を表現する際に一般的に使用される attributes を定義する。enterprise User extension は、次のスキーマ URI により識別される:
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
次の singular attributes を定義する:
employeeNumber\ ある人物に割り当てられる文字列の識別子。通常は数値または英数字であり、一般に採用順序または組織との関連に基づいて割り当てられる。
costCenter\ コストセンターの名称を識別する。
organization\ 組織の名称を識別する。
division\ 事業部(division)の名称を識別する。
department\ 部門(department)の名称を識別する。
-
manager\ user の manager。サービスプロバイダが別の User の"id"属性を参照することで組織階層を表現できるようにする complex type。value\ user の manager を表す SCIM resource の"id"。RECOMMENDED。
$ref\ User の manager を表す SCIM resource の URI。RECOMMENDED。
displayName\ user の manager の displayName。この属性は OPTIONAL であり、mutability は"readOnly"。
5. Service Provider Configuration Schema
SCIM は、サービスプロバイダの構成を表現するためのスキーマを提供し、次のスキーマ URI により識別される:
"urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"
サービスプロバイダ構成リソースにより、サービスプロバイダは、標準化された形式で SCIM 仕様の機能を発見できるようになるとともに、clients に追加の実装詳細を提供できる。すべての attributes の mutability は "readOnly" である。他の core resources とは異なり、"id" 属性はサービスプロバイダ構成リソースでは必須ではない。
次の singular attributes は、core schema で定義される common attributes に加えて定義される:
documentationUri\ サービスプロバイダの、人が利用するためのヘルプドキュメントを指す HTTP でアドレス可能な URL。OPTIONAL。
-
patch\ PATCH の構成オプションを指定する complex type。REQUIRED。[RFC7644] の Section 3.5.2 を参照。supported\ 操作がサポートされるかどうかを指定する Boolean 値。REQUIRED。
-
bulk\ bulk の構成オプションを指定する complex type。[RFC7644] の Section 3.7 を参照。REQUIRED。supported\ 操作がサポートされるかどうかを指定する Boolean 値。REQUIRED。
maxOperations\ 最大操作数を指定する integer 値。REQUIRED。
maxPayloadSize\ 最大ペイロードサイズ(バイト)を指定する integer 値。REQUIRED。
-
filter\ FILTER のオプションを指定する complex type。REQUIRED。[RFC7644] の Section 3.4.2.2 を参照。supported\ 操作がサポートされるかどうかを指定する Boolean 値。REQUIRED。
maxResults\ 応答で返される最大リソース数を指定する integer 値。REQUIRED。
-
changePassword\ パスワード変更に関連する構成オプションを指定する complex type。REQUIRED。supported\ 操作がサポートされるかどうかを指定する Boolean 値。REQUIRED。
-
sort\ Sort の構成オプションを指定する complex type。REQUIRED。supported\ ソートがサポートされるかどうかを指定する Boolean 値。REQUIRED。
-
etag\ ETag の構成オプションを指定する complex type。REQUIRED。supported\ 操作がサポートされるかどうかを指定する Boolean 値。REQUIRED。
次の multi-valued attribute は、core schema で定義される common attributes に加えて定義される:
-
authenticationSchemes\ サポートされる認証方式のプロパティを指定する、multi-valued の complex type。構成を継ぎ目なく発見できるようにするため、サービスプロバイダは、適切なセキュリティ上の考慮事項を踏まえたうえで、事前の認証なしに authenticationSchemes 属性へ公にアクセス可能にするべきである。REQUIRED。次の sub-attributes を定義する:type\ 認証方式。本仕様は"oauth","oauth2","oauthbearertoken","httpbasic","httpdigest"の値を定義する。REQUIRED。
name\ 一般的な認証方式名。例:HTTP Basic。REQUIRED。
description\ 認証方式の説明。REQUIRED。
specUri\ 認証方式の仕様を指す HTTP でアドレス可能な URL。OPTIONAL。
documentationUri\ 認証方式の利用方法ドキュメントを指す HTTP でアドレス可能な URL。OPTIONAL。
6. ResourceType Schema
"ResourceType" スキーマは、resource type に関するメタデータを規定する。resource type の resources は READ-ONLY であり、次のスキーマ URI により識別される:
"urn:ietf:params:scim:schemas:core:2.0:ResourceType"
他の core resources とは異なり、別途指定がない限り、すべての attributes は REQUIRED である。resource type resource では "id" 属性は必須ではない。
次の singular attributes を定義する:
id\ resource type におけるサーバー側の一意 id。これはしばしば"name"属性と同じ値である。OPTIONAL。
name\ resource type 名。該当する場合、サービスプロバイダは名前(例:"User"または"Group")を指定しなければならない。この名前は、すべての resources において"meta.resourceType"属性から参照される。REQUIRED。
description\ resource type の人が読める説明。該当する場合、サービスプロバイダは説明を指定しなければならない。OPTIONAL。
endpoint\ サービスプロバイダの Base URL からの相対パスとして表される、resource type の HTTP でアドレス可能な endpoint。例:"Users"。REQUIRED。
schema\ resource type の主/ベースとなるスキーマ URI。例:"urn:ietf:params:scim:schemas:core:2.0:User"。これは、関連付けられた"Schema"resource の"id"属性と等しくなければならない。REQUIRED。
-
schemaExtensions\ resource type のスキーマ拡張の URI の一覧。OPTIONAL。schema\ 拡張スキーマの URI。例:"urn:edu:2.0:Staff"。これは"Schema"resource の"id"属性と等しくなければならない。REQUIRED。
required\ スキーマ拡張が resource type にとって必須であるかどうかを指定する Boolean 値。true の場合、この type の resource はこのスキーマ拡張を含まなければならず、さらに、このスキーマ拡張で必須として宣言された attributes も含まなければならない。false の場合、この type の resource はこのスキーマ拡張を省略してよい。REQUIRED。
7. Schema Definition
本節は、SCIM service provider が提供し受理する resources により使用されるスキーマを指定する方法を定義する。各 "schemas" URI 値について、このスキーマは定義された attribute(s) と、それらの特性(mutability、returnability など)を規定する。リソースオブジェクトで使用される各スキーマ URI には、対応する "Schema" resource が存在する。"Schema" resources は変更できず、関連付けられた attributes の mutability は "readOnly" である。"id"(常に返される)を除き、すべての attributes の "returned" 特性は "default" である。別途指定がない限り、すべてのスキーマ attributes は大文字小文字を区別しない。これらの resources は、次のスキーマ URI を持つ "schemas" 属性を持つ:
urn:ietf:params:scim:schemas:core:2.0:Schema
他の core resources とは異なり、"Schema" resource は sub-attribute 内に complex object を含んでよく、別途指定がない限り、すべての attributes は REQUIRED である。
次の singular attributes を定義する:
- id
- スキーマの一意の URI。該当する場合、サービスプロバイダは URI(例: "urn:ietf:params:scim:schemas:core:2.0:User")を指定しなければならない。
- 多くの他のスキーマでは "id" に何らかの Globally Unique Identifier (GUID) を使用するのに対し、スキーマの "id" は URI である。これは登録可能であり、異なるサービスプロバイダや clients の間で可搬であるようにするためである。REQUIRED。
- name
- スキーマの人が読める名前。該当する場合、サービスプロバイダは名前(例:"User" または "Group")を指定しなければならない。OPTIONAL。
- description
- スキーマの人が読める説明。該当する場合、サービスプロバイダは説明を指定しなければならない。OPTIONAL。
次の multi-valued attribute を定義する:
-
attributes
- 次の sub-attributes の集合を通じて、サービスプロバイダの attributes とそれらの性質を定義する complex type:
- name
- 属性名。
- type
- 属性のデータ型。有効な値は "string"、"boolean"、"decimal"、"integer"、"dateTime"、"reference"、"complex" である。
- 属性の type が "complex" の場合、対応するスキーマ attribute "subAttributes" が定義されているべきであり、その属性の sub-attributes を列挙する。
- subAttributes
- 属性の type が "complex" の場合、"subAttributes" は sub-attributes の集合を定義する。
- "subAttributes" は "attributes" と同じスキーマ sub-attributes を持つ。
- multiValued
- 属性が単数か複数かを示す Boolean 値。
- description
- 属性の人が読める説明。該当する場合、サービスプロバイダは説明を指定しなければならない。
- required
- 属性が必須であるかどうかを指定する Boolean 値。
- canonicalValues
- 使用してよい(例:"work" や "home")推奨 canonical values の集合。場合によっては、サービスプロバイダはサポートしていない値を無視することを選択してよい。OPTIONAL。
- caseExact
- 文字列属性が大文字小文字を区別するかどうかを指定する Boolean 値。
- サーバーはフィルタを評価する際に大文字小文字の区別を用いるものとする。case exact な attributes については、サーバーは送信された値の大文字小文字を保持するものとする。
- 属性が大文字小文字を区別しない場合、サーバーは送信された値の大文字小文字を変更してよい。
- 大文字小文字の区別は、属性値をフィルタ値と比較し得る方法にも影響する([RFC7644] の Section 3.4.2.2 を参照)。
-
mutability
- 属性値を(再)定義できる状況を示す単一のキーワード:
- readOnly
- 属性は変更してはならない。
- readWrite
- 属性はいつでも更新および読み取りを行ってよい。これが既定値である。
- immutable
- 属性はリソース作成時(例:POST)またはリクエストによるレコード置換(例:PUT)で定義してよい。属性は更新してはならない。
- writeOnly
- 属性はいつでも更新してよい。属性値は返されてはならない(例:値が保存されたハッシュであるため)。
- 注:mutability が "writeOnly" の属性は、通常 "returned" 設定が "never" でもある。
-
returned
- GET リクエストへの応答、または PUT、POST、PATCH リクエストへの応答において、属性および関連する値がいつ返されるかを示す単一のキーワード。有効なキーワードは次のとおり:
- always
- "attributes" パラメータの内容に関わらず、属性は常に返される。例えば、SCIM resource を識別するために "id" は常に返される。
- never
- 属性は決して返されない。これは、元の属性値(例:ハッシュ値)がサービスプロバイダにより保持されていないために起こり得る。
- サービスプロバイダは、attributes を検索フィルタで使用できるようにしてよい。
- default
- 属性は、属性値が返されるすべての SCIM 操作の応答において既定で返される。
- GET リクエストの "attributes" パラメータが指定された場合、属性値は、その属性が "attributes" パラメータに名前として含まれている場合にのみ返される。DEFAULT。
- request
- 属性は、client により属性が指定された場合(例えば属性が変更された場合)に、任意の PUT、POST、PATCH 操作への応答で返される。
- 属性は、SCIM のクエリ操作では "attributes" パラメータで指定された場合にのみ返される。
-
uniqueness
- サービスプロバイダが属性値の一意性をどのように強制するかを指定する単一のキーワード値。
- サーバーは、一意性に基づいて無効な値を HTTP 応答コード 400 (Bad Request) を返すことで拒否してよい。
- client は、サービスプロバイダが強制する程度よりも強く、client 側で一意性を強制してよい。例えば、サーバーの uniqueness が "none" であっても、client は値を一意にできる。
- 有効なキーワードは次のとおり:
- none
- 値はいかなる意味でも一意であることを意図しない。DEFAULT。
- server
- 値は、現在の SCIM endpoint(または tenancy)の文脈において一意であるべきであり、グローバルに一意であってもよい(例:"username"、メールアドレス、または他のサーバー生成のキー/カウンタ)。
- 同一サーバー上の 2 つのリソースが同じ値を持つべきではない。
- global
- 値はグローバルに一意であるべきである(例:メールアドレス、GUID、または他の値)。
- いかなるサーバー上の 2 つのリソースも同じ値を持つべきではない。
-
referenceTypes
-
参照し得る SCIM resource types を示す、JSON 文字列の multi-valued 配列。有効な値は次のとおり:
- SCIM resource type(例:"User" または "Group")
- "external" - リソースが外部リソース(例:写真)であることを示す
- "uri" - 参照がサービス endpoint または識別子(例:スキーマ URN)であることを示す
- この属性は、type が "reference" の attributes にのみ適用される(Section 2.3.7)。
-
8. JSON Representation
8.1. Minimal User Representation
以下は、JSON 形式における、最小限に必要な SCIM 表現の非規範的な例である。
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "2819c223-7f76-453a-919d-413861904646",
"userName": "bjensen@example.com",
"meta": {
"resourceType": "User",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W\/\"3694e05e9dff590\"",
"location": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"
}
}
Figure 3: Example Minimal User JSON Representation
8.2. Full User Representation
以下は、JSON 形式における、完全に値が設定された SCIM 表現の非規範的な例である。
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"id": "2819c223-7f76-453a-919d-413861904646",
"externalId": "701984",
"userName": "bjensen@example.com",
"name": {
"formatted": "Ms. Barbara J Jensen, III",
"familyName": "Jensen",
"givenName": "Barbara",
"middleName": "Jane",
"honorificPrefix": "Ms.",
"honorificSuffix": "III"
},
"displayName": "Babs Jensen",
"nickName": "Babs",
"profileUrl": "https://login.example.com/bjensen",
"emails": [
{
"value": "bjensen@example.com",
"type": "work",
"primary": true
},
{
"value": "babs@jensen.org",
"type": "home"
}
],
"addresses": [
{
"type": "work",
"streetAddress": "100 Universal City Plaza",
"locality": "Hollywood",
"region": "CA",
"postalCode": "91608",
"country": "USA",
"formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
"primary": true
},
{
"type": "home",
"streetAddress": "456 Hollywood Blvd",
"locality": "Hollywood",
"region": "CA",
"postalCode": "91608",
"country": "USA",
"formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA"
}
],
"phoneNumbers": [
{
"value": "555-555-5555",
"type": "work"
},
{
"value": "555-555-4444",
"type": "mobile"
}
],
"ims": [
{
"value": "someaimhandle",
"type": "aim"
}
],
"photos": [
{
"value": "https://photos.example.com/profilephoto/72930000000Ccne/F",
"type": "photo"
},
{
"value": "https://photos.example.com/profilephoto/72930000000Ccne/T",
"type": "thumbnail"
}
],
"userType": "Employee",
"title": "Tour Guide",
"preferredLanguage": "en-US",
"locale": "en-US",
"timezone": "America/Los_Angeles",
"active": true,
"password": "t1meMa$heen",
"groups": [
{
"value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
"$ref": "https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
"display": "Tour Guides"
},
{
"value": "fc348aa8-3835-40eb-a20b-c726e15c55b5",
"$ref": "https://example.com/v2/Groups/fc348aa8-3835-40eb-a20b-c726e15c55b5",
"display": "Employees"
},
{
"value": "71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",
"$ref": "https://example.com/v2/Groups/71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",
"display": "US Employees"
}
],
"x509Certificates": [
{
"value": "MIIDQzCCAqygAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCVVMx
EzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAoMC2V4YW1wbGUuY29tMRQwEgYD
VQQDDAtleGFtcGxlLmNvbTAeFw0xMTEwMjIwNjI0MzFaFw0xMjEwMDQwNjI0MzFa
MH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQKDAtl
eGFtcGxlLmNvbTEhMB8GA1UEAwwYTXMuIEJhcmJhcmEgSiBKZW5zZW4gSUlJMSIw
IAYJKoZIhvcNAQkBFhNiamVuc2VuQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA7Kr+Dcds/JQ5GwejJFcBIP682X3xpjis56AK02bc
1FLgzdLI8auoR+cC9/Vrh5t66HkQIOdA4unHh0AaZ4xL5PhVbXIPMB5vAPKpzz5i
PSi8xO8SL7I7SDhcBVJhqVqr3HgllEG6UClDdHO7nkLuwXq8HcISKkbT5WFTVfFZ
zidPl8HZ7DhXkZIRtJwBweq4bvm3hM1Os7UQH05ZS6cVDgweKNwdLLrT51ikSQG3
DYrl+ft781UQRIqxgwqCfXEuDiinPh0kkvIi5jivVu1Z9QiwlYEdRbLJ4zJQBmDr
SGTMYn4lRc2HgHO4DqB/bnMVorHB0CC6AV1QoFK4GPe1LwIDAQABo3sweTAJBgNV
HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp
Y2F0ZTAdBgNVHQ4EFgQU8pD0U0vsZIsaA16lL8En8bx0F/gwHwYDVR0jBBgwFoAU
dGeKitcaF7gnzsNwDx708kqaVt0wDQYJKoZIhvcNAQEFBQADgYEAA81SsFnOdYJt
Ng5Tcq+/ByEDrBgnusx0jloUhByPMEVkoMZ3J7j1ZgI8rAbOkNngX8+pKfTiDz1R
C4+dx8oU6Za+4NJXUjlL5CvV6BEYb1+QAEJwitTVvxB/A67g42/vzgAtoRUeDov1
+GFiBZ+GNF/cAYKcMtGcrs2i97ZkJMo="
}
],
"meta": {
"resourceType": "User",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W\/\"a330bc54f0671c9\"",
"location": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"
}
}
Figure 4: Example Full User JSON Representation
8.3. Enterprise User Extension Representation
以下は、enterprise User extension を用いた、完全に値が設定された User を JSON 形式で示す非規範的な例である。
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"id": "2819c223-7f76-453a-919d-413861904646",
"externalId": "701984",
"userName": "bjensen@example.com",
"name": {
"formatted": "Ms. Barbara J Jensen, III",
"familyName": "Jensen",
"givenName": "Barbara",
"middleName": "Jane",
"honorificPrefix": "Ms.",
"honorificSuffix": "III"
},
"displayName": "Babs Jensen",
"nickName": "Babs",
"profileUrl": "https://login.example.com/bjensen",
"emails": [
{
"value": "bjensen@example.com",
"type": "work",
"primary": true
},
{
"value": "babs@jensen.org",
"type": "home"
}
],
"addresses": [
{
"streetAddress": "100 Universal City Plaza",
"locality": "Hollywood",
"region": "CA",
"postalCode": "91608",
"country": "USA",
"formatted": "100 Universal City Plaza\nHollywood, CA 91608 USA",
"type": "work",
"primary": true
},
{
"streetAddress": "456 Hollywood Blvd",
"locality": "Hollywood",
"region": "CA",
"postalCode": "91608",
"country": "USA",
"formatted": "456 Hollywood Blvd\nHollywood, CA 91608 USA",
"type": "home"
}
],
"phoneNumbers": [
{
"value": "555-555-5555",
"type": "work"
},
{
"value": "555-555-4444",
"type": "mobile"
}
],
"ims": [
{
"value": "someaimhandle",
"type": "aim"
}
],
"photos": [
{
"value": "https://photos.example.com/profilephoto/72930000000Ccne/F",
"type": "photo"
},
{
"value": "https://photos.example.com/profilephoto/72930000000Ccne/T",
"type": "thumbnail"
}
],
"userType": "Employee",
"title": "Tour Guide",
"preferredLanguage": "en-US",
"locale": "en-US",
"timezone": "America/Los_Angeles",
"active": true,
"password": "t1meMa$heen",
"groups": [
{
"value": "e9e30dba-f08f-4109-8486-d5c6a331660a",
"$ref": "../Groups/e9e30dba-f08f-4109-8486-d5c6a331660a",
"display": "Tour Guides"
},
{
"value": "fc348aa8-3835-40eb-a20b-c726e15c55b5",
"$ref": "../Groups/fc348aa8-3835-40eb-a20b-c726e15c55b5",
"display": "Employees"
},
{
"value": "71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",
"$ref": "../Groups/71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",
"display": "US Employees"
}
],
"x509Certificates": [
{
"value": "MIIDQzCCAqygAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCVVMx
EzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAoMC2V4YW1wbGUuY29tMRQwEgYD
VQQDDAtleGFtcGxlLmNvbTAeFw0xMTEwMjIwNjI0MzFaFw0xMjEwMDQwNjI0MzFa
MH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRQwEgYDVQQKDAtl
eGFtcGxlLmNvbTEhMB8GA1UEAwwYTXMuIEJhcmJhcmEgSiBKZW5zZW4gSUlJMSIw
IAYJKoZIhvcNAQkBFhNiamVuc2VuQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA7Kr+Dcds/JQ5GwejJFcBIP682X3xpjis56AK02bc
1FLgzdLI8auoR+cC9/Vrh5t66HkQIOdA4unHh0AaZ4xL5PhVbXIPMB5vAPKpzz5i
PSi8xO8SL7I7SDhcBVJhqVqr3HgllEG6UClDdHO7nkLuwXq8HcISKkbT5WFTVfFZ
zidPl8HZ7DhXkZIRtJwBweq4bvm3hM1Os7UQH05ZS6cVDgweKNwdLLrT51ikSQG3
DYrl+ft781UQRIqxgwqCfXEuDiinPh0kkvIi5jivVu1Z9QiwlYEdRbLJ4zJQBmDr
SGTMYn4lRc2HgHO4DqB/bnMVorHB0CC6AV1QoFK4GPe1LwIDAQABo3sweTAJBgNV
HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp
Y2F0ZTAdBgNVHQ4EFgQU8pD0U0vsZIsaA16lL8En8bx0F/gwHwYDVR0jBBgwFoAU
dGeKitcaF7gnzsNwDx708kqaVt0wDQYJKoZIhvcNAQEFBQADgYEAA81SsFnOdYJt
Ng5Tcq+/ByEDrBgnusx0jloUhByPMEVkoMZ3J7j1ZgI8rAbOkNngX8+pKfTiDz1R
C4+dx8oU6Za+4NJXUjlL5CvV6BEYb1+QAEJwitTVvxB/A67g42/vzgAtoRUeDov1
+GFiBZ+GNF/cAYKcMtGcrs2i97ZkJMo="
}
],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "701984",
"costCenter": "4130",
"organization": "Universal Studios",
"division": "Theme Park",
"department": "Tour Operations",
"manager": {
"value": "26118915-6090-4610-87e4-49d8ca9f808d",
"$ref": "../Users/26118915-6090-4610-87e4-49d8ca9f808d",
"displayName": "John Smith"
}
},
"meta": {
"resourceType": "User",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W\/\"3694e05e9dff591\"",
"location": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"
}
}
Figure 5: Example Enterprise User JSON Representation
8.4. Group Representation
以下は、JSON 形式における SCIM Group 表現の非規範的な例である。
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"id": "e9e30dba-f08f-4109-8486-d5c6a331660a",
"displayName": "Tour Guides",
"members": [
{
"value": "2819c223-7f76-453a-919d-413861904646",
"$ref": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646",
"display": "Babs Jensen"
},
{
"value": "902c246b-6245-4190-8e05-00816be7344a",
"$ref": "https://example.com/v2/Users/902c246b-6245-4190-8e05-00816be7344a",
"display": "Mandy Pepperidge"
}
],
"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"
}
}
Figure 6: Example Group JSON Representation
8.5. Service Provider Configuration Representation
以下は、JSON 形式における SCIM service provider 構成表現の非規範的な例である。
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],
"documentationUri": "http://example.com/help/scim.html",
"patch": {
"supported": true
},
"bulk": {
"supported": true,
"maxOperations": 1000,
"maxPayloadSize": 1048576
},
"filter": {
"supported": true,
"maxResults": 200
},
"changePassword": {
"supported": true
},
"sort": {
"supported": true
},
"etag": {
"supported": true
},
"authenticationSchemes": [
{
"name": "OAuth Bearer Token",
"description": "OAuth Bearer Token Standard を用いる認証方式",
"specUri": "http://www.rfc-editor.org/info/rfc6750",
"documentationUri": "http://example.com/help/oauth.html",
"type": "oauthbearertoken",
"primary": true
},
{
"name": "HTTP Basic",
"description": "HTTP Basic Standard を用いる認証方式",
"specUri": "http://www.rfc-editor.org/info/rfc2617",
"documentationUri": "http://example.com/help/httpBasic.html",
"type": "httpbasic"
}
],
"meta": {
"location": "https://example.com/v2/ServiceProviderConfig",
"resourceType": "ServiceProviderConfig",
"created": "2010-01-23T04:56:22Z",
"lastModified": "2011-05-13T04:42:34Z",
"version": "W\/\"3694e05e9dff594\""
}
}
Figure 7: Example Service Provider Configuration JSON Representation
8.6. Resource Type Representation
下は、JSON 形式における SCIM resource types の非規範的な例である。
[{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],
"id": "User",
"name": "User",
"endpoint": "/Users",
"description": "User Account",
"schema": "urn:ietf:params:scim:schemas:core:2.0:User",
"schemaExtensions": [
{
"schema":
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"required": true
}
],
"meta": {
"location": "https://example.com/v2/ResourceTypes/User",
"resourceType": "ResourceType"
}
},
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],
"id": "Group",
"name": "Group",
"endpoint": "/Groups",
"description": "Group",
"schema": "urn:ietf:params:scim:schemas:core:2.0:Group",
"meta": {
"location": "https://example.com/v2/ResourceTypes/Group",
"resourceType": "ResourceType"
}
}]
Figure 8: Example Resource Type JSON Representation
8.7. Schema Representation
以下の各節では、SCIM リソースのスキーマと、service provider のスキーマの双方について、スキーマ表現を示す。なお、JSON 表現は読みやすさのため、また仕様書の書式に収まるように、一部調整してある。
8.7.1. Resource Schema Representation
以下は、SCIM リソース向けの、JSON 形式における SCIM スキーマ表現の例を意図している。許容される範囲において、個々の値およびスキーマは変更され得る。この例には "User"、"Group"、および "EnterpriseUser" のスキーマ表現を含むが、他のスキーマ表現もあり得る。
[
{
"id" : "urn:ietf:params:scim:schemas:core:2.0:User",
"name" : "User",
"description" : "User Account",
"attributes" : [
{
"name" : "userName",
"type" : "string",
"multiValued" : false,
"description" : "User の一意な識別子。通常、ユーザーが service provider に対して直接認証するために使用される。
各 User は空でない userName 値を必ず含めなければならない。この識別子は、service provider に存在する User の全体集合にわたって一意でなければならない。
必須(REQUIRED)。",
"required" : true,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "server"
},
{
"name" : "name",
"type" : "complex",
"multiValued" : false,
"description" : "ユーザーの実名を構成する要素。
Providers は、formatted サブ属性に単一の文字列としてフルネームだけを返してもよいし、他のサブ属性を用いて個別の構成要素属性だけを返してもよいし、また両方を返してもよい。両方の表現が返される場合、それらは同一の名前を表しているべき(SHOULD)であり、formatted 名は構成要素属性をどのように結合すべきかを示す。",
"required" : false,
"subAttributes" : [
{
"name" : "formatted",
"type" : "string",
"multiValued" : false,
"description" : "フルネーム。適切に、すべてのミドルネーム、敬称、接尾辞を含め、表示用に整形される(例: 'Ms. Barbara J Jensen, III')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "familyName",
"type" : "string",
"multiValued" : false,
"description" : "User の姓。多くの西洋言語ではラストネームに相当する(例: フルネームが 'Ms. Barbara J Jensen, III' の場合の 'Jensen')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "givenName",
"type" : "string",
"multiValued" : false,
"description" : "User の名。多くの西洋言語ではファーストネームに相当する(例: フルネームが 'Ms. Barbara J Jensen, III' の場合の 'Barbara')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "middleName",
"type" : "string",
"multiValued" : false,
"description" : "User のミドルネーム(複数可)(例: フルネームが 'Ms. Barbara J Jensen, III' の場合の 'Jane')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "honorificPrefix",
"type" : "string",
"multiValued" : false,
"description" : "User の敬称接頭辞(複数可)。多くの西洋言語では称号に相当する(例: フルネームが 'Ms. Barbara J Jensen, III' の場合の 'Ms.')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "honorificSuffix",
"type" : "string",
"multiValued" : false,
"description" : "User の敬称接尾辞(複数可)。多くの西洋言語では接尾辞に相当する(例: フルネームが 'Ms. Barbara J Jensen, III' の場合の 'III')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
}
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "displayName",
"type" : "string",
"multiValued" : false,
"description" : "End-User に表示するのに適した User の名前。名前は、既知であれば、記述対象の User のフルネームであるべき(SHOULD)である。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "nickName",
"type" : "string",
"multiValued" : false,
"description" : "現実世界でユーザーに呼びかけるときのくだけた呼称(例: 'Robert' の代わりに 'Bob' や 'Bobby')。この属性は User の username(例: 'bjensen' や 'mpepperidge')を表すために使用すべきではない(SHOULD NOT)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "profileUrl",
"type" : "reference",
"referenceTypes" : ["external"],
"multiValued" : false,
"description" : "User のオンラインプロフィールを表すページを指す、完全修飾 URL。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "title",
"type" : "string",
"multiValued" : false,
"description" : "ユーザーの肩書き(例: \"Vice President.\")。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "userType",
"type" : "string",
"multiValued" : false,
"description" : "組織とユーザーの関係を識別するために用いる。典型的には 'Contractor'、'Employee'、'Intern'、'Temp'、'External'、'Unknown' などの値が用いられることがあるが、任意の値を使用してよい。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "preferredLanguage",
"type" : "string",
"multiValued" : false,
"description" : "User の希望する書記言語または話し言葉を示す。一般に、ローカライズされたユーザーインターフェイスを選択するために用いる。例として、'en_US' は英語という言語と、US という国を指定する。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "locale",
"type" : "string",
"multiValued" : false,
"description" : "通貨、日時形式、数値表現などの項目をローカライズする目的で、User の既定の所在地を示すために用いる。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "timezone",
"type" : "string",
"multiValued" : false,
"description" : "'Olson' タイムゾーンデータベース形式における User のタイムゾーン(例: 'America/Los_Angeles')。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "active",
"type" : "boolean",
"multiValued" : false,
"description" : "User の管理上の状態を示す Boolean 値。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
},
{
"name" : "password",
"type" : "string",
"multiValued" : false,
"description" : "User の平文パスワード。この属性は、新しい User を作成する際に初期パスワードを指定する手段、または既存 User のパスワードをリセットする手段として使用することを意図している。",
"required" : false,
"caseExact" : false,
"mutability" : "writeOnly",
"returned" : "never",
"uniqueness" : "none"
},
{
"name" : "emails",
"type" : "complex",
"multiValued" : true,
"description" : "ユーザーの Email addresses。値は service provider によって正規化されるべき(SHOULD)である(例: 'bjensen@EXAMPLE.COM' ではなく 'bjensen@example.com')。
型(type)の正規の値は 'work'、'home'、'other'。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "ユーザーの Email addresses。値は service provider によって正規化されるべき(SHOULD)である(例: 'bjensen@EXAMPLE.COM' ではなく 'bjensen@example.com')。
型(type)の正規の値は 'work'、'home'、'other'。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル(例: 'work' または 'home')。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"work",
"home",
"other"
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値(例: 優先される郵送先住所や、主要な email address)。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "phoneNumbers",
"type" : "complex",
"multiValued" : true,
"description" : "User の Phone numbers。値は、RFC 3966 で指定される形式に従って service provider により正規化されるべき(SHOULD)である(例: 'tel:+1-201-555-0123')。
型(type)の正規の値は 'work'、'home'、'mobile'、'fax'、'pager'、'other'。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "User の電話番号。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル(例: 'work'、'home'、'mobile')。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"work",
"home",
"mobile",
"fax",
"pager",
"other"
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値(例: 優先される電話番号、主要な電話番号)。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default"
},
{
"name" : "ims",
"type" : "complex",
"multiValued" : true,
"description" : "User の Instant messaging addresses。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "User の Instant messaging address。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル(例: 'aim'、'gtalk'、'xmpp')。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"aim",
"gtalk",
"icq",
"xmpp",
"msn",
"skype",
"qq",
"yahoo"
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値(例: 優先される messenger、主要な messenger)。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default"
},
{
"name" : "photos",
"type" : "complex",
"multiValued" : true,
"description" : "User の写真の URLs。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "reference",
"referenceTypes" : ["external"],
"multiValued" : false,
"description" : "User の写真の URL。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル。すなわち 'photo' または 'thumbnail'。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"photo",
"thumbnail"
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値(例: 優先される photo または thumbnail)。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default"
},
{
"name" : "addresses",
"type" : "complex",
"multiValued" : true,
"description" : "この User の物理的な郵送先住所。
型(type)の正規の値は 'work'、'home'、'other'。この属性は、以下のサブ属性を持つ複合型である。",
"required" : false,
"subAttributes" : [
{
"name" : "formatted",
"type" : "string",
"multiValued" : false,
"description" : "フルの郵送先住所。表示用、または宛名ラベルで使用するために整形される。この属性は改行を含んでもよい(MAY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "streetAddress",
"type" : "string",
"multiValued" : false,
"description" : "住所のストリートアドレス部分全体。番地、通り名、私書箱(P.O. box)、および複数行の追加ストリートアドレス情報を含んでもよい。この属性は改行を含んでもよい(MAY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "locality",
"type" : "string",
"multiValued" : false,
"description" : "市区町村などの locality 部分。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "region",
"type" : "string",
"multiValued" : false,
"description" : "州または地域(region)部分。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "postalCode",
"type" : "string",
"multiValued" : false,
"description" : "郵便番号(zip code または postal code)部分。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "country",
"type" : "string",
"multiValued" : false,
"description" : "国名部分。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル(例: 'work' または 'home')。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"work",
"home",
"other"
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
}
],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "groups",
"type" : "complex",
"multiValued" : true,
"description" : "ユーザーが所属する groups の一覧。直接の membership、ネストされた groups を経由した membership、または動的に計算された membership のいずれかである。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "User の group の識別子。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "$ref",
"type" : "reference",
"referenceTypes" : [
"User",
"Group"
],
"multiValued" : false,
"description" : "ユーザーが所属する対応する 'Group' リソースの URI。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル(例: 'direct' または 'indirect')。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"direct",
"indirect"
],
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
}
],
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "entitlements",
"type" : "complex",
"multiValued" : true,
"description" : "User が持つもの(a thing)を表す entitlements の一覧。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "entitlement の値。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default"
},
{
"name" : "roles",
"type" : "complex",
"multiValued" : true,
"description" : "User が誰であるかを集合的に表す roles の一覧(例: 'Student'、'Faculty')。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "role の値。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default"
},
{
"name" : "x509Certificates",
"type" : "complex",
"multiValued" : true,
"description" : "User に発行された certificates の一覧。",
"required" : false,
"caseExact" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "binary",
"multiValued" : false,
"description" : "X.509 certificate の値。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "display",
"type" : "string",
"multiValued" : false,
"description" : "人間が読める名前。主として表示目的で用いる。読み取り専用(READ-ONLY)。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性の機能を示すラベル。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [],
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "primary",
"type" : "boolean",
"multiValued" : false,
"description" : "この属性に対する「primary」または優先される属性値であることを示す Boolean 値。primary 属性値 'true' は、1 回を超えて出現してはならない(MUST)。",
"required" : false,
"mutability" : "readWrite",
"returned" : "default"
}
],
"mutability" : "readWrite",
"returned" : "default"
}
],
"meta" : {
"resourceType" : "Schema",
"location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"
}
},
{
"id" : "urn:ietf:params:scim:schemas:core:2.0:Group",
"name" : "Group",
"description" : "Group",
"attributes" : [
{
"name" : "displayName",
"type" : "string",
"multiValued" : false,
"description" : "Group の人間可読な名前。
REQUIRED.",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "members",
"type" : "complex",
"multiValued" : true,
"description" : "Group の members の一覧。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "この Group の member の識別子。",
"required" : false,
"caseExact" : false,
"mutability" : "immutable",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "$ref",
"type" : "reference",
"referenceTypes" : [
"User",
"Group"
],
"multiValued" : false,
"description" : "この Group の member である SCIM リソースに対応する URI。",
"required" : false,
"caseExact" : false,
"mutability" : "immutable",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "リソースの種類を示すラベル(例: 'User' または 'Group')。",
"required" : false,
"caseExact" : false,
"canonicalValues" : [
"User",
"Group"
],
"mutability" : "immutable",
"returned" : "default",
"uniqueness" : "none"
}
],
"mutability" : "readWrite",
"returned" : "default"
}
],
"meta" : {
"resourceType" : "Schema",
"location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group"
}
},
{
"id" : "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"name" : "EnterpriseUser",
"description" : "Enterprise User",
"attributes" : [
{
"name" : "employeeNumber",
"type" : "string",
"multiValued" : false,
"description" : "人に割り当てられる数値または英数字の識別子。通常、採用順序、または組織との関連に基づく。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "costCenter",
"type" : "string",
"multiValued" : false,
"description" : "cost center の名称を識別する。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "organization",
"type" : "string",
"multiValued" : false,
"description" : "organization の名称を識別する。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "division",
"type" : "string",
"multiValued" : false,
"description" : "division の名称を識別する。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "department",
"type" : "string",
"multiValued" : false,
"description" : "department の名称を識別する。",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "manager",
"type" : "complex",
"multiValued" : false,
"description" : "User の manager。別の User の 'id' 属性を参照することで、組織階層を表現できるようにすることを(任意で)可能にする複合型。",
"required" : false,
"subAttributes" : [
{
"name" : "value",
"type" : "string",
"multiValued" : false,
"description" : "User の manager を表す SCIM リソースの id。REQUIRED.",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "$ref",
"type" : "reference",
"referenceTypes" : [
"User"
],
"multiValued" : false,
"description" : "User の manager を表す SCIM リソースの URI。REQUIRED.",
"required" : false,
"caseExact" : false,
"mutability" : "readWrite",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "displayName",
"type" : "string",
"multiValued" : false,
"description" : "User の manager の displayName。
OPTIONAL and READ-ONLY.",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
}
],
"mutability" : "readWrite",
"returned" : "default"
}
],
"meta" : {
"resourceType" : "Schema",
"location" :
"/v2/Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
}
}
]
Figure 9: Example JSON Representation for Resource Schema
8.7.2. Service Provider Schema Representation
以下は、固定された service provider スキーマ(ServiceProviderConfig、ResourceType、Schema)に対する SCIM スキーマの表現である。
[
{
"id" :
"urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig",
"name" : "Service Provider Configuration",
"description" : "service provider の
configuration を表現するためのスキーマ",
"attributes" : [
{
"name" : "documentationUri",
"type" : "reference",
"referenceTypes" : ["external"],
"multiValued" : false,
"description" : "service provider の、利用者向けのヘルプ文書を指す HTTP で到達可能な URL。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "patch",
"type" : "complex",
"multiValued" : false,
"description" : "PATCH
の configuration options を指定する複合型。",
"required" : true,
"returned" : "default",
"mutability" : "readOnly",
"subAttributes" : [
{
"name" : "supported",
"type" : "boolean",
"multiValued" : false,
"description" : "その operation がサポートされているかどうかを指定する Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
}
]
},
{
"name" : "bulk",
"type" : "complex",
"multiValued" : false,
"description" : "bulk
の configuration options を指定する複合型。",
"required" : true,
"returned" : "default",
"mutability" : "readOnly",
"subAttributes" : [
{
"name" : "supported",
"type" : "boolean",
"multiValued" : false,
"description" : "その operation がサポートされているかどうかを指定する Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "maxOperations",
"type" : "integer",
"multiValued" : false,
"description" : "operations の最大数を指定する整数値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "maxPayloadSize",
"type" : "integer",
"multiValued" : false,
"description" : "payload size の最大値(バイト単位)を指定する整数値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
}
]
},
{
"name" : "filter",
"type" : "complex",
"multiValued" : false,
"description" : "FILTER options
を指定する複合型。",
"required" : true,
"returned" : "default",
"mutability" : "readOnly",
"subAttributes" : [
{
"name" : "supported",
"type" : "boolean",
"multiValued" : false,
"description" : "その operation がサポートされているかどうかを指定する Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "maxResults",
"type" : "integer",
"multiValued" : false,
"description" : "レスポンスで返される resources の最大数を指定する整数値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
}
]
},
{
"name" : "changePassword",
"type" : "complex",
"multiValued" : false,
"description" : "パスワード変更に関連する configuration options を指定する複合型。",
"required" : true,
"returned" : "default",
"mutability" : "readOnly",
"subAttributes" : [
{
"name" : "supported",
"type" : "boolean",
"multiValued" : false,
"description" : "その operation がサポートされているかどうかを指定する Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
}
]
},
{
"name" : "sort",
"type" : "complex",
"multiValued" : false,
"description" : "sort の結果に関する options を指定する複合型。",
"required" : true,
"returned" : "default",
"mutability" : "readOnly",
"subAttributes" : [
{
"name" : "supported",
"type" : "boolean",
"multiValued" : false,
"description" : "その operation がサポートされているかどうかを指定する Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
}
]
},
{
"name" : "authenticationSchemes",
"type" : "complex",
"multiValued" : true,
"description" : "サポートされる authentication scheme の properties を指定する複合型。",
"required" : true,
"returned" : "default",
"mutability" : "readOnly",
"subAttributes" : [
{
"name" : "name",
"type" : "string",
"multiValued" : false,
"description" : "一般的な authentication scheme 名(例: HTTP Basic)。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "description",
"type" : "string",
"multiValued" : false,
"description" : "authentication scheme の説明。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "specUri",
"type" : "reference",
"referenceTypes" : ["external"],
"multiValued" : false,
"description" : "authentication scheme の仕様を指す HTTP で到達可能な URL。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "documentationUri",
"type" : "reference",
"referenceTypes" : ["external"],
"multiValued" : false,
"description" : "authentication scheme の利用ドキュメントを指す HTTP で到達可能な URL。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
}
]
}
]
},
{
"id" : "urn:ietf:params:scim:schemas:core:2.0:ResourceType",
"name" : "ResourceType",
"description" : "SCIM
resource type を記述するスキーマを指定する",
"attributes" : [
{
"name" : "id",
"type" : "string",
"multiValued" : false,
"description" : "resource type のサーバー内で一意な id。
'name' 属性と同じ場合がある。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "name",
"type" : "string",
"multiValued" : false,
"description" : "resource type の名前。該当する場合、service providers は名前(例: 'User')を必ず指定しなければならない(MUST)。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "description",
"type" : "string",
"multiValued" : false,
"description" : "resource type の人間可読な説明。該当する場合、service providers は説明を必ず指定しなければならない(MUST)。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "endpoint",
"type" : "reference",
"referenceTypes" : ["uri"],
"multiValued" : false,
"description" : "Base URL からの相対で表される、resource type の HTTP で到達可能な endpoint(例: '/Users')。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "schema",
"type" : "reference",
"referenceTypes" : ["uri"],
"multiValued" : false,
"description" : "resource type の primary/base schema
URI。",
"required" : true,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "schemaExtensions",
"type" : "complex",
"multiValued" : false,
"description" : "resource type の schema
extensions の URIs の一覧。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default",
"subAttributes" : [
{
"name" : "schema",
"type" : "reference",
"referenceTypes" : ["uri"],
"multiValued" : false,
"description" : "schema extension の URI。",
"required" : true,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "required",
"type" : "boolean",
"multiValued" : false,
"description" : "schema extension が resource type に必要かどうかを指定する Boolean 値。true の場合、この型の resource はこの schema extension を必ず含め(MUST)、かつ、この schema extension 内で required と宣言された属性も必ず含めなければならない。false の場合、この型の resource はこの schema extension を省略してもよい(MAY)。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
}
]
}
]
},
{
"id" : "urn:ietf:params:scim:schemas:core:2.0:Schema",
"name" : "Schema",
"description" : "SCIM schema を記述するスキーマを指定する",
"attributes" : [
{
"name" : "id",
"type" : "string",
"multiValued" : false,
"description" : "schema の一意な URI。
該当する場合、service providers は URI を必ず指定しなければならない(MUST)。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "name",
"type" : "string",
"multiValued" : false,
"description" : "schema の人間可読な名前。該当する場合、service providers は名前(例: 'User')を必ず指定しなければならない(MUST)。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "description",
"type" : "string",
"multiValued" : false,
"description" : "schema の人間可読な名前。該当する場合、service providers は名前(例: 'User')を必ず指定しなければならない(MUST)。",
"required" : false,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "attributes",
"type" : "complex",
"multiValued" : true,
"description" : "schema の attributes を含む複合属性。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default",
"subAttributes" : [
{
"name" : "name",
"type" : "string",
"multiValued" : false,
"description" : "属性の名前。",
"required" : true,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性のデータ型。
有効な値には 'string'、'complex'、'boolean'、
'decimal'、'integer'、'dateTime'、'reference' が含まれる。",
"required" : true,
"canonicalValues" : [
"string",
"complex",
"boolean",
"decimal",
"integer",
"dateTime",
"reference"
],
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "multiValued",
"type" : "boolean",
"multiValued" : false,
"description" : "属性が複数値であるか(複数性)を示す Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "description",
"type" : "string",
"multiValued" : false,
"description" : "属性の人間可読な説明。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "required",
"type" : "boolean",
"multiValued" : false,
"description" : "属性が必須であるかどうかを示す boolean 値。",
"required" : false,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "canonicalValues",
"type" : "string",
"multiValued" : true,
"description" : "canonical values の集合。該当する場合、service providers は canonical types(例: 'work'、'home')を必ず指定しなければならない(MUST)。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "caseExact",
"type" : "boolean",
"multiValued" : false,
"description" : "文字列属性が大文字小文字を区別するかどうかを示す Boolean 値。",
"required" : false,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "mutability",
"type" : "string",
"multiValued" : false,
"description" : "属性が変更可能かどうかを示す。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"readOnly",
"readWrite",
"immutable",
"writeOnly"
]
},
{
"name" : "returned",
"type" : "string",
"multiValued" : false,
"description" : "属性がレスポンス(例: query に対するレスポンス)に返されるタイミングを示す。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"always",
"never",
"default",
"request"
]
},
{
"name" : "uniqueness",
"type" : "string",
"multiValued" : false,
"description" : "値がどの程度一意でなければならないかを示す。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"none",
"server",
"global"
]
},
{
"name" : "referenceTypes",
"type" : "string",
"multiValued" : true,
"description" : "型が 'reference' の属性でのみ使用する。reference 属性が参照してもよい SCIM resourceType(例: 'User')を指定する。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "subAttributes",
"type" : "complex",
"multiValued" : true,
"description" : "複合属性のサブ属性を定義するために用いる。",
"required" : false,
"mutability" : "readOnly",
"returned" : "default",
"subAttributes" : [
{
"name" : "name",
"type" : "string",
"multiValued" : false,
"description" : "属性の名前。",
"required" : true,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "type",
"type" : "string",
"multiValued" : false,
"description" : "属性のデータ型。
有効な値には 'string'、'complex'、'boolean'、
'decimal'、'integer'、'dateTime'、'reference' が含まれる。",
"required" : true,
"caseExact" : false,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"string",
"complex",
"boolean",
"decimal",
"integer",
"dateTime",
"reference"
]
},
{
"name" : "multiValued",
"type" : "boolean",
"multiValued" : false,
"description" : "属性が複数値であるか(複数性)を示す Boolean 値。",
"required" : true,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "description",
"type" : "string",
"multiValued" : false,
"description" : "属性の人間可読な説明。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "required",
"type" : "boolean",
"multiValued" : false,
"description" : "属性が必須であるかどうかを示す boolean 値。",
"required" : false,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "canonicalValues",
"type" : "string",
"multiValued" : true,
"description" : "canonical values の集合。該当する場合、service providers は canonical types(例: 'work'、'home')を必ず指定しなければならない(MUST)。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
},
{
"name" : "caseExact",
"type" : "boolean",
"multiValued" : false,
"description" : "文字列属性が大文字小文字を区別するかどうかを示す Boolean 値。",
"required" : false,
"mutability" : "readOnly",
"returned" : "default"
},
{
"name" : "mutability",
"type" : "string",
"multiValued" : false,
"description" : "属性が変更可能かどうかを示す。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"readOnly",
"readWrite",
"immutable",
"writeOnly"
]
},
{
"name" : "returned",
"type" : "string",
"multiValued" : false,
"description" : "属性がレスポンス(例: query に対するレスポンス)に返されるタイミングを示す。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"always",
"never",
"default",
"request"
]
},
{
"name" : "uniqueness",
"type" : "string",
"multiValued" : false,
"description" : "値がどの程度一意でなければならないかを示す。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none",
"canonicalValues" : [
"none",
"server",
"global"
]
},
{
"name" : "referenceTypes",
"type" : "string",
"multiValued" : false,
"description" : "型が 'reference' の属性でのみ使用する。reference 属性が参照してもよい SCIM resourceType(例: 'User')を指定する。",
"required" : false,
"caseExact" : true,
"mutability" : "readOnly",
"returned" : "default",
"uniqueness" : "none"
}
]
}
]
}
]
}
]
Figure 10: Representation of Fixed Service Provider Endpoint Schemas
9. Security Considerations
9.1. Protocol
SCIM データは、SCIM プロトコルを用いて交換されることを意図している。データを取り扱う際には、[RFC7644] の第 7 節で示されているセキュリティ上の考慮事項を実装することが重要である。
9.2. Passwords and Other Sensitive Security Data
Passwords およびセキュリティ資格情報に関連する他の属性は極めて機微であり、送信または保存の際には特別な取り扱いを要する。SCIM プロトコルは値の代入および同値性テストの目的で平文パスワードを使用するが、パスワード値は平文の形で保存してはならない(MUST NOT)。
管理者は、資格情報の保管を保護するために業界のベストプラクティスを実施すべきであり、特に [RFC6819] の第 5.1.4.1 節で示される推奨事項に従うべきである(SHOULD)。これらの要件には、以下を含むがこれらに限定されない。
- インジェクション攻撃への対策を提供する(例: すべての入力およびパラメータを検証することにより)。
- 資格情報を平文の形で保存すべきではない。
- 暗号化による保護機構(例: ハッシュ化)を用いて資格情報を保存する。
- 可能な場合には、認証の唯一の形態としてパスワードに依存することを避け、非対称暗号に基づく資格情報の使用を検討する。
9.3. Privacy
SCIM コアスキーマは、機微であり、個人を特定し得る情報(PII)とみなされ得る属性を定義している。これらのプライバシー上の考慮事項は、この仕様で定義されるスキーマに加え、拡張についても考慮されるべきである。
本仕様の目的において、PII は、人(例: "User")を特定するための一意なキーとして使用され得る任意の属性として定義される。他の情報が組み合わされて個人を特定し得ることから、SCIM におけるすべての属性は「機微な」個人情報であるとみなされる。個人情報(例: PII)の取り扱いに特別な考慮事項があるかどうかを確認するため、地域の法域(jurisdiction)を参照すること。
情報は必要に応じて共有されるべきである。SCIM client は、service provider が必要と考えられる範囲に情報を制限すべきであり、SCIM service provider は、必要とする情報のみを受け入れるべきである。Clients および service providers は、個人情報が技術的な境界(例: プロトコルおよびアプリケーション)、管理上の境界(例: 組織、企業)、および法域の境界を越えて伝達されていることを考慮すべきである。特に、情報セキュリティとプライバシーを考慮しなければならない。
これらの属性の取り扱いに関するセキュリティのサービスレベル合意は本書の範囲外であるが、実装者および導入組織は慎重に検討すべきである。
SCIM 情報の取り扱いに関する、よりプロトコル固有の考慮事項については、[RFC7644] の Privacy Considerations 節を参照されたい。
SCIM は "id"、"externalId"、および SCIM リソース URIs のような属性を定義しており、これらは新たな PII を生成させる。この情報は、SCIM プロトコルがリソースを識別し所在を特定する方法にとって重要である。可能な場合、service providers は以下の是正策を講じることが推奨される。
- 可能な場合、識別子を特定のテナントおよび/または client に割り当て、ひも付ける。複数のテナントが同一リソースを参照できる場合、それらは別々の識別子(id または externalId)を介して参照すべきである。これにより、同一の情報に紐付いた別ドメインが識別子の相関付けを行えないようにする。
- "externalId" の場合、複数の値がサポートされるのであれば、アクセス制御を用いて、"externalId" 値を割り当てた client ドメインへのアクセスに制限する。
- データへのアクセスが、「知る必要がある」権限を持つ authorized parties に適切に限定されていることを確保する。
- 永続化される場合、バックアップデータにアクセスできる管理者や当事者を含め、unauthorized parties によるアクセスを制限するための適切な保護機構が整備されていることを確保する。
10. IANA Considerations
10.1. Registration of SCIM URN Sub-namespace and SCIM Registry
IANA は、「IETF URN Sub-namespace for Registered Protocol Parameter Identifiers」レジストリにエントリを追加し、[RFC3553] に従って Registered Parameter Identifier のためのサブネームスペースとして "urn:ietf:params:scim" を作成した。
このサブネームスペースを管理するため、IANA は「System for Cross-domain Identity Management (SCIM) Schema URIs」レジストリを作成した。これは "urn:ietf:params:scim" ネームスペース内のエントリを管理するために用いられる。レジストリの説明は次のとおりである。
- レジストリ名: SCIM
- 仕様: 本書(RFC 7643)
- リポジトリ: 第 10.2 節を参照
- 索引値: 第 10.2 節を参照
10.2. URN Sub-namespace for SCIM
SCIM スキーマおよび SCIM メッセージは、使用中のスキーマやその他の関連する文脈を識別するために URIs を利用する。本節は、SCIM の仕様および将来の拡張で使用するための IETF URN サブネームスペースを作成し、登録する。
10.2.1. Specification Template
- Namespace ID:
- Namespace ID "scim" が割り当てられた。
- Registration Information:
- Version: 1
- Date: 2015-06-22
- Declared registrant of the namespace:
- Registering organization
- The Internet Engineering Task Force
- Designated contact
- 指名された expert が SCIM public mailing list "scim@ietf.org" を監視する。
- Registering organization
- Declaration of Syntactic Structure:
- Namespace ID "scim" を使用するすべての URNs の Namespace Specific String (NSS) は、次の構造を持つものとする。
urn:ietf:params:scim:{type}:{name}{:other}
各キーワードの意味は以下のとおりである。
- type
- エンティティ種別。"schemas" または "api" のいずれかである。
- name
- URN 構文要件([RFC2141] 参照)に適合する、必須の US-ASCII 文字列であり、SCIM 内で使用されるスキーマの主要ネームスペースを定義する(例: "core"。これは SCIM 仕様のために予約される)。
- 値は業界名または組織名であってもよい(MAY)。
- other
- URN 構文要件([RFC2141] 参照)に適合する任意の US-ASCII 文字列であり、スキーマを一意に識別するために必要に応じてサブネームスペースを定義する(サブネームスペースは、必要に応じてコロン区切りのネームスペースにより、さらに分割され得る(MAY))。
- Relevant Ancillary Documentation:
- なし
- Identifier Uniqueness Considerations:
- 指名された contact は、一意性のレビューおよび一意性の担保に責任を負う。
- Identifier Persistence Considerations:
- いったん name が割り当てられたら、それを別目的のために再割り当てしてはならない(MUST NOT)。
- サブネームスペース内の値の割り当てに関して提供される規則は、値の意味が変化し得ないように構築されなければならない(MUST)。
- 本登録機構は、時間の経過とともに意味が変化し得る値へ命名する用途には適さない。
- SCIM 仕様が更新され、SCIM プロトコルのバージョンが調整されるのに合わせて、重要な変更が加えられた場合には新しい登録が行われる。例えば、
- "urn:ietf:params:scim:schemas:core:1.0(外部で定義され、以前に登録されていない)"
- "urn:ietf:params:scim:schemas:core:2.0"
- のようにである。
- Process of Identifier Assignment:
- ネームスペース種別 "schema"(例: "urn:ietf:params:scim:schemas")を持つ識別子は、第 10.3 節に文書化されているとおり、SCIM public mailing list "scim@ietf.org" を通じて指名された contact のレビューを経た後に割り当てられる。
- 種別 "api"(例: "urn:ietf:params:scim:api")および "param"(例: "urn:ietf:params:scim:param")のネームスペースは、IETF が承認した SCIM 仕様のために予約される。
- Process of Identifier Resolution:
- 本ネームスペースは現時点では Resolution Discovery System (RDS) に掲載されていないが、本ネームスペースのいかなる点も、将来に適切な解決方法(resolution methods)を定義すること、または RDS に掲載することを妨げるものではない。
- Rules for Lexical Equivalence:
- 特別な考慮事項はない。[RFC2141] に規定される lexical equivalence の規則が適用される。
- Conformance with URN Syntax:
- 特別な考慮事項はない。
- Validation Mechanism:
- 規定なし。
- Scope:
- グローバル。
10.3. Registering SCIM Schemas
本節は、「System for Cross-domain Identity Management (SCIM) Schema URIs」レジストリ(第 10.1 節参照)において、新しい SCIM スキーマを IANA に登録する手順を定義する。スキーマ URI は、SCIM リソースで使用される拡張を区別する目的で、"schemas" 属性(第 3 節)における値として使用される。
10.3.1. Registration Procedure
IETF は、登録前に SCIM スキーマ提案を公開議論するために利用できるメーリングリスト scim@ietf.org を作成している。メーリングリストの利用は強く推奨される。IESG は、scim@ietf.org メーリングリストを監視し、登録内容をレビューする designated expert [RFC5226] を任命している。
新しい "core" スキーマ(例: ネームスペース "urn:ietf:params:scim:schemas:core" 内)および "API" スキーマ(例: ネームスペース "urn:ietf:params:scim:api" 内)の登録は、designated expert によるレビューを受け、RFC として公開されなければならない(MUST)。既存の properties を変更する新しい value data types の登録には RFC が必須である(REQUIRED)。既存の RFC において以前に文書化された SCIM スキーマを変更する SCIM スキーマ URIs の登録にも RFC が必須である(REQUIRED)。上記のネームスペースの外側で、ただし "urn:ietf:params:scim" の中にある URNs は、designated expert による簡易レビュー(例: スパム確認)のみで、先着順(first-come-first-served basis)で登録してもよい(MAY)。
登録手続きは、以下の節で定義される完成済みの登録テンプレートが scim@ietf.org および iana@iana.org に送付されたときに開始される。2 週間以内に、designated expert は IANA と提出者に対し、登録が承認、軽微な変更付きで承認、または理由を付して却下のいずれであるかを伝えることが期待される。理由を付して却下された場合、その理由に挙げられた懸念が解消されるなら、再提出できる。
designated expert による決定は、IESG Applications Area Director に、次いで IESG に上訴できる。これらは IESG 決定に対する通常の上訴手続きに従う。
登録手続きが成功裏に完了すると、IANA は SCIM スキーマレジストリ内の対応する記録を作成または変更する。完成した登録テンプレートは破棄される。
1 つ以上の新しいスキーマ URI を規定する RFC は、完成済みの登録テンプレートを含めなければならない(MUST)。これらは追加情報で拡張されてもよい(MAY)。これらの完成済みテンプレートは IANA Considerations 節ではなく文書本文に入れることを意図している。RFC は、定義された任意の属性を含めるべきである(SHOULD)。
10.3.2. Schema Registration Template
SCIM スキーマ URI は、以下のテンプレートを完成させることで定義される。
- Schema URI: SCIM スキーマ拡張のための一意な URI。
- Schema Name: スキーマ拡張の説明的な名前(例: "Generic Device")。
- Intended or Associated Resource Type: リソース種別を定義する値(例: "Device")。
- Purpose: 拡張の目的および/または意図された用途の説明。
- Single-value Attributes: 定義される単一値属性(複合属性を含む)の一覧と説明。
- Multi-valued Attributes: 定義される複数値属性(複合属性を含む)の一覧と説明。
10.4. Initial SCIM Schema Registry
IANA は、「System for Cross-domain Identity Management (SCIM) Schema URIs」レジストリに、適切な参照文書へのポインタとともに、SCIM スキーマ URIs に関する次のレジストリを投入した。注: 以下に列挙するスキーマ URIs は、読みやすさのために 2 行に分割してある。
| Schema URI | Name | Reference |
|---|---|---|
| urn:ietf:params:scim:schemas:core:2.0:User | User Resource | See Section 4.1 |
| urn:ietf:params:scim:schemas:extension:enterprise:2.0:User | Enterprise User Extension | See Section 4.3 |
| urn:ietf:params:scim:schemas:core:2.0:Group | Group Resource | See Section 4.2 |
データリソース向け SCIM Schema URIs
| Schema URI | Name | Reference |
|---|---|---|
| urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig | Service Provider Configuration Schema | See Section 5 |
| urn:ietf:params:scim:schemas:core:2.0:ResourceType | Resource Type Configuration | See Section 6 |
| urn:ietf:params:scim:schemas:core:2.0:Schema | Schema Definitions Schema | See Section 7 |
SCIM サーバー関連の Schema URIs
11. References
11.1. Normative References
- [RFC2119] Bradner, S., "RFC において要求レベルを示すために用いるキーワード", BCP 14, RFC 2119, DOI 10.17487/RFC2119, 1997 年 3 月, http://www.rfc-editor.org/info/rfc2119.
- [RFC2141] Moats, R., "URN 構文", RFC 2141, DOI 10.17487/RFC2141, 1997 年 5 月, http://www.rfc-editor.org/info/rfc2141.
- [RFC3553] Mealling, M., Masinter, L., Hardie, T., and G. Klyne, "登録済みプロトコルパラメータのための IETF URN サブネームスペース", BCP 73, RFC 3553, DOI 10.17487/RFC3553, 2003 年 6 月, http://www.rfc-editor.org/info/rfc3553.
- [RFC3629] Yergeau, F., "UTF-8(ISO 10646 の変換形式)", STD 63, RFC 3629, DOI 10.17487/RFC3629, 2003 年 11 月, http://www.rfc-editor.org/info/rfc3629.
- [RFC3966] Schulzrinne, H., "電話番号のための tel URI", RFC 3966, DOI 10.17487/RFC3966, 2004 年 12 月, http://www.rfc-editor.org/info/rfc3966.
- [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, DOI 10.17487/RFC3986, 2005 年 1 月, http://www.rfc-editor.org/info/rfc3986.
- [RFC4647] Phillips, A. and M. Davis, "言語タグのマッチング", BCP 47, RFC 4647, DOI 10.17487/RFC4647, 2006 年 9 月, http://www.rfc-editor.org/info/rfc4647.
- [RFC4648] Josefsson, S., "Base16、Base32、Base64 データエンコーディング", RFC 4648, DOI 10.17487/RFC4648, 2006 年 10 月, http://www.rfc-editor.org/info/rfc4648.
- [RFC5234] Crocker, D., Ed., and P. Overell, "構文仕様のための拡張 BNF(ABNF)", STD 68, RFC 5234, DOI 10.17487/ RFC5234, 2008 年 1 月, http://www.rfc-editor.org/info/rfc5234.
- [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 公開鍵基盤 証明書および証明書失効リスト(CRL)プロファイル", RFC 5280, DOI 10.17487/RFC5280, 2008 年 5 月, http://www.rfc-editor.org/info/rfc5280.
- [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, DOI 10.17487/RFC5321, 2008 年 10 月, http://www.rfc-editor.org/info/rfc5321.
- [RFC5646] Phillips, A., Ed., and M. Davis, Ed., "言語識別用タグ", BCP 47, RFC 5646, DOI 10.17487/RFC5646, 2009 年 9 月, http://www.rfc-editor.org/info/rfc5646.
- [RFC6557] Lear, E. and P. Eggert, "タイムゾーンデータベースを維持するための手続き", BCP 175, RFC 6557, DOI 10.17487/RFC6557, 2012 年 2 月, http://www.rfc-editor.org/info/rfc6557.
- [RFC7159] Bray, T., Ed., "JavaScript Object Notation (JSON) データ交換形式", RFC 7159, DOI 10.17487/RFC7159, 2014 年 3 月, http://www.rfc-editor.org/info/rfc7159.
- [RFC7231] Fielding, R., Ed., and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", RFC 7231, DOI 10.17487/RFC7231, 2014 年 6 月, http://www.rfc-editor.org/info/rfc7231.
- [RFC7232] Fielding, R., Ed., and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests", RFC 7232, DOI 10.17487/RFC7232, 2014 年 6 月, http://www.rfc-editor.org/info/rfc7232.
- [RFC7644] Hunt, P., Ed., Grizzle, K., Ansari, M., Wahlstroem, E., and C. Mortimore, "System for Cross-domain Identity Management: Protocol", RFC 7644, DOI 10.17487/RFC7644, 2015 年 9 月, http://www.rfc-editor.org/info/rfc7644.
11.2. Informative References
- [ISO3166] International Organization for Standardization, "国名およびその下位区分の名称表現のためのコード - 第 1 部: 国コード", ISO 3166-1:2013, 2013 年 11 月, http://www.iso.org.
- [Olson-TZ] Internet Assigned Numbers Authority, "IANA Time Zone Database", https://www.iana.org/time-zones.
- [PortableContacts] Smarr, J., "Portable Contacts 1.0 Draft C - Schema Only", 2008 年 8 月, http://www.portablecontacts.net/draft-spec.html.
- [RFC2277] Alvestrand, H., "文字集合および言語に関する IETF ポリシー", BCP 18, RFC 2277, DOI 10.17487/RFC2277, 1998 年 1 月, http://www.rfc-editor.org/info/rfc2277.
- [RFC4512] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Directory Information Models", RFC 4512, DOI 10.17487/RFC4512, 2006 年 6 月, http://www.rfc-editor.org/info/rfc4512.
- [RFC5226] Narten, T. and H. Alvestrand, "RFC における IANA Considerations 節の書き方に関するガイドライン", BCP 26, RFC 5226, DOI 10.17487/RFC5226, 2008 年 5 月, http://www.rfc-editor.org/info/rfc5226.
- [RFC6350] Perreault, S., "vCard Format Specification", RFC 6350, DOI 10.17487/RFC6350, 2011 年 8 月, http://www.rfc-editor.org/info/rfc6350.
- [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, 2012 年 10 月, http://www.rfc-editor.org/info/rfc6749.
- [RFC6819] Lodderstedt, T., Ed., McGloin, M., and P. Hunt, "OAuth 2.0 Threat model and Security Considerations", RFC 6819, DOI 10.17487/RFC6819, 2013 年 1 月, http://www.rfc-editor.org/info/rfc6819.
- [XML-Schema] Peterson, D., Gao, S., Malhotra, A., Sperberg-McQueen, C., and H. Thompson, "XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes", 2012 年 4 月, http://www.w3.org/TR/xmlschema11-2/.
Acknowledgements
編集者は、本書の draft 版における編集者たちの貢献と作業に謝意を表する。
- Chuck Mortimore, Salesforce
- Patrick Harding, Ping
- Paul Madsen, Ping
- Trey Drake, UnboundID
SCIM Community は、本仕様の調査、構想、起草、編集、および支援において行われた作業について、次の人々に謝意を表する。
- Morteza Ansari (morteza.ansari@cisco.com)
- Sidharth Choudhury (schoudhury@salesforce.com)
- Samuel Erdtman (samuel@erdtman.se)
- Kelly Grizzle (kelly.grizzle@sailpoint.com)
- Chris Phillips (cjphillips@gmail.com)
- Erik Wahlstroem (erik.wahlstrom@nexusgroup.com)
- Phil Hunt (phil.hunt@yahoo.com)
Portable Contacts Specification [PortableContacts] に関する Joseph Smarr の優れた仕事が、SCIM スキーマ構造および本文の基礎を提供したことに、特別な謝意を表する。
Authors' Addresses
Phil Hunt (editor)\ Oracle Corporation\ Email: phil.hunt@yahoo.com
Kelly Grizzle\ SailPoint\ Email: kelly.grizzle@sailpoint.com
Erik Wahlstroem\ Nexus Technology\ Email: erik.wahlstrom@nexusgroup.com
Chuck Mortimore\ Salesforce.com\ Email: cmortimore@salesforce.com