KeyCloak

Windows向けKeycloakインストールとAD連携ガイド(2026年版)

ⓘ本ページはプロモーションが含まれています

Contents

スポンサードリンク

1. 本ガイドの概要と前提条件

本稿では Keycloak を Windows 環境に導入し、Active Directory (AD) と Kerberos/SPNEGO によるシングルサインオンを構築する手順 を解説します。
2026 年 4 月時点での最新安定版は公式サイトで随時確認が必要です(執筆時点では Keycloak 25.0.x 系列がリリースされています)。Docker コンテナ方式と Windows Service 方式の両方を取り上げ、セキュリティ上のベストプラクティス(TLS 証明書管理・強力な keystore パスワード)も併せて提示します。


2. Docker を使ったインストール

Docker Desktop の Compose プラグインdocker compose コマンド)を利用すれば、数分で Keycloak が起動できます。本節ではイメージ取得から起動確認までの流れと、実運用に向けた追加設定ポイントを示します。

2.1 必要な前提ソフトウェア

Docker Desktop(バージョン 4.30 以降)と、Keycloak が利用する JDK 21(OpenJDK 推奨)がインストールされていることを確認してください。

2.2 Docker イメージの取得

※ バージョン確認
bash
curl -s https://registry.hub.docker.com/v2/repositories/quay.io/keycloak/keycloak/tags?page_size=5 | jq -r '.results[].name' | head -n 1

上記コマンドで取得したタグが「最新」かどうかを都度確認してください。

2.3 docker-compose.yml の作成

ポイント
- docker compose(スペースあり)を使用するのが現在の推奨です。古い docker‑compose バイナリは非推奨となっています。
- データ永続化のために名前付きボリューム keycloak-data をマウントしています。

2.4 コンテナ起動と確認

ブラウザで http://localhost:8080 にアクセスし、管理コンソールのログイン画面が表示されれば成功です。

2.5 本番向け TLS 設定(抜粋)

standalone.xml(または conf/keycloak.conf)で以下を設定し、デフォルトの changeit を使わないようにします。


3. Windows Service としてインストール

Windows 起動時に自動起動させたい場合は、Keycloak を サービス化 します。ここでは sc.exe の正しい構文と、実行ユーザーの権限設定を含めて解説します。

3.1 前提条件の確認

  • JDK 21 がインストールされ、環境変数 JAVA_HOME が正しく指すこと。
  • ダウンロードした ZIP を C:\keycloak-<version> に展開(例: C:\keycloak-25.0.2)。

3.2 サービス登録コマンド

ポイント

項目 説明
binPath= パス全体を二重引用符で囲み、引数部分も含める必要があります。
obj= サービスを実行するローカルユーザー(例: svc_keycloak)です。最小権限のアカウントを作成し、Keycloak ディレクトリへの読み取り/実行権限だけ付与してください。
depend= TCP/IP が利用できるように依存関係を明示しています。

3.3 サービス起動と確認

services.msc 上で「Running」になっていれば OKです。ブラウザから http://localhost:8080 へアクセスし、管理コンソールが表示されることを確認してください。


4. Active Directory 連携設定(LDAP / TLS)

AD と Keycloak を統合することで、社内ユーザーの認証情報を一元管理できます。以下では LDAP バインドの基本設定と、TLS による通信暗号化手順を詳述します。

4.1 サービスアカウントの作成と最小権限付与

AD 管理者は svc_keycloak というユーザーを作成し、以下の属性を設定してください。

  • パスワードは「パスワード永続化」ポリシーで例外扱いにする(90 日以上変更不要)。
  • Read 権限だけを Users コンテナ に付与し、書き込み権限は付与しない。

4.2 Keycloak の LDAP プロバイダー設定

Keycloak 管理コンソール → User Federation → Add provider → ldap を開き、次の項目を入力します(各項目の説明は冒頭文で簡潔に)。

項目 推奨値
Connection URL ldaps://ad.example.com:636
Bind DN CN=svc_keycloak,OU=Service Accounts,DC=example,DC=com
Bind Credential サービスアカウントのパスワード
Use TLS ✅(必ず有効化)
Validate certificate chain
Users DN OU=Users,DC=example,DC=com
Username LDAP attribute sAMAccountName
RDN LDAP attribute cn

Use StartTLS を選択した場合はポート 389、LDAPS(推奨)を使う場合は 636 にしてください。

