シングルサインオン・ID連携

Keycloak きーくろーく

シングルサインオンOpenID ConnectOAuth 2.0アイデンティティ管理SAMLアクセス制御
Keycloakについて教えて

簡単に言うとこんな感じ!

Keycloakは「社内のいろんなアプリに、1回のログインでまとめてアクセスできるようにする」仕組みを無料で作れるソフトだよ。自分でサーバーに立ててID管理を一元化できる、いわば”自前の入館証受付窓口”なんだ!


Keycloakとは

Keycloak(キークローク)は、Red Hatが開発しオープンソースで公開しているアイデンティティ・アクセス管理(IAM: Identity and Access Management)のソフトウェアです。企業や組織が複数のアプリケーションに対して、シングルサインオン(SSO)ユーザー管理認証・認可の仕組みを自前で構築するために使われます。

「GoogleアカウントでログインしたらYouTubeもGmailも使える」というのがSSO(シングルサインオン)の典型例ですが、Keycloakはその仕組みを社内システム向けに自分たちで用意できるツールです。クラウドサービスに頼らず、自社サーバーや自社のクラウド環境に設置して運用できるのが大きな特徴です。

OpenID Connect・OAuth 2.0・SAML 2.0といった業界標準のプロトコルに対応しており、既存のさまざまなアプリやサービスと連携しやすいのも選ばれる理由のひとつです。ユーザーの登録・削除、パスワードポリシーの設定、多要素認証(MFA)の有効化なども、管理画面から操作できます。


Keycloakの主な機能と構造

Keycloakが提供する機能を一覧で確認しましょう。

機能カテゴリ具体的な内容
シングルサインオン(SSO)1度のログインで複数アプリにアクセス可能
ユーザー管理ユーザーの登録・削除・グループ管理
認証プロトコル対応OpenID Connect / OAuth 2.0 / SAML 2.0
ソーシャルログインGoogle・GitHub・Microsoft等のIDを使えるよう連携
多要素認証(MFA)ワンタイムパスワード(TOTP)などを追加可能
外部LD連携Active Directory / LDAPと接続してユーザー同期
管理コンソールブラウザからすべて設定できるGUI管理画面
クライアントアダプターJava・JavaScript・Node.js等向けのSDKを提供

Keycloakの「レルム」という概念

Keycloakではレルム(Realm)という単位で設定を管理します。レルムとは「テナント(入居者)」のようなもので、ユーザーグループやアプリケーションをまとめて管理する独立したスペースです。

Keycloakサーバー
├── レルム: 社内人事システム用
│   ├── ユーザー: 田中・鈴木・佐藤
│   ├── クライアント: 給与システム・勤怠システム
│   └── ポリシー: パスワード90日更新
└── レルム: パートナー企業向けポータル用
    ├── ユーザー: 外部パートナー各社
    ├── クライアント: 受発注ポータル
    └── ポリシー: MFA必須

たとえば「社員向けシステム」と「取引先向けポータル」を別のレルムで管理すれば、それぞれ独立した設定ができるので、混在するリスクがありません。

覚え方

Keycloak=鍵(Key)と外套(Cloak)」と覚えましょう。鍵で入室を管理し、外套でIDを包んで守る、というイメージです。「1本の鍵でどの部屋も開けられるようにする受付係」と思うと実務イメージが湧きやすいですよ。


歴史と背景

  • 2013年 — JBoss(後のRed Hat傘下)のコミュニティプロジェクトとしてKeycloakが誕生。エンタープライズ向けSSOの需要に応えるため開発開始
  • 2014年 — バージョン1.0リリース。OpenID ConnectとOAuth 2.0に対応
  • 2016年 — Red HatのエンタープライズSSO製品「RH-SSO(Red Hat Single Sign-On)」のベースとして採用。商用サポートが付いたRH-SSOとオープンソースのKeycloakの二本立てになる
  • 2019年 — Wildfly(JBoss Application Server)ベースで安定版を継続リリース
  • 2022年 — 軽量・高速なQuarkusベースへの移行を開始。クラウドネイティブ環境向けに刷新
  • 2023年 — Keycloak 21以降はQuarkusベースが正式メインストリームに。コンテナ(Docker・Kubernetes)での動作が容易になる
  • 2023年 — Red HatがRH-SSOのサポート終了を発表し、後継製品「Red Hat Build of Keycloak」へ移行。Keycloakとの一本化が進む

Keycloakとクラウドマネージドサービスとの比較

KeycloakのようにSSOやIAMを実現する手段はいくつかあります。大きな分類は「自前で構築(オンプレミス or セルフホスト)」か「クラウドのマネージドサービスを使う」かです。

比較項目Keycloak(セルフホスト)Auth0 / Okta(クラウドSaaS)Azure AD / Entra ID
コストソフト自体は無料(運用コストあり)ユーザー数課金(高額になりやすい)Microsoft 365と連携で実質込み
カスタマイズ性高い(テーマ・プラグイン自由)中程度低〜中
運用負担高い(自前でサーバー管理)低い(ベンダー任せ)中(AzureAD側は運用不要)
データ所在自社管理(国内サーバー可)クラウド側に保存Microsoftデータセンター
導入難易度やや高い低いMicrosoft環境ならば低い
向いている組織エンジニアリソースがある中〜大企業スタートアップ・少人数IT体制Microsoft製品中心の企業

Keycloakの認証フロー(SVG図解)

OpenID Connectを使ったKeycloakの認証フローを図にします。

ユーザー (ブラウザ) アプリケーション (クライアント) Keycloak (認証サーバー) ① アプリにアクセス ② Keycloakにリダイレクト ③ ログイン画面を表示(Keycloakのページ) ④ ID・パスワードを入力して送信 ⑤ 認証コードを発行しリダイレクト ⑥ コードをトークンに交換 ⑦ ログイン完了・コンテンツ表示

このフローが一度完了した後は、同じKeycloakで認証する別のアプリにアクセスしても再ログイン不要(SSO)になります。


関連する規格・RFC

規格・RFC番号内容
RFC 6749OAuth 2.0 認可フレームワークの仕様
RFC 6750OAuth 2.0 ベアラートークンの使用法
RFC 7519JWT(JSON Web Token)の仕様。Keycloakはトークンにこれを使用
RFC 7517JWK(JSON Web Key)仕様。公開鍵の配布に使用
RFC 8414OAuth 2.0 認可サーバーメタデータ(エンドポイント自動検出)

関連用語