18.5. 基本操作およびリソース URI

管理 CLI は、特定のタスクを単純化する追加のコマンドを使用して、管理 REST API エンドポイントに対して CRUD 操作を汎用的に実行できます。

主な使用方法パターンを以下に示します。

$ kcadm.sh create ENDPOINT [ARGUMENTS]
$ kcadm.sh get ENDPOINT [ARGUMENTS]
$ kcadm.sh update ENDPOINT [ARGUMENTS]
$ kcadm.sh delete ENDPOINT [ARGUMENTS]

creategetupdate、および delete コマンドは HTTP 動詞である POSTGETPUTDELETE にそれぞれマップします。ENDPOINT はターゲットリソース URI であり、絶対 (http: または https: で始まる) または相対 (Red Hat Single Sign-On が次の形式で絶対 URL を作成するために使用する) のいずれかに設定できます。

SERVER_URI/admin/realms/REALM/ENDPOINT

たとえば、サーバー http://localhost:8080/auth に対して認証し、レルムが master である場合は、users を ENDPOINT として使用すると http://localhost:8080/auth/admin/realms/master/users のリソース URL となります。

ENDPOINT を clients に設定する場合、有効なリソース URI は http://localhost:8080/auth/admin/realms/master/clients になります。

Red Hat Single Sign-On には、レルムのコンテナーである realms エンドポイントがあります。以下に対して解決します。

SERVER_URI/admin/realms

Red Hat Single Sign-On には serverinfo エンドポイントがあります。このエンドポイントはレルムとは独立しています。

realm-admin 権限を持つユーザーとして認証する場合は、複数のレルムでコマンドを実行する必要がある場合があります。その場合は、 -r オプションを指定して、コマンドを明示的に実行するレルムを CLI に指示します。kcadm.sh config credentials--realm オプションで指定された REALM を使用する代わりに、コマンドは TARGET_REALM を使用します。

SERVER_URI/admin/realms/TARGET_REALM/ENDPOINT

以下に例を示します。

$ kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password admin
$ kcadm.sh create users -s username=testuser -s enabled=true -r demorealm

この例では、master レルムで admin ユーザーとして認証されたセッションを開始します。その後、リソース URL http://localhost:8080/auth/admin/realms/demorealm/users に対して POST 呼び出しを実行します。

create および update コマンドは、JSON ボディーをサーバーに送信します。-f FILENAME を使用して、ファイルから既製のドキュメントを読み取ることができます。-f -- オプションを使用できる場合、Red Hat Single Sign-On は標準入力からメッセージ本文を読み取ります。ユーザーの作成 の例にあるように、個別の属性とその値を指定できます。Red Hat Single Sign-On は、属性を JSON 本文に設定し、サーバーに送信します。

Red Hat Single Sign-On では、update コマンドを使用してリソースを更新する方法はいくつかあります。まず、リソースの現在の状態を決定してファイルに保存し、そのファイルを編集して更新のためにサーバーに送信できます。

以下に例を示します。

$ kcadm.sh get realms/demorealm > demorealm.json
$ vi demorealm.json
$ kcadm.sh update realms/demorealm -f demorealm.json

このメソッドは、送信された JSON ドキュメントの属性でサーバーのリソースを更新します。

別のオプションとして、-s, --set オプションを使用してオンザフライで更新を実行し、新しい値を設定することもできます。

以下に例を示します。

$ kcadm.sh update realms/demorealm -s enabled=false

このメソッドは、enabled 属性を false に設定します。

デフォルトでは、update コマンドは get を実行し、新しい属性値を既存の値とマージします。エンドポイントが PUT コマンドをサポートするかもしれませんが、GET コマンドではない場合もあります。-n オプションを使用して no-merge 更新を実行できます。これは、GET コマンドを最初に実行せずに PUT コマンドを実行します。