4.3 社内 CA 証明書のインポート

  1. 社内 CA が発行した AD 用サーバー証明書 ad-ca.crt を Keycloak の certs ディレクトリに配置します。
  2. 以下コマンドで 新しい keystore パスワード(例: KcStrong!2026)を使ってインポートします。

  1. conf/keycloak.conf にパスワードを反映させます。


5. SPNEGO(Kerberos)統合手順

Windows のシングルサインオン(SSO)は SPNEGO/Kerberos が最もシームレスです。本節では keytab 作成、krb5.conf 配置、Keycloak 側の認証フロー設定までを網羅します。

5.1 SPN の登録

ポイントHTTP/ プレフィックスはブラウザが Kerberos チケットを要求する際の標準です。

5.2 正しい ktpass コマンド例

Domain Controller(Windows Server)で管理者権限のコマンドプロンプトを開き、以下を実行します。

オプション解説

オプション 説明
-crypto AES256-CTS-HMACSHA1 現行 Windows Server がサポートする最強暗号。古い AES256-SHA1 は非推奨です。
-ptype KRB5_NT_PRINCIPAL プリンシパルタイプを明示(Kerberos の標準)。
-kvno 0 キーバージョン番号は自動付与させるために 0 を指定します。

5.3 keytab と krb5.conf の配置

Docker コンテナの場合

Windows Service 版の場合

  • C:\keycloak-25.0.2\conf\keycloak.keytab にコピーし、ファイル権限は svc_keycloak のみ読み取り可能に設定。
  • 同じく krb5.confC:\keycloak-25.0.2\conf\ 配下へ配置。

krb5.conf(Linux コンテナ向け)サンプル

5.4 Keycloak 側の SPNEGO Authenticator 有効化

  1. Authentication → Flows に移動し、Browser フローをコピーして「SPNEGO Browser Flow」作成。
  2. コピーしたフローに Kerberos/SPNEGO AuthenticatorREQUIRED で追加。
  3. 「Flow の設定」ページでこのフローをデフォルトの Browser フローとして選択し、保存。

5.5 ブラウザ側の Negotiate ヘッダー許可

ブラウザ 設定項目 推奨値
Chrome AuthServerWhitelist(レジストリまたは GPO) keycloak.example.com
Edge (Chromium) 同上 keycloak.example.com
Firefox network.negotiate-auth.trusted-uris keycloak.example.com

注意:設定を反映させるにはブラウザの再起動が必要です。


6. クライアント(SAML / OIDC)登録と属性マッピング

Keycloak の認可サーバーとして機能させるために、社内ポータルや SaaS アプリを クライアント として登録します。ここでは代表的な設定項目と、miniOrange が推奨する属性マッピング手順を示します。

6.1 OIDC クライアント作成例

  1. Clients → Create
  2. Client ID: intranet-portal
  3. Client Protocol: openid-connect
  4. Root URL: https://portal.example.com

  5. 設定項目の概要(導入文)
    以下のフィールドはトラフィック制御とセキュリティに直結します。必ず正しい URI を列挙してください。

項目 推奨設定
Access Type confidential(サーバー側フロー)
Standard Flow Enabled
Direct Access Grants Enabled
Valid Redirect URIs https://portal.example.com/*
Web Origins +(同一オリジンを許可)

6.2 SAML クライアント作成例

  • Client Protocol: saml
  • Valid Redirect URIs: https://portal.example.com/saml/acs
  • Force POST Binding を有効にすると、SAML アサーションが HTTP POST で送信されます。

6.3 属性マッピング(共通)

Mapper 名 Mapper Type ソース属性 トークン属性名
email User Property mail email
displayName User Property displayName name
groups Group Membership groups

Script Mapper(Keycloak 25.x) を利用すれば、firstNamelastName の結合やカスタムロジックも実装可能です。

