Keycloakについて、名前を聞いたことがあり興味はあるが、
・具体的にKeycloakで何ができるのかわからない…。
・Keycloakの導入方法や使い方がわからない…。
と考える方は多いのではないでしょうか。そこでこの記事では、
・Keycloakの概要や特徴
・Keycloakのメリット、デメリット
・Keycloakの導入方法
についてわかりやすく解説します。
INDEX
今注目のOSS「Keycloak」とは?
Keycloakは、ID管理やアクセス管理(IAM)を実現するオープンソースソフトウェア(OSS)です。2014年にリリースされた比較的新しいソフトウェアですが、機能性と柔軟性の高さから近年注目が集まっています。
Keycloakでは、各種サービスのログイン機能の統合や、一度のログインで複数のアプリケーション・Webサイトにアクセスできるシングルサインオン(SSO)を実現できます。
また、ログイン機能を提供するだけでなく、システムやサービスをつなぐAPIのセキュリティも確保できます。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Keycloakはセキュリティ強化にも効果的
昨今の業務環境では、ユーザーが個々で管理すべきID情報が非常に多く、適切に管理できないことも少なくありません。そのような環境では、複雑化・高度化が進むサイバー攻撃に対する対応が困難になります。
しかし、Keycloakを用いることで、企業のITシステムにおける認証・認可管理を効率化し、セキュリティを向上させることが可能です。Keycloakは、ID管理を効率化させるだけでなく、セキュリティを強化するためのツールとしても利用できます。
項目 | 従来の業務 | Keycloak環境 |
---|---|---|
ユーザーID管理 | 複数ID・パスワードの手動管理 | IDの一元管理と自動同期 |
認証方法 | 個別のログインページ | シングルサインオン(SSO)で一括管理 |
セキュリティ対策 | 個別対応で一貫性に欠ける | 統合された高度なセキュリティ機能 |
管理者の負担 | 全ユーザー情報の手動管理が必要 | アクセス権や認証が自動化され、負担軽減 |
Keycloakの特徴
Keycloakは、企業のITシステムにおける認証・認可管理を効率化する強力なツールです。その特徴は、最新の標準規格への準拠、多様なアプリケーションでのシングルサインオン実現、IDの一元管理にあります。
ここではKeycloakの特徴を詳しく紹介します。
最新の標準規格に準拠
Keycloakは、シングルサインオンで広く使用されているOIDC(OpenID Connect)やOAuth 2.0、SAML 2.0といった最新の標準規格に準拠しており、高度なセキュリティと相互運用性を確保しています。
また、Keycloakは、より高度なAPIセキュリティレベルを要求されるシステムのガイドラインであるFAPI(Financial-grade API)の規格にも準拠しています。
これらの規格に準拠しているため、Keycloakは一般企業から金融分野まで、幅広い業界や用途で安心して使用可能です。
様々なアプリケーションでシングルサインオン可能
Keycloakを導入することで、ユーザーは一度認証すれば、様々なアプリケーションを追加の認証なしで使用できるようになります。この仕組みをシングルサインオン(SSO)といいます。
シングルサインオンによってユーザーの利便性は大幅に向上します。パスワード管理の負担も軽減されるだけでなく、脆弱なパスワードを利用することがなくなり、セキュリティも向上するでしょう。
さらに、GitHubやGoogleなどの既存のユーザーアカウントを利用したソーシャルログインにも対応しています。Keycloakによるシングルサインオンは、ユーザーにとってより使いやすい認証環境を実現することが可能です。
IDを一元管理
Keycloakの強力な機能の一つに、IDの一元管理があります。Keycloakで管理しているリソースへのアクセス権限などを一括で設定できるため、管理者の負担を大幅に軽減することが可能です。
ID管理の種類としては、ユーザー管理・グループ管理・ロール管理があり、これらを統合的に管理できます。
一元管理により、セキュリティポリシーの統一的な適用や、ユーザー権限の迅速な変更が可能です。KeycloakによるIDの一元管理は、組織全体のセキュリティ管理の効率化にもつながります。
KeycloakとOpenAMの違い
認証・認可の代表的なOSS製品として、Keycloakと比較されることの多いものに「OpenAM」が挙げられます。
OpenAMもKeycloakと同じくOSS製品として登場しましたが、2024年10月現在では主に商用版として提供されており、コミュニティベースの開発は行われていません。
Keycloakにも商用版は存在しますが、コミュニティベースの開発が活発に進められています。この点が大きな違いの一つです。
機能面で比較してみると、OpenAMの方がより多くの機能に対応しています。しかし、Keycloakは構成がシンプルな分、メンテナンスや機能の拡張がしやすいという点が特徴です。
OpenAMはOSSではなくなったこと、コードベースが巨大でメンテナンスなどが難しい、などの観点から、将来性はコミュニティベースの開発が活発なKeycloakの方があると見られています。
Keycloakは2023年4月にCloud Native Computing Foundation(CNCF)のプロジェクトに追加されたことからも、将来性の高さが見て取れるでしょう。
メリット | デメリット | |
---|---|---|
Keycloak |
・コミュニティベースの開発がある ・メンテナンス性が高く機能拡張しやすい |
・対応できる機能が少ない |
OpenAI | ・機能面が充実している |
・コミュニティベースの開発が無い ・メンテナンスが難しい |
Keycloakのメリット
近年、企業におけるKeycloakの導入が進む理由としては、次に挙げるようなメリットの存在が大きいといえます。
低コストで導入・運用できる
KeycloakはOSSとして提供されており、無償で利用できます。そのため、商用製品と比較して導入・運用コストを大幅に抑えることが可能です。
特に、中小企業や新興企業にとっては、高度な認証・認可システムを低コストで導入できるメリットが大きいといえます。
また、Keycloakは小規模なシステムから段階的に導入できるため、初期投資を抑えつつ、徐々に機能を拡張していくことが可能です。企業の成長に合わせて柔軟にシステムを拡張できる、という点も大きなメリットとなっています。
初心者でも扱いやすいGUI
Keycloakは、初心者でも直感的に操作できるわかりやすいGUI(Graphical User Interface)を搭載しています。
Keycloakの管理コンソールは、ユーザー管理・ロール設定・クライアント設定などの複雑な操作を、グラフィカルな管理画面から簡単に行えます。そのため、専門的な知識がなくても、システム管理者が効率的に認証・認可の設定を行うことが可能です。
また、開発者向けのCLI(Command Line Interface)も提供されており、自動化スクリプトの作成などの効率化も実現できます。
Keycloak & Spring Security。会員制ニュースアプリ 記事取得APIによるAPI認可入門講座
OAuth 2.0トークン発行フロー設定&ニュース記事取得REST API開発。PostmanとJSON Web Token (JWT)、ロールベースアクセス制御 (RBAC)によるAPI認可の仕組み
\無料でプレビューをチェック!/
講座を見てみる
Keycloakのデメリット
Keycloakは多くの優れた機能を持つ一方で、いくつかの制限や課題も存在します。ここでは、Keycloakを導入する際に考慮すべき主なデメリットについて説明します。
代理認証方式を取っていない
代理認証方式とは、ユーザーの代理としてログイン画面を検知して、ログイン情報を入力する「エージェント」を用いる方式です。
Keycloakは、SAMLやOpenID Connect(OIDC)などの主要なシングルサインオンプロトコルに対応していますが、独自に実装された認証方式には対応していません。この点は、特に既存のシステムとの統合を考える際に課題となる可能性があります。
例えば、社内で長年使用してきた独自の認証システムがある場合、Keycloakとの直接的な連携が困難になる可能性が考えられるでしょう。SAMLなどのシングルサインオンプロトコルに対応していないシステムでKeycloakによるシングルサインオンを実現したい場合、Keycloakが提供するライブラリである「クライアントアダプター」が必要になります。
リスクベース認証できない
リスクベース認証とは、ユーザーの行動パターンやデバイスの特性を分析し、通常と異なる状況を検出した場合に追加の認証を要求する機能です。例えば、普段と異なる場所からのログインや、キーボード入力パターンの変化を検知した際に、追加の認証ステップを要求することができます。
Keycloakはこのリスクベース認証に対応していません。この点は、特にセキュリティ要件の厳しい環境や、高度な認証プロセスを必要とする企業にとっては、重要な考慮事項となるでしょう。
Keycloakを選択する際は、これらの制限がシステムの要件や組織のセキュリティポリシーと適合するかどうかを慎重に評価する必要があります。
Keycloakの認証フロー
Keycloakは、認証や認可機能に用いられるOIDCやOAuthなどをサポートしており、認証・認可フローを管理できます。
ここでは、Keycloakの公式サイトに用意されているSPAテストアプリケーションを利用し、ローカル環境に構築したKeycloakでのOIDCの認可フローを以下の手順で解説していきます。
- OIDCと検証環境の概要
- 事前準備1:Keycloakのダウンロードと管理GUIの起動
- 事前準備2:Keycloakのレルム・クライアント設定
- 事前準備3:ユーザーの作成
- 事前準備4:Keycloakの日本語化
- 認証フローを実際に試す
OIDCと検証環境の概要
OIDC(OpenID Connect)は、サービス間でユーザー同意のもと認証情報を連携するための標準規格です。
今回の検証では、Windows 11のローカル環境にKeycloakを構築し、Keycloak Webサイトのテストアプリにログインしてみます。
具体的な認証フローは次の通りです。
- ユーザーがKeycloak(ローカル)のログイン情報でKeycloak(Web)へのログインを希望
- Keycloak(Web)からKeycloak(ローカル)にIDトークン・アクセストークンの発行を依頼
- Keycloak(ローカル)はユーザーに認証を求める
- ユーザー認証を受けてKeycloak(ローカル)はKeycloak(Web)にIDトークン・アクセストークンを生成・発行
- Keycloak(Web)はIDトークン・アクセストークンを利用してログインを許可
今回の環境は、Keycloakの認証フローを確認するためのものであるため、非常にシンプルなものとなっています。
事前準備1:Keycloakのダウンロードと管理GUIの起動
ここからは、実際にKeycloakをローカル環境に構築してみましょう。今回の環境はWindows 11、Keycloak 26.0.0で進めていきます。
まずは、Keycloakのサイトにアクセスし、keycloak-26.0.0.zipをダウンロードします。
ダウンロードしたファイルを適当な場所で展開してください。今回は「C:\keycloak-26.0.0」に展開しました。
コマンドプロンプトを開き、次のコマンドを実行してKeycloakのGUIを立ち上げます。
cd c:\keycloak-26.0.0 bin\kc.bat start-dev |
ログが出力され「~Listening on: http://0.0.0:8080」と出力されれば立ち上げ完了です。
ブラウザから「http://localhost:8080」にアクセスします。初回アクセス時は一時的な管理者ユーザーの作成が求められるため作成してください。
「User created」を表示されることを確認し、「Open Administration Console」ボタンをクリックします。
Keycloakのログイン画面が表示されるため、先程作成した管理者ユーザーでログインします。
事前準備2:Keycloakのレルム・クライアント設定
レルムとは、ユーザーや接続するデータストアなどをまとめる範囲のことであり、複数作成・管理することが可能です。組織やプロジェクト単位でレルムを分けるなどして用途に応じて柔軟に設計できます。
クライアントはRelying Party・Service Providerのことであり、1つのレルムのなかに複数のクライアントを作成できます。
それでは実際にレルムとクライアントを作成してみましょう。画面左の「Keycloak master」を選択し、「Create realm」ボタンをクリックします。
Realm nameに作成したいレムルの名前を入力し、「Create」ボタンをクリックしてください。
先ほど作成したレルムが選択されていることを確認し、続けてクライアントの作成に移ります。画面左からClientsを選択します。
Clients画面から「Create client」ボタンをクリックします。
Client typeを「OpenID Connect」とし、Client IDを入力して「Next」ボタンをクリックします。
Capability Config画面ではそのまま「Next」ボタンをクリックしてください。
次の画面では、それぞれ次のように入力し「Save」ボタンをクリックします。
Valid redirect URIs:https://www.keycloak.org/app/* Web origins:https://www.keycloak.org |
事前準備3:ユーザーの作成
続いてユーザーを作成していきます。画面左からUsersを選択してください。
Users画面で「Create new user」ボタンをクリックします。
Usernameなどの必要情報を入力し、「Create」ボタンをクリックします。
作成後、Credentialsタブから「Set password」ボタンをクリックしてください。
パスワードを入力し、TemporaryをOffにして「Save」ボタンをクリックします。
これで検証を進めるための事前準備は完了となります。
事前準備4:Keycloakの日本語化
Keycloakは日本語にも対応しています。もちろん、英語のままでも進めることはできるため、日本語化が不要な方は次のステップに進んでください。
言語の変更はレルムごとに行ないます。Keycloakの設定画面を日本語化したい場合は、レルムを「Keycloak master」に変更します。
画面左からRealm settingsを選択します。
Localizationタブを選択し、InternationalizationをEnableに変更します。
Supported localesにJapaneseを追加し、Default localeをJapaneseに変更して「Save」ボタンをクリックします。
設定後、一度サインアウトします。
ログイン画面で言語が選択できるようになりました。
ログインしてみると日本語化されていることが確認できます。
認証フローを実際に試す
ここまでに構築したKeycloak(ローカル)を使ってログインしてみましょう。
まずは「https://www.keycloak.org/app/」にアクセスし、サービスプロバイダー側の設定を行います。ここまでの手順通りに設定している場合、それぞれの入力内容は次の通りとなります。
Keycloak URL:http://localhost:8080 Realm:myrelm Client:myclient |
入力後、「Save」ボタンをクリックしてください。
「Sign in」ボタンをクリックし、Keycloak(Web)にログイン試行します。
Keycloak(ローカル)にリダイレクトされるため、先程作成したユーザーのログイン情報を入力してください。
初回ログイン時は、アカウント情報の更新が求められます。必要情報を入力して「送信(Submit)」ボタンをクリックしてください。
Keycloak(ローカル)の情報をもとにKeycloak(Web)にログインできたことが確認できます。
Keycloakを学んでユーザー管理を効率化しよう
近年、私たちが管理しなければならないID情報は非常に多くなっています。煩雑なID管理は利便性を損なうだけでなく、セキュリティ面でも不安が発生してしまうため、早急な対応が必要です。
Keycloakは機能性と柔軟性の高さから近年注目を集めており、様々なアプリケーションでのシングルサインオンを実現します。最新の標準規格にも対応しており、今後ますます利活用の機会が増えることでしょう。
この記事ではKeycloakの認証フローを理解しやすくするためにシンプルな検証環境の構築を解説しましたが、実際の利用環境はもっと複雑です。Keycloakについてより詳しく、実務に活かせる使い方を学びたい方には、Udemyの動画講座をおすすめします。
認証・認可の仕組みは複雑で、Keycloakに関する情報は多いとはいえ、調べながら進めると非常に手間がかかります。その点、Udemyの動画講座であれば、場所を問わずいつでも・どこでも学習を進められ、体系的に知識を身につけることが可能です。
以下の講座は、REST API開発やAPI認可について、実践的な知識を身につけたい方におすすめの講座です。
下記講座のレビューの一部をご紹介
評価:★★★★★
コメント:KeycloakとSpring Security連携の基礎が学べました。トークンベースの認可について実装も含め丁寧に説明していただき分かりやすかったです。
評価:★★★★★
コメント:扱っている内容自体は簡単ではないが、ニュース記事取得、という身近な話題を元にハンズオンが進むため難しさを感じることなく楽しく理解できました。
Keycloakの実践的な使い方を身につけましょう!
最新情報・キャンペーン情報発信中