こんにちは!サイオステクノロジーの貝野です。
今回は、シングルサインオンなどのアクセス管理ができるソフトウェア keycloak をインストールするにあたり、試行錯誤したところがありましたのでその内容を共有したいと思います。
環境構成
今回は、下記の構成で keycloak の構築を行いました。
- OS:RHEL9 (AWS 上)
- keycloak のバージョン:2.6.32
- Java のバージョン:OpenJDK21
まずは keycloak をダウンロード
keycloak のドキュメントを参考に、インストールを進めていきます。
- keycloak の動作には Java が必要となるため、事前に Java 関連パッケージ (openjdk および openjdk-devel) をインストールしておきます。
- https://www.keycloak.org/downloads から keycloak-26.3.2.tar.gz をダウンロードします。
- ダウンロードしたパッケージを、任意のディレクトリ配下に展開します。
# tar -xvf keycloak-26.3.2.tar.gz -C
そのまま起動すると…
ダウンロードが終わったので、ひとまず keycloak を起動してみます。
ドキュメントの手順に沿って、次は bin/kc.sh start-dev を実行します。
起動に成功すると、コンソールに Keycloak 26.3.2 on JVM (powered by Quarkus 3.20.2) started in …(以下省略) と表示されます。(出力内容の下部を参照)
Updating the configuration and installing your custom providers, if any. Please wait. 2025-07-31 04:49:28,487 INFO [io.quarkus.deployment.QuarkusAugmentor] (main) Quarkus augmentation completed in 17015ms Running the server in development mode. DO NOT use this configuration in production. 2025-07-31 04:49:40,369 INFO [org.keycloak.quarkus.runtime.storage.database.liquibase.QuarkusJpaUpdaterProvider] (main) Initializing database schema. Using changelog META-INF/jpa-changelog-master.xml 2025-07-31 04:49:48,517 INFO [org.keycloak.spi.infinispan.impl.embedded.JGroupsConfigurator] (main) JGroups JDBC_PING discovery enabled. 2025-07-31 04:49:48,939 INFO [org.infinispan.CONTAINER] (main) ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller' 2025-07-31 04:49:49,557 INFO [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: node_221352, Site name: null 2025-07-31 04:49:50,035 INFO [org.keycloak.services] (main) KC-SERVICES0050: Initializing master realm 2025-07-31 04:49:54,460 INFO [io.quarkus] (main) Keycloak 26.3.2 on JVM (powered by Quarkus 3.20.2) started in 25.736s. Listening on: http://0.0.0.0:8080 2025-07-31 04:49:54,461 INFO [io.quarkus] (main) Profile dev activated. 2025-07-31 04:49:54,461 INFO [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, keycloak, narayana-jta, opentelemetry, reactive-routes, rest, rest-jackson, smallrye-context-propagation, vertx]
ドキュメントの手順では、http://localhost:8080/ にアクセスして管理者アカウントのユーザ名とパスワードを作成するフォームに移動するようですが、私の環境では GUI 環境がないため、クライアント端末から http://AWS インスタンスのプライベート IP:8080/でアクセスしたところ、下記の画面が表示されました。
“Local access required” ということなので、ローカル環境でのアクセスが必要ということですが GUI 環境がないため、画面の内容に記載の use a bootstrap-admin command を実行してみることにします。
bootstrap-admin コマンドで管理者アカウントを作成
下記のドキュメントに、bootstrap-admin コマンドで管理者アカウントを作成する手順があったので、そちらを参考に管理者アカウントを作成してみます。
https://www.keycloak.org/server/bootstrap-admin-recovery
一時的な管理者アカウントの作成方法も含め、いくつかの実行例が記載されていますが、プロンプトにてユーザ・パスワードを入力する bin/kc.sh bootstrap-admin user コマンドを実行します。
下記のプロンプトにそれぞれ入力します。
- Enter username:管理者のユーザ名
- Enter password:管理者のパスワード
- Enter password again:管理者のパスワード (再入力)
# bin/kc.sh bootstrap-admin user Changes detected in configuration. Updating the server image. Updating the configuration and installing your custom providers, if any. Please wait. 2025-07-31 19:39:29,011 INFO [io.quarkus.deployment.QuarkusAugmentor] (main) Quarkus augmentation completed in 17397ms Server configuration updated and persisted. Run the following command to review the configuration: kc.sh show-config Next time you run the server, just run: kc.sh bootstrap-admin user --optimized Enter username [temp-admin]:admin Enter password: Enter password again: 2025-07-31 04:51:27,697 INFO [org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory] (main) Starting Infinispan embedded cache manager 2025-07-31 04:51:27,707 INFO [org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory] (main) JGroups JDBC_PING discovery enabled. 2025-07-31 04:51:28,701 INFO [org.keycloak.quarkus.runtime.storage.infinispan.CacheManagerFactory] (main) JGroups Encryption enabled (mTLS). 2025-07-31 04:51:28,938 INFO [org.infinispan.CONTAINER] (main) Virtual threads support enabled 2025-07-31 04:51:29,244 INFO [org.keycloak.infinispan.module.certificates.CertificateReloadManager] (main) Starting JGroups certificate reload manager 2025-07-31 04:51:29,416 INFO [org.infinispan.CONTAINER] (main) ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller' 2025-07-31 04:51:29,784 INFO [org.infinispan.CLUSTER] (main) ISPN000078: Starting JGroups channel `ISPN` with stack `jdbc-ping` 2025-07-31 04:51:29,787 INFO [org.jgroups.JChannel] (main) local_addr: 6c4c0bdf-a3da-4e8e-9d54-38fb7c243e37, name: ip-172-10-10-10-28803 2025-07-31 04:51:29,805 INFO [org.jgroups.protocols.FD_SOCK2] (main) server listening on *:57800 2025-07-31 04:51:29,819 INFO [org.jgroups.protocols.pbcast.GMS] (main) ip-172-10-10-10-28803: no members discovered after 7 ms: creating cluster as coordinator 2025-07-31 04:51:29,865 INFO [org.infinispan.CLUSTER] (main) ISPN000094: Received new cluster view for channel ISPN: [ip-172-10-10-10-28803|0] (1) [ip-172-10-10-10-28803] 2025-07-31 04:51:29,869 INFO [org.keycloak.infinispan.module.certificates.CertificateReloadManager] (main) Reloading JGroups Certificate 2025-07-31 04:51:29,985 INFO [org.infinispan.CLUSTER] (main) ISPN000079: Channel `ISPN` local address is `ip-172-10-10-10-28803`, physical addresses are `[172.10.10.10:7800]` 2025-07-31 04:51:30,719 INFO [org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory] (main) Node name: ip-172-10-10-10-28803, Site name: null 2025-07-31 04:51:32,655 INFO [org.keycloak.services] (main) KC-SERVICES0077: Created temporary admin user with username admin 2025-07-31 04:51:32,674 INFO [io.quarkus] (main) Keycloak 26.3.2 on JVM (powered by Quarkus 3.20.1) started in 63.431s. Listening on: 2025-07-31 04:51:32,674 INFO [io.quarkus] (main) Profile nonserver activated. 2025-07-31 04:51:32,675 INFO [io.quarkus] (main) Installed features: [agroal, cdi, hibernate-orm, jdbc-h2, keycloak, narayana-jta, opentelemetry, reactive-routes, rest, rest-jackson, smallrye-context-propagation, vertx] 2025-07-31 04:51:32,713 INFO [org.infinispan.CLUSTER] (main) ISPN000080: Disconnecting JGroups channel `ISPN` 2025-07-31 04:51:32,725 INFO [org.keycloak.infinispan.module.certificates.CertificateReloadManager] (main) Stopping JGroups certificate reload manager 2025-07-31 04:51:32,729 INFO [com.arjuna.ats.jbossatx] (main) ARJUNA032014: Stopping transaction recovery manager 2025-07-31 04:51:32,779 INFO [io.quarkus] (main) Keycloak stopped in 0.097s #
これで、管理者のユーザ・パスワードが設定されました。
再度 bin/kc.sh start-dev を実行してみると、今度はログイン画面が表示されました。
先ほど設定したユーザ名・パスワードを入力すると、無事にログインすることができました。
今回は、keycloak を導入するにあたり、つまづいたポイントをご紹介しました。
今後、各機能の説明や使い方などもご紹介できればと思いますので、引き続きよろしくお願いします!