設定ファイル@Keycloak¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 設定方法¶
Keycloakでは、コマンドオプション、環境変数、keycloak.conf
ファイルのいずれかでパラメーターを設定できる。
02. keycloak.conf¶
db=postgres
03. 環境変数¶
Bootstrap Admin¶
変数 | 値の例 | 説明 |
---|---|---|
KC_BOOTSTRAP_ADMIN_USERNAME |
admin |
Keycloakのルートユーザー名を設定する。 |
KC_BOOTSTRAP_ADMIN_PASSWORD |
admin |
Keycloakのルートユーザーのパスワードを設定する。 |
Cache¶
変数 | 値の例 | 説明 |
---|---|---|
KC_CACHE |
ispn |
セッションデータ管理の仕組みを設定する。例えばispn の場合、KeycloakクラスターでInfinispanを使用する。 |
KC_CACHE_STACK |
kubernetes |
Keycloakクラスター内のクラスターインスタンス間の通信方法を設定する。例えばkubernetes の場合、KeycloakクラスターでKubernetesによる通信を使用する。 |
Database¶
▼ Databaseとは¶
認証情報のDB (例:MySQL、PostgreSQLなど) を使用できる。
Keycloakと各DBのバージョンの相性を確認しておく必要がある。
▼¶
変数 | 値の例 | 説明 |
---|---|---|
KC_DB |
mysql |
Keycloakで使用するDBベンダーを設定する。 開発環境では、dev-file とするとファイルシステムを使用できる。 |
KC_DB_URL |
jdbc:mysql://<ホスト名>:3306/<DB名> |
|
KC_DB_URL_DATABASE |
keycloak |
|
KC_DB_USERNAME |
keycloak |
|
KC_DB_PASSWORD |
password |
HTTP¶
変数 | 値の例 | 説明 |
---|---|---|
KC_HTTP_RELATIVE_PATH |
/ |
Keycloakの認証エンドポイントのプレフィクスを設定する。 |
Hostname¶
変数 | 値の例 | 説明 |
---|---|---|
KC_HOSTNAME |
localhost (Dockerの場合) |
Keycloakのエンドポイントのホスト名を設定する。各種認証エンドポイント全体のホスト名に影響する。Kubernetes内にKeycloakを置く場合、これは設定しない。 |
Logging¶
変数 | 値の例 | 説明 |
---|---|---|
KC_LOG_LEVEL |
debug |
Keycloakのログレベルを設定する。 |
Proxy¶
変数 | 値の例 | 説明 |
---|---|---|
KC_PROXY |
edge |
Keycloalyがリバースプロキシを後ろにあること有効化する。Kubernetesではこれをedge を設定する必要がある。 |
JAVA_OPTS_APPEND¶
変数 | 値の例 | 説明 |
---|---|---|
-Djgroups.dns.query |
<KeycloakクラスターのService名>.<Namespace名>.svc.cluster.local |
Keycloakクラスター内のKeycloakクラスターインスタンスを返却するDNSを設定する。 |
-Djava.net.preferIPv4Stack |
true |
04. Cookie
ヘッダー¶
AUTH_SESSION_ID¶
Keycloakのログイン後、Cookie
ヘッダーによって運搬されるセッションデータである。
<セッションID>.keycloak-0-27504
の形式になる。
KEYCLOAK_IDENTITY¶
アクセストークンである。
JWTのサイトでデコードすると、中身を確認できる。
{"alg": "HS512", "typ": "JWT", "kid": "*****"}
{
"exp": 1739761077,
"iat": 1739725077,
"jti": "*****",
"iss": "http://localhost:8080/realms/<Realm名>",
"sub": "*****",
"typ": "Serialized-ID",
"sid": "*****",
"state_checker": "*****",
}
KEYCLOAK_SESSION¶
05. JSON¶
Realmをインポートすることにより、設定を宣言的に定義できる。
ファイルが大きいので、ここで に設定ファイルの例を置いている