パッケージを指します。ドライバーのJavaクラスを指定します。ここでは、本章の前半で定義したモジュールのサンプルに含まれるPostgreSQLドライバーをインストールする例を紹介します。</subsystem>Keycloakデータソースの変更Keycloakが新しい外部データベースに接続するために使用する既存のデータソース設定を変更します。これは、JDBCドライバーを登録したのと同じ設定ファイルとXMLブロック内で行います。サンプルとして、新しいデータベースへの接続を設定すると以下のとおりになります。</subsystem>前提条件JDBCドライバーはすでに宣言しています。変更する必要があります。この接続URL値の形式は、ベンダーのJDBC実装のドキュメントで指定されています。これは、この章の前のセクションで宣言したJDBCドライバーの論理名になります。トランザクションを実行するたびにデータベースへの新しい接続を開くのは処理コストがかかります。これを補うために、データソース実装は開いた接続のプールを維持します。よって、プールする接続の最大数が指定されます。システムの負荷に応じて、この値を変更することができます。データベースへの接続に必要なデータベースのユーザー名とパスワードを定義します。このステップは少なくともPostgreSQLでは必要です。この例では、これらのクレデンシャルが平文で表示されていることが気になるかもしれません。これらのクレデンシャルを難読化する方法がありますが、その方法はこのガイドの範囲外です。chapterを参照してください。いずれかの中にこのコンポーネント用の設定があります。このファイルの場所は動作モードによって異なります。...</subsystem>設定可能なオプションは、以下のとおりです。dataSourceデータソースのJNDI名jtaデータソースがJTA対応かどうか指定するbooleanプロパティーdriverDialectデータベース・ダイアレクトの値。ほとんどの場合、ダイアレクトはHibernateによって自動検出されるため、このプロパティーを指定する必要はありません。initializeEmpty空の場合はデータベースを初期化します。falseに設定する場合、データベースを手動で初期化する必要があります。設定し、データベース初期化用のSQLコマンドが書かれたファイルを作成します。デフォルトはtrueになっています。migrationStrategyデータベースの移行に使用する戦略。updateは、自動的にデータベース・スキーマを移行します。manualは、データベースに対して手動実行可能な、必要な変更のSQLコマンドが書かれたファイルをエクスポートします。validateは、データベースが最新であるかどうかを単にチェックするものです。migrationExport手動によるデータベース初期化または移行用ファイルを書き込む場所のパス。showSqlHibernateがコンソール内にすべてのSQLコマンドを表示するかどうかを指定します(デフォルトはfalse)。これは非常に冗長な出力となります。formatSqlHibernateがSQLコマンドをフォーマットするかどうかを指定します(デフォルトはtrue)。globalStatsInterval実行されたDBクエリーなどに関する、Hibernateのグローバル統計情報をログに出力します。統計情報は、秒単位で指定された間隔でサーバーログに常にレポートされ、各レポート後にクリアされます。schema使用するデータベース・スキーマを指定します。Guideで説明します。データベースのユニコードに関する考慮事項Keycloakのデータベース・スキーマは、以下の特別なフィールドにだけユニコード文字列の使用を許可します。上記以外の場合は、8ビットのデータベース・エンコーディングに含まれる文字に制限されます。データベース・システムによっては、ユニコード文字のUTF-8エンコーディングを有効にし、すべてのテキストフィールド内で完全なユニコード文字セットを使用することができます。これは8ビットエンコーディングの場合よりも文字列の最大長を短くすることによって相殺されます。データベースによっては、ユニコード文字を処理できるようにデータベースとJDBCドライバーの両方、またはいずれかに特別な設定をする必要があります。以下のデータベースの設定を確認してください。データベースがここにリストされている場合、データベースとJDBCドライバーの両方のレベルでUTF-8エンコーディングが適切に処理されていれば、正常に動きます。この点には注意してください。フィールドにユニコード文字セットが設定できるかどうかになります。設定できる場合は、通常はフィールド長を犠牲にすることで、ユニコードは妥当となります。フィールドを広範囲にわたって使用するため、すべてのテキストフィールドのユニコード・サポートはほとんどありません。文字セットがデータベース文字セットとして使用された場合)。JDBCドライバーに特別な設定は必要ありません。設定する必要があります。しておいた方が賢明です。これらのプロパティーは、システム・プロパティーまたは接続プロパティーとして設定することができます。設定はパフォーマンスに悪影響を与える可能性がありますので、この点は注意してください。JDBCドライバーの設定ドキュメントを参照してください。Serverデータベースユニコード文字は、特別なフィールドに対してのみ適切に処理されます。JDBCドライバーやデータベースの特別な設定は必要ありません。文字セットを使用する場合。この場合、バイト数ではなく文字数に合わせて列が作成されるため、通常のフィールドには長さ制限は適用されないことに注意が必要です。データベースのデフォルト文字セットでユニコードの保存が許可されていない場合、特別なフィールドでのみユニコード値の保存が許可されることになります。追加する必要があります。ある場合、ユニコードはサポートされます。この場合、ユニコード文字はどのフィールドでも使用することができますが、通常フィールドではフィールド長は短縮されません。JDBCドライバーの特別な設定は必要ありません。Databaseの文字セットは作成時に決定されます。PostgreSQLクラスターのデフォルトの文字セットは以下のSQLコマンドで特定できます。server_encoding;デフォルトの文字セットがUTF-8でない場合は、次のように文字セットとしてUTF-8を使用してデータベースを作成することができます。'UTF8';パブリックホスト名の使用Keycloakは、パブリックホスト名をさまざまな用途に使用します。トークン発行者のフィールドやパスワードリセットの電子メールで送信されたURLなどです。SPIは、リクエストのホスト名を設定する方法を提供します。デフォルト・プロバイダーでは、フロントエンドのリクエストに固定のURLを設定でき、バックエンドのリクエストはリクエストURIに基づくことができます。ビルトイン・プロバイダーが必要な機能を提供しない場合、独自のプロバイダーを開発することもできます。フロントエンド・リクエスト(ユーザー・エージェントからのリクエスト)をベースURLとして使用し、リクエストURLをバックエンド・リクエスト(クライアントからの直接リクエスト)のベースとして使用します。フロントエンド・リクエストは、Keycloakサーバーと同じコンテキストパスを持つ必要はありません。ある可能性があることを意味します。これにより、ユーザー・エージェント(ブラウザー)がパブリック・ドメイン名を介してKeycloakにリクエストを送信し、内部クライアントが内部ドメイン名またはIPアドレスを使用できるようになります。Discoveryエンドポイントに反映されます。ベースが同じになるということです。以下の例を参照してください。更新するには、次のコマンドを使用します。設定することで、バックエンド・リクエストにもフロントエンドURLを使用させることができます。個々のレルムのデフォルトのフロントエンドURLをオーバーライドすることもできます。これは管理コンソールで実施できます。使用して、管理コンソールの固定URLを設定します。アクセスをブロックする必要があります。Guideを参照してください。実装する必要があります。サービス・プロバイダー・インターフェイスのセクションの指示に従ってください。ネットワークの設定デフォルトでインストールされているKeycloakには、いくつかのネットワーク上の制限があります。バインドされるので、認証サーバーは実際には1つのローカルマシンでしか使用できません。HTTPベースの接続では、80や443といったデフォルトのポートは使用しません。HTTPS/SSLは最初から設定されておらず、設定しなければKeycloakには多くのセキュリティー上の脆弱性があります。最後に、Keycloakはしばしば外部のサーバーと安全なSSLやHTTPS接続を行う必要があるため、エンドポイントが正しく検証されるようにトラスト・ストアを設定する必要があります。本章では、これらすべてについて説明します。バインドされています。利用中のネットワーク上で認証サーバーを使用するには、これはあまり便利なデフォルトではありません。通常は、リバース・プロキシーまたはロードバランサーをパブリック・ネットワークにデプロイし、トラフィックをプライベート・ネットワーク上の個々のKeycloakサーバー・インスタンスにルーティングすることをお勧めします。以外のものにバインドする必要があります。バインドアドレスの設定は簡単です。起動スクリプトを使用して、コマンドライン上で設定することができます。スイッチにより、パブリック・インターフェイス用のIPバインドアドレスは設定されます。コマンドラインでバインドアドレスを設定したくない場合はその代わりの方法として、プロファイル設定を編集することもできます。インターフェイスは、公開用ソケットを作成するサブシステムに対応しています。これらのサブシステムのサンプルとしては、Keycloakの認証エンドポイントを提供するwebレイヤーというものがあります。インターフェイスは、WildFlyのmanagementレイヤーによって開かれたソケットに対応しています。コマンドライン・インターフェイスとWildFlyのwebコンソールを使用できるソケットになります。いう値を示していますが、コマンドラインでJavaシステム・プロパティーを設定して上書きすることができます。このコマンドの簡略表記です。したがって、このバインドアドレス値は、プロファイル設定で直接変更、または起動時にコマンドラインで変更することができます。定義を設定すると、さらに多くのオプションを使用できます。ソケット・ポート・バインディング各ソケット用に開けられたポートには、コマンドラインまたは設定内で上書きできるデフォルト値があらかじめ定義されています。