手っ取り早いのは Docker イメージを使用する方法です。
docker run -dit \ --name my-keycloak \ -p 8080:8080 \ -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \ -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:26.0.1 start-dev
Keycloak 26.0 は OpenJDK 21 を必要とします。下記から必要なパスを確認してダウンロードします。
$ wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz $ tar zxvf ./jdk-21_linux-x64_bin.tar.gz $ wget https://github.com/keycloak/keycloak/releases/download/26.0.1/keycloak-26.0.1.zip $ unzip ./keycloak-26.0.1.zip $ cd ./keycloak-26.0.1 $ JAVA=../jdk-21.0.5/bin/java \ KC_BOOTSTRAP_ADMIN_USERNAME=admin \ KC_BOOTSTRAP_ADMIN_PASSWORD=admin \ ./bin/kc.sh start-dev
ブラウザから http://{Keycloakのアドレス}:80880 にアクセスし、KC_BOOTSTRAP_ADMIN_USERNAME と KC_BOOTSTRAP_ADMIN_PASSWORD で指定したユーザIDとパスワードでログインします。
ログインすると上部に「admin は一時的な管理ユーザなので、定常的管理ユーザを作成して一時的なものは削除しなさい」とメッセージが表示されます。下記に従って定常的ユーザを作成後、一時ユーザーを削除します。
右上の自分のアカウント名をクリックし、[Manage account]-[Account security]-[Signing in]-[Update] でパスワードを変更できます。
レルム(realm) は「範囲」「領域」などを意味するもので、ユーザーやグループが所属する範囲を示します。
左上の選択肢で [Keycloak master] レルムや作成したレルムを切り替えることができます。
OpenID Connect で SSO するためのクライアントを作成します。
下記で、クライアント情報を確認します。
「とほほの OpenID Connect 入門」の サンプルコード と連携してみます。コンフィグ部分は下記の様に設定しました。192.168.100.1 の IPアドレスは、サンプルコードが Keycloak にアクセスできるIPアドレスに書き換えてください。client_secret も上記で確認したシークレットに変更してください。
config = { "type": "keycloak", "issuer": "http://192.168.100.1:8080/realms/myrealm", "port": 443, "scope": "openid profile email", "client_id": "myclient", "client_secret": "pGCZA6ELpE7rc********************", "redirect_uri": "https://www.example.com/callback", "authorization_endpoint": "http://192.168.100.1:8080/realms/myrealm/protocol/openid-connect/auth", "token_endpoint": "http://192.168.100.1:8080/realms/myrealm/protocol/openid-connect/token", "end_session_endpoint": "http://192.168.100.1:8080/realms/myrealm/protocol/openid-connect/logout", "revocation_endpoint": "http://192.168.100.1:8080/realms/myrealm/protocol/openid-connect/revoke", "jwks_uri": "http://192.168.100.1:8080/realms/myrealm/protocol/openid-connect/certs", "logout_uri": "https://www.example.com", "exclude_urls": [ "/", "/login", "/callback" ], }
あとは サンプルコード の説明に従い動かしてみてください。