第 4 章 クラウドサービス事業者向け実装ガイド
4.2. SCIM サーバーの実装
4.2.1. User エンドポイントの実装
4.2.1.1. ユーザーの作成 (POST)
4.2.1.1.1. リクエストの受け取り
ユーザーの作成は、HTTP POST メソッドでユーザーデータを受け取ることで実行される。
SCIMクライアントから送られてくるリクエストの例を以下に示す。
POST /Users HTTP/1.1 Host: scim.svc.example.net Accept: application/scim+json Content-Type: application/scim+json
Authorization: Basic Yzc2NTQzMjE6Z3lOOUpSN3pUWDRteXd0NHFiMW5ZdUhpTTA3WFI0Q1U=
Content-Length: ...
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User", "urn:oidfj:params:scim:schemas:extention:enterprisejp:2.0:User"
],
"userName": "[email protected]", "externalId": "e1234567",
...(ユーザーデータ。以下省略)...
}
リクエストで受け取ったユーザーデータは、[4.2.3節] に示す手順で検証を行なう。
4.2.1.1.2. クラウドサービスのユーザーとして登録
受け取ったユーザーデータの検証ができた場合は、ユーザーデータをクラウドサービスのユー ザーとして登録する。
ユーザーデータとして渡されたデータの中に、クラウドサービスで使用しない属性が含まれて いた場合、その情報は保管することなく破棄しなければならない。
ユーザーデータとして渡されたデータが [3.3.1 節] に示した属性を含んでいなかった場合は、
クラウドサービスが適切な属性値(空でも良い)を割り当てる。
ユーザーデータに含まれる属性「IDトークンのIssuer」(idTokenClaims.issuer)、「IDトーク ンの Subject」(idTokenClaims.subject) と「企業 OP でのログイン ID」(externalUserName) については、認証処理で使用する属性となるため、クラウドサービスのユーザーの属性として保 管する必要がある。
SCIMサーバーは、クラウドサービスのユーザー属性として、次の4つの管理用属性を付与し て保管する必要がある。
1. ID
ユーザーリソースを SCIM サーバー(クラウドサービス)内で一意に識別するための ユーザーリソース識別子を生成して設定する。この値は、クラウドサービスを使用する 全利用企業の全ユーザーの中で一意である必要がある。この値はユーザーリソースの
"id" 属性として用いる。
2. バージョン
SCIMサーバーで、HTTP ETagを用いた Resource Versioning に対応する場合に、バー ジョンをあらわす値を生成して設定する。この値はユーザーリソースの "meta.version"
属性として用いる。この値はオプションである。
3. 作成日
こ の ユ ー ザー リ ソ ースを 作 成 し た日 時 を 設定す る 。 こ の値 は ユ ーザー リ ソ ー スの
"meta.created" 属性として用いる。
4. 更新日
作成日と同じ値を設定する。この値はユーザーリソースの "meta.lastModified" 属性と して用いる。
付与される属性値の例を以下に示す。
No 属性 値
1 ID a2e492da-e2ed-4d90-a186-6fc01b56b8d9 2 バージョン 4124bc0a9335c27f086f24ba207a4912 3 作成日 2015-04-01T01:23:45.678Z
4 更新日 2015-04-01T01:23:45.678Z
4.2.1.1.3. 登録結果の応答
ユーザーの登録が成功した場合は、HTTPステータスコード201 (Created) とともに、登録さ れたユーザーリソースを応答する。
HTTP/1.1 201 Created
Content-Type: application/scim+json
Location: https://scim.svc.example.net/v2/User/a2e492da-e2ed-4d90-a186-6fc01b56b8d9 ETag: W/"4124bc0a9335c27f086f24ba207a4912"
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User", "urn:oidfj:params:scim:schemas:extention:enterprisejp:2.0:User"
],
"id": "a2e492da-e2ed-4d90-a186-6fc01b56b8d9", "userName": "[email protected]", "externalId": "e1234567",
"meta": {
"resourceType": "User",
"created": "2015-04-01T01:23:45.678Z", "lastModified": "2015-04-01T01:23:45.678Z",
"location": "https://scim.svc.example.net/v2/User/a2e492da-e2ed-4d90-a186-6fc01b56b8d9",
"version": "W/\"4124bc0a9335c27f086f24ba207a4912\""
},
...(ユーザーデータ。以下省略)...
}
クラウドサービス内の処理が理由でユーザーの登録中にエラーが発生した場合は、HTTP ス テータスコード 500 (Internal Server Error) を応答する。このとき、利用企業の ID 管理サー バーにエラーの内容を伝達するため、detail にエラーの詳細を記述して応答することが望ましい。
HTTP/1.1 500 Internal Server Error Content-Type: application/scim+json
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"], "detail": "SCIMサーバーがエラーの詳細を記入する",
"status": "500"
}
SCIMを用いてユーザーを作成する場合のSCIMリクエスト・レスポンスの例を [付録 B.2] に 掲載する。