Drupal SCIM サーバー API エンドポイント
概要
このドキュメントでは、SCIMによるユーザープロビジョニングとデプロビジョニングに必要なSCIMエンドポイントについて説明します。SCIMは、ユーザーのCRUD操作を自動化できる業界標準プロトコルです。 モジュールすると、DrupalサイトはSCIMサーバーとして機能できるようになります。つまり、アイデンティティプロバイダー(つまりSCIMクライアント)で行われた変更はすべてDrupalサイトと同期されます。
SCIMの概要
- プロトコルバージョン: SCIM 2.0
- ベースパス: ベースURL/scim
- サポートされているリソース: ユーザー、グループ
- データ形式: JSONの
認証とヘッダー
- 承認: ベアラートークン
- コンテンツタイプ: アプリケーション/ json
- 受け入れる: アプリケーション/ json
サポートされているAPI操作
以下のAPI操作がサポートされています
ユーザーエンドポイント
グループエンドポイント
ユーザーエンドポイント
1. ユーザーを非アクティブ化する(PATCH)
- エラー:
- リクエストの例:
- 応答例 - 204 No Content。
Drupalでユーザーを無効化または削除するには、モジュールで必要な設定を有効にする必要があります。これらのオプションは、モジュールの設定ページで利用できます。
PATCH /Users/{ユーザーID}| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| リソースが見つかりません例外 | 指定されたユーザーは存在しません。 | 404 |
PATCH /Users/{user-id} HTTP/1.1 コンテンツタイプ: application/json 認証: Bearer { "操作": [ { "op": "置換", "パス": "アクティブ", "値": false } ] }
{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "id": "4", "userName": "ユーザー名", "active": , "emails": [{ "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" }], "meta": { "resourceType": "User" } }
2. IDでユーザーを検索する
- エラー:
- リクエストの例:
- 応答例:
- 404お探しのページが見つかりませんでした。
- 200 見つかりました。
既存のユーザーを取得するには、GETリクエストを送信します。 /ユーザー ユーザーIDを使用します。
GET /Users/{ユーザーID}| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| リソースが見つかりません例外 | 指定されたユーザーは存在しません。 | 404 |
GET /Users/{user-id} HTTP/1.1 認証: ベアラー { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "ユーザーが見つかりません", "status": 404 }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "4", "userName": "ユーザー名", "active": 1, "emails": [ { "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" } ], "meta": { "resourceType": "User" } }
3. ユーザーリスト
- エラー:
- クエリパラメータ:
- リクエストの例:
- 応答例:
- リクエストの例:
- 応答例:
- UserName でユーザーが見つからない場合、ユーザーが見つからなかったことを示す空のスキーマを送信します。
- リクエストの例:
- 応答例:
- ユーザーが電子メールを提示した場合。
- 電子メールでユーザーが見つからない場合、モジュールはユーザーが見つからなかったことを示す空のスキーマを送信します。
このエンドポイントを使用すると、既存のユーザーリストから特定のユーザーをフィルタリングして取得できます。GETリクエストを送信することで、 /ユーザー エンドポイントにフィルターパラメータを追加することで、ユーザー名やメールアドレスなどの属性に基づいて結果を絞り込むことができます。エンドポイントはフィルター検索をサポートしていますが、1回のリクエストで返されるユーザーレコードは最大50件です。
| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| リソースが見つかりません例外 | 指定されたユーザーは存在しません。 | 404 |
GET /ユーザー
3.1 StartIndexとcount
クエリパラメータとして startIndex と count を使用できます。startIndex は開始ID、count はクエリが返すことができる結果の最大数です。
GET /Users?startIndex=1&count=50 承認: Bearer
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 2, "startIndex": 1, "itemsPerPage": 2, "Resources": [ { "id": "1", "externalId": "1", "meta": { "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "example1@example.com", "displayName": "example1@example.com", "emails": { "value": "example1@example.com", "type": "work", "primary": true }, "active": true, "name": { "familyName": "", "givenName": "" }, "groups": [ "authenticated,administrator" ], "department": "" }, { "id": "13", "externalId": "13", "meta": { "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "userName": "example2", "displayName": "example2", "emails": { "value": "example2@example.com", "type": "work", "primary": true }, "active": true, "name": { "familyName": "", "givenName": "" }, "groups": [ "authenticated,administrator" ], "department": "" }, ] }
3.2 ユーザー名でユーザーを検索する
GET /Users?filter=ユーザー名 eq "admin"
ユーザーが見つかりません - 200 Ok。
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "startIndex": 1, "itemsPerPage": 0, "Resources": [] }
ユーザーが見つかりました - 200 OK。
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 10, "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "ユーザーのuid", "username": "admin", "emails": [ { "value": "email@gmail.com", "primary": true, "type": "work" } ] } ] }
3.3 メールアドレスでユーザーを検索する
GET /Users?filter=emails[type eq "work"].value eq "email@gmail.com" 承認: Bearer
ユーザーが見つかりました - 200 OK。
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "startIndex": 1, "itemsPerPage": 10, "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "ユーザーのuid", "username": "ユーザー名", "emails": [ { "value": "email@gmail.com", "primary": true, "type": "work" } ] } ] }
ユーザーが見つかりません - 200 Ok。
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "startIndex": 1, "itemsPerPage": 0, "Resources": [] }
4. ユーザーアップデート(PATCH)
GETリクエストでユーザーが見つかった場合、PATCHまたはPUTリクエストでユーザーを更新します。見つからない場合は、POSTリクエストでユーザーを作成します。ユーザーの特定のフィールドを更新するには、 PATCH の /ユーザー エンドポイント。リクエスト本文には、変更する属性とその更新後の値を含めます。
PATCH /Users/{ユーザーID}- エラー:
- リクエストの例:
- 応答例: 200 OK。
| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| リソースが見つかりません例外 | 指定されたユーザーは存在しません。 | 404 |
PATCH/Users/{{user-id}} HTTP/1.1 コンテンツタイプ: application/json 認証: Bearer { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ { "op": "Replace", "path": "emails[type eq \"work\"].value", "value": "email@gmail.com" }, { "op": "Replace", "path": "name.familyName", "value": "familyname" } ] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "ユーザーのuid", "userName": "ユーザー名", "active": 1, "emails": [ { "primary": true, "value": "email@gmail.com", "type": "work", "display": "email@gmail.com" } ], "meta": { "resourceType": "User" } }
5. ユーザーの更新(PUT)
PUTリクエストを使用してユーザーを更新できます。 /ユーザー エンドポイント。このリクエストはユーザーオブジェクト全体を置き換えるため、必要なすべてのユーザー属性を本文に指定する必要があります。
PUT /Users/{{ユーザーID}}- エラー:
- リクエストの例:
- 応答例: 200 ok。
| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| リソースが見つかりません例外 | 指定されたユーザーは存在しません。 | 404 |
PUT/Users/{{user-id}} HTTP/1.1 コンテンツタイプ: application/json 認証: Bearer { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "97", "userName": "exmple", "active": 1, "emails": [ { "primary": true, "value": "exmple@example.com", "type": "work", "display": "exmple@example.com" } ], "meta": { "resourceType": "User" }, "name": { "givenName": "givenName", "familyName": "familyName", "middleName": "sdf", "honorificPrefix": "sdf" }, "displayName": "givenName familyName", "nickName": "df", "addresses": [ { "primary": true, "locality": "fdd" } ], "locale": "en-US", "externalId": "9rqltOOLI95d7", 「グループ」: [] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "id": "97", "userName": "example", "active": 1, "emails": [ { "primary": true, "value": "example@example.com", "type": "work", "display": "example@example.com" } ], "meta": { "resourceType": "User" } }
6. ユーザーの作成(POST)
POSTリクエストを使用する /ユーザー エンドポイントを使用して新しいユーザーを作成します。リクエスト本文に必要なフィールドをすべて含めてください。リクエストが成功すると、201 Created とユーザーの詳細が返されます。
POST /ユーザー
- エラー:
- リクエストの例:
- 応答例: 201 が作成されました。
| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| 競合例外 | ユーザーは既に存在します。 | 409 |
POST /Users HTTP/1.1 Accept: application/json Content-Type: application/json Authorization: Bearer { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"], "externalId": "abc", "userName": "example", "active": true, "emails": [{ "primary": true, "type": "work", "value": "example@example.com" }], "meta": { "resourceType": "User" }, "name": { "formatted": "名 姓", "familyName": "姓", "givenName": "名" } }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ], "externalId": "abc", "userName": "example", "active": true, "emails": [ { "primary": true, "type": "work", "value": "example@example.com" } ], "meta": { "resourceType": "User" }, "name": { "formatted": "名 姓", "familyName": "姓", "givenName": "名" }, "id": "98" }
グループエンドポイント
1. グループの一覧
その /グループ エンドポイントは、SCIMサーバー上で利用可能なグループのリストを取得するためのGETリクエストをサポートしています。この操作は、グループIDや表示名などの基本的なグループ情報のみを返します。エンドポイントはレスポンスにグループメンバーシップの詳細を含めないため、メンバーリストは常に空で返されます。
- リクエストの例:
- 応答例 - 200 ok
- サポートされているフィルター:
- リクエストの例:
- 応答例: 200 ok。
GET /Groups HTTP/1.1 認証: ベアラー
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 4, "Resources": [ { "id": "anonymous", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "anonymous" }, { "id": "authenticated", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "authenticated" }, { "id": "administrator", "meta": { "resourceType": "Group" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "管理者" }, { "id": "editor_admin", "meta": { "resourceType": "グループ" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "editor_admin" } ], "startIndex": 1, "itemsPerPage": 4 }
GET /Groups?filter=displayName が "administrator" である
GET /scim/Groups?filter=displayName eq "administrator" HTTP/1.1 認証: Bearer
表示名を持つグループが見つかった場合。
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 0, "Resources": [], "startIndex": 1, "itemsPerPage": 20 }
2. IDでグループを検索する
/グループ/{id} 指定されたグループIDに関連付けられたグループリソースを取得します。レスポンスにはグループのメタデータのみが返されます。メンバーシップの詳細は含まれません。
- リクエストの例:
- 応答例:
GET /Groups/administrator HTTP/1.1 認証: Bearer
見つかりました - 200 OK。
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": "管理者", "meta": { "resourceType": "グループ" }, "displayName": "管理者" }
見つかりません - 404。
{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:Error" ], "detail": "グループ管理者が見つかりません", "status": 404 }
3. グループを作成する
使用 POST 要求する /グループ 新しいグループを作成します。グループ名(displayName)を指定する必要があります。リクエスト本文にメンバーを含めることはできますが、レスポンスでは常に空のメンバーリストが返されます。
- エラー:
- リクエストの例:
- メンバーリストが含まれていないリクエスト。
- メンバーリスト付きのリクエスト。
- レスポンス: 201 作成されました。
| エラー | 状態 | HTTPステータスコード |
|---|---|---|
| 検証例外 | モジュールがアクティブ化されていないか、間違ったライセンスキーが使用されています | 400 |
| 不正な例外 | 認証ヘッダーが無効であるか、存在しません。 | 401 |
| 操作がサポートされていない例外 | グループの変更は許可されていません | 501 |
POST /Groups HTTP/1.1 認証: ベアラー{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"], "externalId": "enternal-id", "displayName": "group2", "meta": { "resourceType": "Group" } }
POST /Groups HTTP/1.1 コンテンツタイプ: application/json 認証: Bearer { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "group1", "members": [ { "value": "3", "display": "admin@gmail.com" }, { "value": "2", "display": "admin2@gmail.com" } ] }
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "externalId": "enternal-id", "displayName": "group2", "meta": { "resourceType": "Group" }, "members": [], "id": "group2" }
4. グループの更新[非メンバー属性]
PATCHリクエストを使用して、表示名などのグループの基本情報を更新できます。 /グループ/{グループID}このリクエストは、指定した属性のみを更新し、グループのメンバーは変更しません。更新が成功すると、204 No Content が返されます。
- リクエストの例:
- 応答例 - 204 No Content。
PATCH /Groups/group1 HTTP/1.1 認証: ベアラー{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [{ "op": "Replace", "path": "displayName", "value": "updated group1" }] }
5. グループの更新 [ メンバー]
その /グループ/{id} エンドポイントは、PATCHリクエストによるメンバーの追加と削除をサポートしています。リクエストボディには、追加するユーザーIDのリストを含める必要があります。このアクションはグループのメンバーの更新のみを行い、成功した場合は204 No Contentを返します。
- リクエストの例:
- グループにメンバーを追加します。
- グループからメンバーを削除します。
- 応答例: 204 No Content。
PATCH /Groups/updated group1 HTTP/1.1 コンテンツタイプ: application/json 認証: Bearer { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [{ "op": "Add", "path": "members", "value": [{ "$ref": null, "value": "97" }] }] }
PATCH /Groups/updated group1 HTTP/1.1 認証: ベアラー{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [{ "op": "Remove", "path": "members", "value": [{ "$ref": null, "value": "97" }] }] }
6. グループを削除
その /グループ/{id} エンドポイントは、 DELETE リクエスト。この操作は、SCIMサーバーからグループを削除します。削除が成功すると、 204 コンテンツなし 応答はグループが削除されたことを示し、応答本文は提供されません。
- リクエストの例:
- 応答例 - 204 No Content。
DELETE /Groups/updated group1 HTTP/1.1 認証: Bearer
設定が成功しなかった場合は、 drupalsupport@xecurify.com。 エラー ウィンドウのスクリーンショットを送信してください。問題の解決とセットアップの手順をお手伝いします。