6.4 miniOrange が推奨するベストプラクティス

  1. IDP メタデータの自動取得:Azure AD / Entra ID を Identity Provider として登録し、メタデータ URL(例: https://login.microsoftonline.com/<tenant>/v2.0/.well-known/openid-configuration)を入力。
  2. 属性名の統一:AD の mail, displayName をそのまま Keycloak クレームにマッピングし、クライアント側で変換ロジックを減らす。
  3. クロスプロトコルシナリオ:SAML → OIDC のブリッジングが必要な場合は、「SAML Assertion」→「OIDC ID Token」マッピング を事前に定義しておくと、開発工数が大幅削減できます。

7. 動作確認・トラブルシューティング

設定完了後は 実環境での SSO 挙動を検証 し、問題があればログレベルやシステム時刻を中心にチェックします。

7.1 基本的なテスト手順(導入文)

以下の手順でブラウザ側の自動認証が機能するか確認してください。

  1. テストアプリ(例: Spring Boot の spring-security-saml2 デモ)にアクセス
  2. ブラウザが Keycloak にリダイレクトせず、直接社内ポータルへ遷移すれば成功です。

7.2 ログ取得方法

実行環境 コマンド例
Docker コンテナ docker logs -f keycloak
Windows Service Get-Content C:\keycloak-25.0.2\log\server.log -Tail 100 -Wait

詳細デバッグが必要な場合は conf/keycloak.conf に以下を追加し、サービス/コンテナを再起動します。

7.3 よくある障害と対策

障害 主な原因 推奨対処
Kerberos チケット取得失敗 サーバー時刻が AD と ±5 分以上ずれる NTP で時刻同期(w32tm /config /syncfromflags:manual /manualpeerlist:"time.windows.com"
keytab 読み込みエラー ファイル権限が過剰または不足 icacls C:\keycloak-25.0.2\conf\keycloak.keytab /grant svc_keycloak:R
Negotiate ヘッダー未送信 ブラウザホワイトリスト未設定 前述の GPO/レジストリ設定を再確認
TLS ハンドシェイク失敗 CA 証明書が keystore に未登録、またはパスワード不一致 keytool -list -keystore ... でエントリ有無とパスワードを検証

8. 導入後の運用・拡張ステップ

本ガイドで構築した基盤は 継続的な保守機能追加 が重要です。以下に推奨するアクションプランを示します。

8.1 設定情報と証明書の管理

  • 設定リポジトリ化keycloak.conf, krb5.conf, docker-compose.yml などは Git に保存し、変更履歴を残す。
  • 証明書有効期限監視:CA 発行の AD 証明書と Keycloak keystore の有効期間を定期的にチェックするスクリプト(例: certutil -store)を導入。

8.2 監視・アラート

  • ヘルスチェック/realms/master/protocol/openid-connect/token/introspect エンドポイントへ定期 GET。
  • Kerberos チケット失敗の通知:Keycloak の org.keycloak.events ロガーを WARN 以上に設定し、Prometheus + Alertmanager に転送。

8.3 ユーザー教育とサポート

  • 社内 Wiki に「Chrome/Edge の Negotiate 設定手順」や「パスワードリセットフロー」を掲載。
  • サービスデスク向けに SSO 動作確認シナリオ(正常系・異常系)をドキュメント化。

8.4 機能拡張例

拡張領域 内容 メリット
miniOrange クロスプロトコル認証 SAML ↔ OIDC ブリッジング 多様な SaaS アプリを統一的に保護
Entra ID(Azure AD)ブローカー連携 Keycloak → Entra ID を IdP に設定 クラウドサービスとのシームレス SSO
動的クレーム変換(Script Mapper) ユーザー属性のリアルタイム加工 カスタムビジネスロジックに対応

まとめ

  • 最新バージョンは公式サイトで随時確認し、Docker イメージと ZIP の両方を同じバージョンで統一してください。
  • Docker は docker compose(プラグイン)を使用し、Compose ファイルの記述ミスを防ぎます。
  • Windows Service 版は sc create コマンドの構文と実行ユーザー権限に注意し、サービス起動時のログを必ず確認してください。
  • TLS はデフォルトパスワード changeit を使用せず、強力な keystore パスフレーズで保護します。
  • SPNEGO の keytab 作成は ktpass -crypto AES256-CTS-HMACSHA1 など正しいオプションを指定し、ファイル権限も最小化してください。
  • すべての設定項目に 導入段落簡潔な説明文 を付与することで、読者が手順の目的とリスクを把握しやすくなります。

本ガイドに沿って構築・運用を行えば、Windows 環境でも安全かつスケーラブルな Keycloak + AD + Kerberos 認証基盤が実現できます。ぜひ実装後のフィードバックをご共有ください。

スポンサードリンク

-KeyCloak