20.6. レルム操作
新しいレルムの作成
realms
エンドポイントで create
コマンドを使用して、新しい有効なレルムを作成し、属性を realm
および enabled
に設定します。
kcadm.sh create realms -s realm=demorealm -s enabled=true
$ kcadm.sh create realms -s realm=demorealm -s enabled=true
レルムはデフォルトでは有効になっていません。これを有効にすると、認証にレルムをすぐに使用できます。
新規オブジェクトの説明には、JSON 形式を使用することもできます。
kcadm.sh create realms -f demorealm.json
$ kcadm.sh create realms -f demorealm.json
レルム属性を使用して JSON ドキュメントをファイルから直接送信するか、または標準入力にパイプして送信できます。
たとえば、以下のようになります。
- Linux:
kcadm.sh create realms -f - << EOF { "realm": "demorealm", "enabled": true } EOF
$ kcadm.sh create realms -f - << EOF
{ "realm": "demorealm", "enabled": true }
EOF
- Windows:
echo { "realm": "demorealm", "enabled": true } | kcadm create realms -f -
c:\> echo { "realm": "demorealm", "enabled": true } | kcadm create realms -f -
既存のレルムの一覧表示
以下のコマンドは、すべてのレルムのリストを返します。
kcadm.sh get realms
$ kcadm.sh get realms
レルムの一覧はサーバー上でさらにフィルタリングされ、ユーザーが確認できるレルムのみを返します。
レルムの説明全体を返すと、多くの場合、情報が非常に多すぎます。ほとんどのユーザーは、レルム名やレルムが有効かどうかなど、属性のサブセットのみに関心があります。--fields
オプションを使用して、返す属性を指定できます。
kcadm.sh get realms --fields realm,enabled
$ kcadm.sh get realms --fields realm,enabled
結果をコンマ区切りの値として表示することもできます。
kcadm.sh get realms --fields realm --format csv --noquotes
$ kcadm.sh get realms --fields realm --format csv --noquotes
特定のレルムの取得
レルム名をコレクション URI に追加し、個別のレルムを取得します。
kcadm.sh get realms/master
$ kcadm.sh get realms/master
レルムの更新
レルムの属性のみを変更する場合に、
-s
オプションを使用して属性に新しい値を設定します。以下に例を示します。
kcadm.sh update realms/demorealm -s enabled=false
$ kcadm.sh update realms/demorealm -s enabled=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい値で書き込み可能な属性をすべて設定する場合は、
get
コマンドを実行して、JSON ファイルの現在の値を編集し、resubmit を実行します。以下に例を示します。
kcadm.sh get realms/demorealm > demorealm.json vi demorealm.json kcadm.sh update realms/demorealm -f demorealm.json
$ kcadm.sh get realms/demorealm > demorealm.json $ vi demorealm.json $ kcadm.sh update realms/demorealm -f demorealm.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
レルムの削除
以下のコマンドを実行してレルムを削除します。
kcadm.sh delete realms/demorealm
$ kcadm.sh delete realms/demorealm
レルムのすべてのログインページオプションをオンにする
特定の機能を制御する属性を true
に設定します。
以下に例を示します。
kcadm.sh update realms/demorealm -s registrationAllowed=true -s registrationEmailAsUsername=true -s rememberMe=true -s verifyEmail=true -s resetPasswordAllowed=true -s editUsernameAllowed=true
$ kcadm.sh update realms/demorealm -s registrationAllowed=true -s registrationEmailAsUsername=true -s rememberMe=true -s verifyEmail=true -s resetPasswordAllowed=true -s editUsernameAllowed=true
レルムキーの一覧表示
ターゲットレルムの keys
エンドポイントで get
操作を使用します。
kcadm.sh get keys -r demorealm
$ kcadm.sh get keys -r demorealm
新しいレルムキーの生成
新しい RSA 生成鍵のペアを追加する前に、ターゲットレルムの ID を取得します。
以下に例を示します。
kcadm.sh get realms/demorealm --fields id --format csv --noquotes
$ kcadm.sh get realms/demorealm --fields id --format csv --noquotes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kcadm.sh get keys -r demorealm
によって明らかになったように、既存のプロバイダーよりも優先度の高い新規キープロバイダーを追加します。たとえば、以下のようになります。
Linux:
kcadm.sh create components -r demorealm -s name=rsa-generated -s providerId=rsa-generated -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s 'config.priority=["101"]' -s 'config.enabled=["true"]' -s 'config.active=["true"]' -s 'config.keySize=["2048"]'
$ kcadm.sh create components -r demorealm -s name=rsa-generated -s providerId=rsa-generated -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s 'config.priority=["101"]' -s 'config.enabled=["true"]' -s 'config.active=["true"]' -s 'config.keySize=["2048"]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows:
kcadm create components -r demorealm -s name=rsa-generated -s providerId=rsa-generated -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s "config.priority=[\"101\"]" -s "config.enabled=[\"true\"]" -s "config.active=[\"true\"]" -s "config.keySize=[\"2048\"]"
c:\> kcadm create components -r demorealm -s name=rsa-generated -s providerId=rsa-generated -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s "config.priority=[\"101\"]" -s "config.enabled=[\"true\"]" -s "config.active=[\"true\"]" -s "config.keySize=[\"2048\"]"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
parentId
属性をターゲットレルムの ID の値に設定します。新たに追加されたキーは、
kcadm.sh get keys -r demorealm
によって明らかになったように、アクティブキーになります。
Java キーストアファイルから新しいレルムキーの追加
新しいキープロバイダーを追加して、サーバーに JKS ファイルとしてすでに準備済みの新規キーペアを追加します。
たとえば、以下のようになります。
Linux:
kcadm.sh create components -r demorealm -s name=java-keystore -s providerId=java-keystore -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s 'config.priority=["101"]' -s 'config.enabled=["true"]' -s 'config.active=["true"]' -s 'config.keystore=["/opt/keycloak/keystore.jks"]' -s 'config.keystorePassword=["secret"]' -s 'config.keyPassword=["secret"]' -s 'config.alias=["localhost"]'
$ kcadm.sh create components -r demorealm -s name=java-keystore -s providerId=java-keystore -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s 'config.priority=["101"]' -s 'config.enabled=["true"]' -s 'config.active=["true"]' -s 'config.keystore=["/opt/keycloak/keystore.jks"]' -s 'config.keystorePassword=["secret"]' -s 'config.keyPassword=["secret"]' -s 'config.alias=["localhost"]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows:
kcadm create components -r demorealm -s name=java-keystore -s providerId=java-keystore -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s "config.priority=[\"101\"]" -s "config.enabled=[\"true\"]" -s "config.active=[\"true\"]" -s "config.keystore=[\"/opt/keycloak/keystore.jks\"]" -s "config.keystorePassword=[\"secret\"]" -s "config.keyPassword=[\"secret\"]" -s "config.alias=[\"localhost\"]"
c:\> kcadm create components -r demorealm -s name=java-keystore -s providerId=java-keystore -s providerType=org.keycloak.keys.KeyProvider -s parentId=959844c1-d149-41d7-8359-6aa527fca0b0 -s "config.priority=[\"101\"]" -s "config.enabled=[\"true\"]" -s "config.active=[\"true\"]" -s "config.keystore=[\"/opt/keycloak/keystore.jks\"]" -s "config.keystorePassword=[\"secret\"]" -s "config.keyPassword=[\"secret\"]" -s "config.alias=[\"localhost\"]"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
特定のキーストアに一致するように、
keystore
、keystorePassword
、keyPassword
、およびalias
属性値を変更するようにしてください。 -
parentId
属性をターゲットレルムの ID の値に設定します。
鍵のパッシブの作成または鍵の無効化
パッシブを作成する鍵を特定します。
kcadm.sh get keys -r demorealm
$ kcadm.sh get keys -r demorealm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
キーの
providerId
属性を使用して、components/PROVIDER_ID
などのエンドポイント URI を作成します。 update
を実行します。たとえば、以下のようになります。
Linux:
kcadm.sh update components/PROVIDER_ID -r demorealm -s 'config.active=["false"]'
$ kcadm.sh update components/PROVIDER_ID -r demorealm -s 'config.active=["false"]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows:
kcadm update components/PROVIDER_ID -r demorealm -s "config.active=[\"false\"]"
c:\> kcadm update components/PROVIDER_ID -r demorealm -s "config.active=[\"false\"]"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 他のキー属性を更新できます。
-
新しい
enabled
値を設定してキーを無効にします(例:config.enabled=["false"]
)。 -
新規の
priority
の値を設定し、キーの優先度を変更します (例:config.priority=["110"]
)。
古いキーの削除
- 削除する鍵がパッシブかつ無効になっており、既存のトークンがアプリケーションに保持され、ユーザーが突然失敗するのを防ぎます。
パッシブを作成する鍵を特定します。
kcadm.sh get keys -r demorealm
$ kcadm.sh get keys -r demorealm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow そのキーの
providerId
を使用して削除を実行します。kcadm.sh delete components/PROVIDER_ID -r demorealm
$ kcadm.sh delete components/PROVIDER_ID -r demorealm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
レルムのイベントロギングの設定
events/config
エンドポイントで update
コマンドを使用します。
eventsListeners
属性には、イベントを受信するすべてのイベントリスナーを指定する EventListenerProviderFactory ID の一覧が含まれます。個別に、ビルトインイベントストレージを制御する属性があり、管理 REST API 経由で過去のイベントをクエリーできます。サービス呼び出しのロギング (eventsEnabled
) および監査イベントは、管理コンソールまたは管理者 REST API (adminEventsEnabled
) 中にトリガーされる別個のコントロールがあります。データベースに満杯にならないように古いイベントの有効期限を設定することもできます。eventsExpiration
は秒単位で表される持続可能時間に設定されます。
すべてのイベントを受信し、jboss-logging 経由でログに記録する組み込みイベントリスナーの設定例を以下に示します。(org.keycloak.events
と呼ばれるロガーを使用して、エラーイベントは WARN
としてログに記録され、それ以外は DEBUG
としてログに記録されます。)
たとえば、以下のようになります。
- Linux:
kcadm.sh update events/config -r demorealm -s 'eventsListeners=["jboss-logging"]'
$ kcadm.sh update events/config -r demorealm -s 'eventsListeners=["jboss-logging"]'
- Windows:
kcadm update events/config -r demorealm -s "eventsListeners=[\"jboss-logging\"]"
c:\> kcadm update events/config -r demorealm -s "eventsListeners=[\"jboss-logging\"]"
次に、利用可能なすべての ERROR イベント (監査イベントは含まない) のストレージを 2 日間有効にして、管理 REST 経由で取得できるようにする例を示します。
たとえば、以下のようになります。
- Linux:
kcadm.sh update events/config -r demorealm -s eventsEnabled=true -s 'enabledEventTypes=["LOGIN_ERROR","REGISTER_ERROR","LOGOUT_ERROR","CODE_TO_TOKEN_ERROR","CLIENT_LOGIN_ERROR","FEDERATED_IDENTITY_LINK_ERROR","REMOVE_FEDERATED_IDENTITY_ERROR","UPDATE_EMAIL_ERROR","UPDATE_PROFILE_ERROR","UPDATE_PASSWORD_ERROR","UPDATE_TOTP_ERROR","VERIFY_EMAIL_ERROR","REMOVE_TOTP_ERROR","SEND_VERIFY_EMAIL_ERROR","SEND_RESET_PASSWORD_ERROR","SEND_IDENTITY_PROVIDER_LINK_ERROR","RESET_PASSWORD_ERROR","IDENTITY_PROVIDER_FIRST_LOGIN_ERROR","IDENTITY_PROVIDER_POST_LOGIN_ERROR","CUSTOM_REQUIRED_ACTION_ERROR","EXECUTE_ACTIONS_ERROR","CLIENT_REGISTER_ERROR","CLIENT_UPDATE_ERROR","CLIENT_DELETE_ERROR"]' -s eventsExpiration=172800
$ kcadm.sh update events/config -r demorealm -s eventsEnabled=true -s 'enabledEventTypes=["LOGIN_ERROR","REGISTER_ERROR","LOGOUT_ERROR","CODE_TO_TOKEN_ERROR","CLIENT_LOGIN_ERROR","FEDERATED_IDENTITY_LINK_ERROR","REMOVE_FEDERATED_IDENTITY_ERROR","UPDATE_EMAIL_ERROR","UPDATE_PROFILE_ERROR","UPDATE_PASSWORD_ERROR","UPDATE_TOTP_ERROR","VERIFY_EMAIL_ERROR","REMOVE_TOTP_ERROR","SEND_VERIFY_EMAIL_ERROR","SEND_RESET_PASSWORD_ERROR","SEND_IDENTITY_PROVIDER_LINK_ERROR","RESET_PASSWORD_ERROR","IDENTITY_PROVIDER_FIRST_LOGIN_ERROR","IDENTITY_PROVIDER_POST_LOGIN_ERROR","CUSTOM_REQUIRED_ACTION_ERROR","EXECUTE_ACTIONS_ERROR","CLIENT_REGISTER_ERROR","CLIENT_UPDATE_ERROR","CLIENT_DELETE_ERROR"]' -s eventsExpiration=172800
- Windows:
kcadm update events/config -r demorealm -s eventsEnabled=true -s "enabledEventTypes=[\"LOGIN_ERROR\",\"REGISTER_ERROR\",\"LOGOUT_ERROR\",\"CODE_TO_TOKEN_ERROR\",\"CLIENT_LOGIN_ERROR\",\"FEDERATED_IDENTITY_LINK_ERROR\",\"REMOVE_FEDERATED_IDENTITY_ERROR\",\"UPDATE_EMAIL_ERROR\",\"UPDATE_PROFILE_ERROR\",\"UPDATE_PASSWORD_ERROR\",\"UPDATE_TOTP_ERROR\",\"VERIFY_EMAIL_ERROR\",\"REMOVE_TOTP_ERROR\",\"SEND_VERIFY_EMAIL_ERROR\",\"SEND_RESET_PASSWORD_ERROR\",\"SEND_IDENTITY_PROVIDER_LINK_ERROR\",\"RESET_PASSWORD_ERROR\",\"IDENTITY_PROVIDER_FIRST_LOGIN_ERROR\",\"IDENTITY_PROVIDER_POST_LOGIN_ERROR\",\"CUSTOM_REQUIRED_ACTION_ERROR\",\"EXECUTE_ACTIONS_ERROR\",\"CLIENT_REGISTER_ERROR\",\"CLIENT_UPDATE_ERROR\",\"CLIENT_DELETE_ERROR\"]" -s eventsExpiration=172800
c:\> kcadm update events/config -r demorealm -s eventsEnabled=true -s "enabledEventTypes=[\"LOGIN_ERROR\",\"REGISTER_ERROR\",\"LOGOUT_ERROR\",\"CODE_TO_TOKEN_ERROR\",\"CLIENT_LOGIN_ERROR\",\"FEDERATED_IDENTITY_LINK_ERROR\",\"REMOVE_FEDERATED_IDENTITY_ERROR\",\"UPDATE_EMAIL_ERROR\",\"UPDATE_PROFILE_ERROR\",\"UPDATE_PASSWORD_ERROR\",\"UPDATE_TOTP_ERROR\",\"VERIFY_EMAIL_ERROR\",\"REMOVE_TOTP_ERROR\",\"SEND_VERIFY_EMAIL_ERROR\",\"SEND_RESET_PASSWORD_ERROR\",\"SEND_IDENTITY_PROVIDER_LINK_ERROR\",\"RESET_PASSWORD_ERROR\",\"IDENTITY_PROVIDER_FIRST_LOGIN_ERROR\",\"IDENTITY_PROVIDER_POST_LOGIN_ERROR\",\"CUSTOM_REQUIRED_ACTION_ERROR\",\"EXECUTE_ACTIONS_ERROR\",\"CLIENT_REGISTER_ERROR\",\"CLIENT_UPDATE_ERROR\",\"CLIENT_DELETE_ERROR\"]" -s eventsExpiration=172800
以下は、保存されたイベントタイプを 利用可能なすべてのイベントタイプ にリセットする方法の例になります。すべてのイベントタイプを列挙するのと同じものになります。
kcadm.sh update events/config -r demorealm -s enabledEventTypes=[]
$ kcadm.sh update events/config -r demorealm -s enabledEventTypes=[]
以下は、監査イベントのストレージを有効にする方法の例になります。
kcadm.sh update events/config -r demorealm -s adminEventsEnabled=true -s adminEventsDetailsEnabled=true
$ kcadm.sh update events/config -r demorealm -s adminEventsEnabled=true -s adminEventsDetailsEnabled=true
最新の 100 イベントを取得する方法の例を以下に示します。これらは最新のものから最も古いものへと順序付けられます。
kcadm.sh get events --offset 0 --limit 100
$ kcadm.sh get events --offset 0 --limit 100
以下は、保存されたすべてのイベントを削除する方法の例になります。
kcadm delete events
$ kcadm delete events
キャッシュのフラッシュ
-
create
コマンドと、clear-realm-cache
、clear-user-cache
、またはclear-keys-cache
のいずれかのエンドポイントを使用します。 realm
をターゲットレルムと同じ値に設定します。以下に例を示します。
kcadm.sh create clear-realm-cache -r demorealm -s realm=demorealm kcadm.sh create clear-user-cache -r demorealm -s realm=demorealm kcadm.sh create clear-keys-cache -r demorealm -s realm=demorealm
$ kcadm.sh create clear-realm-cache -r demorealm -s realm=demorealm $ kcadm.sh create clear-user-cache -r demorealm -s realm=demorealm $ kcadm.sh create clear-keys-cache -r demorealm -s realm=demorealm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
エクスポートされた .json ファイルからのレルムのインポート
-
partialImport
エンドポイントでcreate
コマンドを使用します。 -
ifResourceExists
を、FAIL
、SKIP
、OVERWRITE
のいずれかに設定します。 -f
を使用して、エクスポートしたレルムの.json
ファイルを送信します。以下に例を示します。
kcadm.sh create partialImport -r demorealm2 -s ifResourceExists=FAIL -o -f demorealm.json
$ kcadm.sh create partialImport -r demorealm2 -s ifResourceExists=FAIL -o -f demorealm.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レルムが存在しない場合は、最初に作成する必要があります。
以下に例を示します。
kcadm.sh create realms -s realm=demorealm2 -s enabled=true
$ kcadm.sh create realms -s realm=demorealm2 -s enabled=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow