コンテンツへ移動

SCIM API リファレンス

XID にユーザーとグループをプロビジョニングする SCIM 2.0 エンドポイント契約。

Markdown で表示

ベース URL

XID は /scim/v2/organizations/{organization_id} 配下で組織スコープの SCIM 2.0 API を公開します。ユーザーとグループのリソースはパス内の組織 ID で指定します。

ベース URL を使って ID プロバイダーを設定 https://xid.dev/scim/v2/organizations/{organization_id} ディレクトリの作成またはローテーション時に一度だけ表示されるディレクトリトークン。

curl https://xid.dev/scim/v2/organizations/{organization_id}/Users \
  -H 'Authorization: Bearer scim_xxx' \
  -H 'Content-Type: application/scim+json'

認証

SCIM 呼び出しは管理 API で作成されたディレクトリ Bearer トークンを使用します。XID はトークンのハッシュだけを保存し、平文トークンは作成またはローテーション時に一度だけ返します。

ヘッダー メモ
Authorization Bearer scim_xxx 組織スコープのユーザーエンドポイントとグループエンドポイントに必要です。
Content-Type application/scim+json POST、PUT、PATCH リクエストで必須です。
Accept application/scim+json すべての SCIM クライアントに推奨されます。

エンドポイント

エンドポイント 方式 使用
/scim/v2/ServiceProviderConfig GET SCIM クライアント検出用の ServiceProviderConfig レスポンス。
/scim/v2/Schemas GET ユーザーとグループのスキーマメタデータ。
/scim/v2/ResourceTypes GET サポートされる SCIM リソース種別。
/scim/v2/organizations/{organization_id}/Users GET, POST ディレクトリユーザーを作成、一覧表示します。
/scim/v2/organizations/{organization_id}/Users/{id} GET, PUT, PATCH, DELETE ディレクトリユーザー 1 件を読み取り、置換、パッチ、またはプロビジョニング解除します。
/scim/v2/organizations/{organization_id}/Groups GET, POST ディレクトリグループを作成、一覧表示します。
/scim/v2/organizations/{organization_id}/Groups/{id} GET, PUT, PATCH, DELETE ディレクトリグループ 1 件を読み取り、置換、パッチ、または削除します。

ユーザーリソース

ユーザーリソースは外部識別子として userName を使用します。メール値、プロフィール名フィールド、アクティブ状態、エンタープライズ拡張フィールドは SCIM 生プロファイルに保持されます。

SCIM フィールド XID の動作
id 安定した XID ディレクトリユーザー ID。
userName 必須です。ディレクトリ内で一意である必要があります。
active false はユーザーのプロビジョニングを解除し、アクティブなセッションを取り消します。
emails プライマリメールは照合とアカウントリンクに使用されます。
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User 部署などのエンタープライズ属性として保存および返されます。
{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
  "userName": "alice@example.com",
  "active": true,
  "name": { "givenName": "Alice", "familyName": "Lee" },
  "emails": [{ "value": "alice@example.com", "primary": true }]
}

グループリソース

グループリソースは一意のディレクトリグループ名として displayName を使用します。メンバーは SCIM ユーザー ID を参照し、冪等に同期されます。

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
  "displayName": "Engineering",
  "members": [
    { "value": "dir_user_123", "display": "alice@example.com" }
  ]
}

フィルタリング、ソート、ページネーション

XID は andornot と比較演算子(eqnecoswewgtgeltlepr)を含む SCIM フィルター文法をサポートします。未サポート式は invalidFilter を返します。一覧応答は startIndexcounttotalResults を使う SCIM 1 始まりのページネーションと、任意の sortBysortOrder を使用します。

クエリ サポート
filter=userName eq "alice@example.com" userName でユーザーを 1 件検索します。
filter=displayName eq "Engineering" displayName でグループを 1 件検索します。
filter=userName sw "alice" and active eq true 論理演算子と比較演算子を組み合わせます。
sortBy=userName&sortOrder=ascending ユーザーまたはグループ一覧の結果を並べ替えます。
startIndex=1&count=100 先頭の結果から最大 100 件のリソースを返します。
attributes=userName,emails.value schemas、id、および要求された SCIM 属性のみを返します。
excludedAttributes=emails,meta 除外された SCIM 属性を含まないデフォルトのリソースを返します。

一括操作

POST /scim/v2/organizations/{organization_id}/Bulk は最大 100 操作、1 MiB ペイロード上限の BulkRequest を受け付けます。一部が失敗しても BulkResponse で操作ごとの HTTP ステータスを返します。

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:BulkRequest"],
  "Operations": [
    {
      "method": "POST",
      "path": "/Users",
      "bulkId": "user1",
      "data": { "userName": "alice@example.com", "active": true }
    }
  ]
}

ETag and If-Match

リソース GET 応答には meta.version 由来の ETag: W/"<meta.version>" が含まれます。PUTPATCH には現在バージョンと一致する If-Match ヘッダーが必要で、欠落時は 428、不一致時は 412 を返します。

PATCH 操作

PATCH リクエストは urn:ietf:params:scim:api:messages:2.0:PatchOp を使用します。XID は書き込み可能なプロフィール項目とグループメンバーシップに対して addreplaceremove をサポートします。

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    { "op": "replace", "path": "active", "value": false }
  ]
}

エラーレスポンス

SCIM エラーは application/scim+json を返し、SCIM Error スキーマ、HTTP ステータス、詳細、任意の scimType を含みます。

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
  "status": "409",
  "scimType": "uniqueness",
  "detail": "userName already exists"
}

ServiceProviderConfig の機能

  • ServiceProviderConfigsort.supported=truebulk.supported=trueetag.supported=true を公開します。
  • XID は外部 IdP 向けに入站 SCIM サービスプロバイダーエンドポイントを公開します。下流 SaaS SCIM push クライアントはローカルの fake-SaaS 証拠を持っていますが、本番サポートには引き続き実際の SaaS 管理者 L4 が必要です。

プロビジョニング解除の動作

  • ディレクトリトークンのローテーションでは、以前のトークンが短い猶予期間だけ有効なままになります。
  • active=false および DELETE /Users/{id} ユーザーのプロビジョニングを解除し、アクティブなセッションを取り消します。
  • グループメンバーシップ更新は冪等です。不明なメンバーは、ユーザーが ID プロバイダーから到着した後に解決できます。
ナビゲーション

入力して検索...

矢印キーで移動Enter キーで選択Escape キーで閉じる