Keycloak は Red Hat が主導するオープンソースの IdP です。ライセンス費ゼロで SAML / OpenID Connect の両方に対応し、検証環境から本番の認証基盤まで幅広く使えます。ここでは SSO 環境構築の骨子を解説します。

まず起動する

開発用途なら Docker で即起動できます。

docker run -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:latest start-dev

http://localhost:8080/ の管理コンソールにログインして設定を始めます。本番では start-dev を使わず、DB(PostgreSQL 等)と TLS、KC_HOSTNAME を適切に設定します。

1. レルム(Realm)を作る

レルムは「ユーザー・クライアント・設定の独立した境界」です。master は管理専用とし、業務用に専用レルム(例:corp)を新規作成するのが定石です。

2. クライアント(アプリ)を登録する

SSO させたいアプリを「クライアント」として登録します。

  • Client type:OpenID Connect(または SAML)
  • Client ID:アプリ識別子
  • Valid redirect URIs:コールバック URL(例:https://app.example.co.jp/callback)。ワイルドカード乱用は避ける
  • Client authentication:サーバーサイドアプリは ON(機密クライアント)

OIDC の発行情報は Discovery で取得できます: http://localhost:8080/realms/corp/.well-known/openid-configuration

3. ユーザーとロール

  • ユーザーを手動作成、または LDAP / Active Directory 連携(User Federation)で同期
  • ロール・グループを定義し、トークンのクレームに載せてアプリ側の認可に使う

4. 外部 IdP との連携(Identity Brokering)

Keycloak を「ハブ」にして、Entra ID・Google などを上流 IdP にできます(Identity Providers 設定)。社内は Keycloak、認証実体は既存 IdP、という構成が可能です。

5. 本番運用の注意

  • TLS 必須(リバースプロキシ + 証明書。TLS短寿命化 に備えた更新自動化を)
  • DB の冗長化・バックアップ
  • アップグレード追従(Keycloak は更新が活発)
  • 監査ログの取得

まとめ

Keycloak は「自前で柔軟に作れる代わりに運用は自分持ち」の IdP です。マネージドの商用 IdP との比較は 主要IdP比較 / IdP比較表 を、アプリ側の実装は GoでOIDCログイン を参照してください。