はい、承知いたしました。
初心者向けにKeycloakとGitHubを連携させる手順を詳細に解説する記事を作成します。約5000語のボリュームで、設定からログインまでを網羅します。
【初心者向け】KeycloakとGitHub連携入門!設定からログインまでを徹底解説
はじめに
「Webサービスのログイン、毎回IDとパスワードを入力するのが面倒…」
「開発しているアプリケーションに、安全で高機能な認証機能を簡単に追加したい…」
このような悩みを抱えている開発者やインフラエンジニアの方、そして認証技術に興味を持ち始めたあなたに、本記事は最適なガイドとなります。
この記事では、オープンソースのID・アクセス管理ソリューションである Keycloak と、多くの開発者が利用する GitHub を連携させ、GitHubアカウントを使ってアプリケーションにログインする(ソーシャルログイン) 方法を、ゼロから丁寧に解説します。
この記事で学べること
- Keycloakの基本的な概念と使い方
- Dockerを使ったKeycloak環境の簡単な構築方法
- GitHub OAuth Appの作成と設定
- KeycloakとGitHubを連携させる具体的な手順
- 実際にGitHubアカウントでログインするまでの流れ
- よくあるトラブルとその解決策
専門用語は都度かみ砕いて説明し、豊富な解説を交えながら進めていきますので、認証技術の初心者でも安心して読み進めることができます。この記事を読み終える頃には、あなたはKeycloakを使ったソーシャルログインの仕組みを理解し、自身で実装できるスキルを身につけているでしょう。
さあ、面倒な認証機能の実装から解放され、より本質的な開発に集中するための第一歩を踏み出しましょう!
第1章: Keycloakとは?なぜGitHubと連携するのか?
具体的な設定に入る前に、まずは「Keycloakとは何か」「なぜGitHubと連携すると便利なのか」という基本的な部分を理解しておきましょう。
Keycloakの概要
Keycloak(キークローク)は、Red Hat社が開発を主導する、Java製のオープンソースIDおよびアクセス管理(IAM: Identity and Access Management)ソリューションです。簡単に言えば、アプリケーションの「ログイン」や「ユーザー管理」に関する面倒な部分をすべて肩代わりしてくれる、非常に強力なツールです。
もしKeycloakを使わずに認証機能を自前で実装しようとすると、以下のような多くの課題に直面します。
- パスワード管理: 安全なハッシュ化、ソルトの利用、定期的な変更促進など、セキュリティ要件は年々複雑化しています。
- セッション管理: ログイン状態を安全に維持し、不正アクセスを防ぐ仕組みが必要です。
- ユーザー登録・情報変更・パスワードリセット: これらの基本的な機能も、一から作るのは大変な手間です。
- 新しい認証方式への対応: 多要素認証(MFA)やパスキー(Passkeys)など、新しい技術に追従し続けるのは困難です。
- ソーシャルログイン: Google, Facebook, Twitter, GitHubなど、各社の仕様に合わせて個別に実装する必要があります。
Keycloakは、これらの機能をすべて標準で提供してくれます。開発者は、Keycloakが用意したログイン画面やAPIを利用するだけで、堅牢で高機能な認証システムを自分のアプリケーションに組み込むことができるのです。
Keycloakの主な機能
- シングルサインオン (SSO): 一度のログインで、連携する複数のアプリケーションにログインできる仕組み。
- アイデンティティ・ブローカリングとソーシャルログイン: Google, Facebook, GitHubなどの外部IDサービス(IdP: Identity Provider)と連携し、それらのアカウントでログインする機能。今回挑戦するのはコレです!
- ユーザーフェデレーション: LDAPやActive Directoryなど、既存のユーザーデータベースと連携する機能。
- 多要素認証 (MFA): パスワードに加えて、ワンタイムパスワード(OTP)アプリなどを使った追加認証を要求できます。
- クライアントアダプター: Java, JavaScript, Python, Goなど、様々な言語・フレームワーク向けのライブラリが提供されており、アプリケーションとの連携を容易にします。
GitHub連携のメリット
では、数あるソーシャルログインの中でも、なぜGitHubとの連携が特に注目されるのでしょうか。それには、ユーザーと開発者/管理者の双方にとって大きなメリットがあるからです。
ユーザーにとってのメリット
- 利便性の向上: 普段から使い慣れているGitHubアカウントでログインできるため、新しいIDとパスワードを覚える必要がありません。サービスごとに異なるパスワードを管理する手間から解放されます。
- 登録の手間の削減: GitHubに登録済みの名前やメールアドレスを流用できるため、新規登録フォームへの入力項目が最小限で済みます。
開発者/管理者にとってのメリット
- 開発者向けサービスとの親和性: あなたが開発しているアプリケーションが、もし開発者向けのツールやサービスであれば、ターゲットユーザーの多くは既にGitHubアカウントを持っています。そのため、ユーザー登録のハードルを劇的に下げることができます。
- 信頼性の高い認証基盤の利用: GitHubは二要素認証(2FA)など、強力なセキュリティ機能を提供しています。その認証基盤を間接的に利用することで、自前で同等のセキュリティレベルを確保するよりも遥かに安全かつ簡単です。
- 実装コストの削減: Keycloakを使えば、GitHubとの連携は管理画面上の設定だけで完了します。OAuth 2.0の複雑なフローを自分でコーディングする必要はありません。
連携の仕組み(OAuth 2.0 / OpenID Connect 超入門)
KeycloakとGitHubの連携は、OAuth 2.0 と OpenID Connect (OIDC) という標準技術に基づいています。ここでは、その仕組みをざっくりと理解しておきましょう。
登場人物:
- あなた (ユーザー): アプリケーションを使いたい人。
- クライアントアプリケーション: あなたがログインしたいWebサービスやアプリ。
- Keycloak (認可サーバー / IdP): ユーザーを認証し、「この人は本人ですよ」という証明書を発行する役目。今回は、GitHubへの「仲介役」も担います。
- GitHub (外部アイデンティティプロバイダー / IdP): 実際にIDとパスワードを検証し、本人確認を行う役目。
連携の流れ (認可コードフロー):
少し複雑に見えますが、流れを追ってみましょう。
- (ユーザー → アプリ): あなたがアプリケーションの「GitHubでログイン」ボタンを押します。
- (アプリ → Keycloak): アプリケーションは、「この人がログインしたいそうなので、認証をお願いします」とKeycloakに依頼(リダイレクト)します。
- (Keycloak → GitHub): Keycloakは、自分ではGitHubのユーザーを直接認証できないので、「この人の認証をお願いします」と、さらにGitHubに依頼(リダイレクト)します。
- (ユーザー ⇔ GitHub): あなたのブラウザにGitHubのログイン画面が表示されます。あなたはIDとパスワードを入力してログインし、「このアプリケーションに情報を提供することを許可しますか?」という画面で「許可(Authorize)」ボタンを押します。
- (GitHub → Keycloak): GitHubは「この人は本人確認OKでした」という証拠として、認可コード をKeycloakに渡します。
- (Keycloak → GitHub): Keycloakは、受け取った認可コードを使い、裏側でGitHubと通信してアクセストークンやユーザー情報(名前、メールアドレスなど)を取得します。
- (Keycloak → アプリ): Keycloakは、GitHubから得た情報をもとに、自身のデータベースにユーザーを作成または更新します。そして、アプリケーションに対して「認証OKです」という証拠のトークン(IDトークン、アクセストークン)を発行します。
- (アプリ): アプリケーションは、Keycloakから受け取ったトークンを検証し、正しければあなたをログイン状態にします。
ポイントは、アプリケーションやKeycloakには、あなたのGitHubのパスワードは一切渡らないということです。認証の実際の処理はGitHubのサイト上で行われ、その結果だけが安全に連携されます。これがOAuth 2.0/OIDCの非常に優れた点です。
この章で、KeycloakとGitHub連携の「なぜ」と「どのように」のイメージが掴めたでしょうか。次の章からは、いよいよ実践編です!
第2章: 準備するもの
手を動かし始める前に、必要なものを揃えましょう。今回のチュートリアルでは、なるべくシンプルに進めるために、以下の3つを用意します。
1. Keycloak環境 (Docker)
Keycloakを動かすためのサーバー環境が必要です。しかし、サーバーを一台用意するのは大変なので、今回はDockerを使って、あなたのPC上で簡単にKeycloakを起動します。
Dockerがまだインストールされていない場合は、公式サイトからお使いのOS(Windows, Mac, Linux)に合ったものをインストールしてください。
- Docker Desktop 公式サイト: https://www.docker.com/products/docker-desktop/
2. GitHubアカウント
当然ながら、連携するためのGitHubアカウントが必要です。もしまだ持っていない場合は、この機会に作成しておきましょう。
- GitHub公式サイト: https://github.com/
3. サンプルアプリケーション (Keycloak組み込み機能)
「連携を確認するためのアプリも作らないといけないの?」と心配になったかもしれません。ご安心ください。
今回は、Keycloakに標準で組み込まれている「アカウント管理コンソール」を、クライアントアプリケーションの代わりとして利用します。これにより、別途アプリケーションをコーディングする手間を省き、純粋にKeycloakとGitHubの連携設定に集中することができます。
準備はこれだけです。非常にシンプルですね。では、早速Keyanut-shellていきましょう。
第3章: ステップ1 – Keycloakの起動と初期設定
まずは、認証システムの心臓部となるKeycloakを起動します。
DockerでKeycloakを起動する
ターミナル(Windowsの場合はPowerShellやコマンドプロンプト)を開き、以下のコマンドを一行ずつ実行してください。
bash
docker run -p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
--name keycloak-github-demo \
quay.io/keycloak/keycloak:latest \
start-dev
このコマンドが何をしているのか、少し解説します。
docker run
: Dockerコンテナを新しく作成して起動する命令です。-p 8080:8080
: あなたのPC(ホスト)の8080
番ポートを、Dockerコンテナ内のKeycloakが動いている8080
番ポートに接続します。これにより、http://localhost:8080
でKeycloakにアクセスできるようになります。-e KEYCLOAK_ADMIN=admin
: Keycloakの管理者ユーザー名をadmin
に設定する環境変数です。-e KEYCLOAK_ADMIN_PASSWORD=admin
: Keycloakの管理者パスワードをadmin
に設定する環境変数です。(注意: これはデモ用の簡単なパスワードです。本番環境では絶対に使用しないでください!)--name keycloak-github-demo
: コンテナにkeycloak-github-demo
という分かりやすい名前を付けています。quay.io/keycloak/keycloak:latest
: ダウンロードしてくるKeycloakのDockerイメージを指定しています。latest
は最新バージョンを意味します。start-dev
: 開発モードでKeycloakを起動するコマンドです。これにより、HTTPS化などの本番向け設定を省略して手軽に起動できます。
コマンドを実行すると、Dockerイメージのダウンロードが始まり、その後Keycloakの起動ログが大量に流れます。最終的に以下のようなログが表示されれば、起動成功です。
...
... Keycloak 2X.X.X on JVM (powered by Quarkus ...) started in XX.XXXs. ...
... Listening on: http://0.0.0.0:8080
...
Keycloak管理コンソールへのアクセス
Webブラウザを開き、アドレスバーに http://localhost:8080
と入力してください。Keycloakのウェルカムページが表示されるはずです。
中央にある “Administration Console” をクリックします。
ログイン画面が表示されるので、先ほどDockerコマンドで設定した管理者アカウント情報を入力します。
- Username:
admin
- Password:
admin
入力して “Sign In” ボタンを押すと、Keycloakの管理コンソールのダッシュボードが表示されます。これでKeycloakの城に足を踏み入れることができました!
レルム (Realm) の作成
Keycloakでは、レルム (Realm) という単位でユーザーやアプリケーション(クライアント)を管理します。レルムは、それぞれが独立した王国のようなもので、あるレルムのユーザーは、他のレルムのアプリケーションには原則としてログインできません。
ログイン直後は master
レルムにいます。このレルムはKeycloak自体を管理するための特別なレルムなので、普段のアプリケーション用の設定は、新しく専用のレルムを作成して行うのがベストプラクティスです。
- 画面左上の
master
と表示されている部分にカーソルを合わせると、ドロップダウンメニューが表示されます。 -
“Create Realm” ボタンをクリックします。
-
“Create new realm” の画面で、以下の情報を入力します。
- Realm name:
github-demo
(任意の分かりやすい名前でOKです)
- Realm name:
- 入力したら、“Create” ボタンを押します。
これで github-demo
という名前の新しいレルムが作成され、自動的にそのレルムの管理画面に切り替わります。画面左上が github-demo
になっていることを確認してください。
これでKeycloak側の基本的な準備は完了です。
第4章: ステップ2 – GitHubでOAuth Appを作成する
次に、Keycloakが連携するための窓口となる「OAuth App」をGitHub上に作成します。
GitHub Developer settingsへ移動
- GitHubにログインした状態で、右上の自分のアイコンをクリックし、ドロップダウンメニューから “Settings” を選択します。
- 左側のメニューを一番下までスクロールし、“Developer settings” をクリックします。
- 左側のメニューから “OAuth Apps” を選択し、右上の “New OAuth App” ボタンをクリックします。
OAuth Appの設定
“Register a new OAuth application” というフォームが表示されるので、以下の項目を埋めていきます。
-
Application name:
- 連携時にユーザーに表示されるアプリケーション名です。分かりやすい名前を付けましょう。
- 例:
My Keycloak Demo
-
Homepage URL:
- アプリケーションのトップページのURLです。今回はKeycloakのURLを指定します。
http://localhost:8080/realms/github-demo/account/
- (
github-demo
の部分は、あなたが作成したレルム名に置き換えてください)
-
Application description:
- アプリケーションの説明です。任意なので、空欄でも構いません。
-
Authorization callback URL:
- ここが最も重要な設定項目です。
- これは、ユーザーがGitHubでの認証を許可した後に、GitHubがユーザーをリダイレクトさせる(戻す)先のURLです。このURLはKeycloak側で指定されているため、Keycloakの管理画面で確認する必要があります。
- しかし、現時点ではまだそのURLが分かりません。そこで、一旦、Homepage URLと同じ値を仮で入力しておきます。 後で正しいURLに修正するので、ご安心ください。
http://localhost:8080/realms/github-demo/account/
すべての項目を入力したら、“Register application” ボタンをクリックします。
Client ID と Client Secret の取得
アプリケーションが正常に登録されると、そのアプリケーションの詳細ページに移動します。
この画面に表示されている以下の2つの情報が、Keycloakとの連携に必要不可欠です。
- Client ID: アプリケーションを識別するための公開情報です。
- Client Secret: アプリケーションの”パスワード”のようなものです。これは絶対に外部に漏らしてはいけない、非常に重要な情報です。
“Generate a new client secret” ボタンをクリックして、Client Secretを生成してください。
この Client ID と Client Secret は、次のステップでKeycloakに設定しますので、このページは開いたままにしておくか、安全な場所にコピーしておきましょう。
これでGitHub側の準備も整いました。
第5章: ステップ3 – KeycloakでGitHubをIdPとして設定する
いよいよ、KeycloakとGitHubを繋ぎ合わせる設定を行います。このステップが連携の核心部分です。
Keycloakでアイデンティティプロバイダーを追加
- Keycloakの管理コンソールに戻ります。(
http://localhost:8080
) - 左側のメニューが
github-demo
レルムになっていることを確認してください。 - 左側のメニューから “Identity Providers” をクリックします。
- “Add provider…” と書かれたドロップダウンリストをクリックし、その中から “GitHub” を選択します。
GitHubプロバイダーの設定
“Add GitHub provider” の設定画面が表示されます。ここに、先ほどGitHubで取得した情報を入力していきます。
1. Redirect URI の確認とGitHubへの設定(最重要)
設定フォームの一番上に “Redirect URI” という項目があります。これが、先ほどGitHubの “Authorization callback URL” に設定すべき「正しいURL」です。
このURLは、以下のような形式になっています。
http://localhost:8080/realms/github-demo/broker/github/endpoint
- この “Redirect URI” の右側にあるコピーアイコンをクリックして、URLをクリップボードにコピーします。
- 先ほど開いていたGitHubのOAuth App設定ページに戻ります。
- “Authorization callback URL” の欄に、コピーしたURLを貼り付けます。
- ページ下部の “Update application” ボタンをクリックして、変更を保存します。
この作業により、GitHubは認証が成功したユーザーを正しくKeycloakへ送り返すことができるようになります。このURLが一致していないと、redirect_uri_mismatch
というエラーが発生する原因になります。
2. Client ID と Client Secret の入力
Keycloakの設定画面に戻り、以下の項目を入力します。
-
Client ID:
- GitHubのOAuth App詳細ページで取得した Client ID を貼り付けます。
-
Client Secret:
- GitHubのOAuth App詳細ページで取得した Client Secret を貼り付けます。
3. スコープの設定
- Default Scopes:
- KeycloakがGitHubに要求する権限(情報)の範囲を定義します。デフォルトでは
read:user
などが設定されていますが、これだけだとユーザーのメールアドレスを取得できません。 - 入力欄にカンマ区切りで
user:email
を追加しましょう。 - 最終的な値:
read:user,user:email
(カンマの後にスペースは入れないでください)
- KeycloakがGitHubに要求する権限(情報)の範囲を定義します。デフォルトでは
4. 設定の保存
その他の設定は、ひとまずデフォルトのままで問題ありません。
ページ下部にある “Create” ボタンをクリックして、設定を保存します。
これで、github-demo
レルムは、GitHubをアイデンティティプロバイダー(IdP)として利用できるようになりました。Identity Providersの一覧に “GitHub” が追加され、Enabled
がONになっていることを確認してください。
すべての設定が完了しました!最後のステップでは、実際にこの連携が機能するかどうかをテストします。
第6章: ステップ4 – ログインフローの確認と動作テスト
ついに、努力が実を結ぶ瞬間です。実際にGitHubアカウントを使って、Keycloakの保護下にあるアプリケーション(今回はアカウント管理コンソール)にログインしてみましょう。
ログインページへのアクセス
連携をテストするために、github-demo
レルムのログインページにアクセスする必要があります。今回はクライアントアプリケーションとしてレルム標準の「アカウント管理コンソール」を利用します。
そのURLは以下の通りです。
http://localhost:8080/realms/github-demo/account/
(github-demo
の部分は、あなたが作成したレルム名に置き換えてください)
このURLをブラウザのアドレスバーに直接入力してアクセスしてください。
すると、見慣れたKeycloakのログインフォームが表示されますが、フォームの下に注目してください。
「Or sign in with」というセクションに、見慣れたGitHubのロゴと「GitHub」というボタンが追加されています!
このボタンが表示されていれば、KeycloakとGitHubの連携設定は正しく行われています。
GitHubアカウントでのログイン実践
それでは、実際にログインしてみましょう。
-
「GitHub」ボタンをクリックします。
-
ブラウザがGitHubのサイトにリダイレクトされます。ここで、あなたが作成したOAuth Appが、あなたのGitHubアカウント情報へのアクセスを求めてきます。
- もしGitHubにログインしていない場合は、先にGitHubのログイン画面が表示されます。
- “Authorize (アプリケーション名)” という緑色のボタンが表示されます。内容を確認し、“Authorize” ボタンをクリックします。
-
認可が完了すると、ブラウザは自動的にKeycloakにリダイレクトされます。
-
初回ログイン時のユーザー情報確認
- このアカウントで初めてログインする場合、Keycloakは「このGitHubユーザーを、新しいKeycloakユーザーとして登録しますよ。情報に間違いはないですか?」と確認を求めてきます。
- これは “First Login Flow” というKeycloakの機能によるものです。
- GitHubから取得したEmail, First name, Last nameが自動で入力されています。内容を確認し、問題がなければ “Submit” ボタンをクリックします。
-
ログイン成功!
- 無事に認証が完了すると、Keycloakのアカウント管理コンソールのページが表示されます。「Welcome, (あなたのGitHub名)」のように表示されていれば、ログイン大成功です!
Keycloak側でのユーザー確認
最後に、管理者の視点で何が起こったのかを見てみましょう。
- Keycloakの管理コンソール(
http://localhost:8080
)に戻り、admin
アカウントでログインします。 github-demo
レルムが選択されていることを確認し、左側メニューから “Users” をクリックします。
すると、Usersの一覧に、先ほどログインしたあなたのGitHubアカウント情報に基づいた新しいユーザーが自動的に作成されていることが分かります。
作成されたユーザーのIDをクリックして詳細画面を開き、“Identity Provider Links” タブを選択してみてください。
ここには、このKeycloakユーザーがどのアイデンティティプロバイダー(今回はGitHub)にリンクしているかが記録されています。
これにより、次回以降あなたが同じGitHubアカウントでログインしようとすると、Keycloakは「ああ、このGitHubユーザーは、このKeycloakユーザーと同一人物だな」と認識し、新しいユーザーを作ることなく、既存のユーザーとしてログインさせてくれます。
お疲れ様でした!以上で、KeycloakとGitHubを連携させ、ソーシャルログインを実現するまでの一連の流れはすべて完了です。
第7章: トラブルシューティング
設定は慎重に行ったつもりでも、予期せぬエラーに遭遇することはあります。ここでは、初心者が陥りがちな典型的な問題とその解決策をまとめます。
ケース1: redirect_uri_mismatch
エラーが表示される
GitHubでの認可後、Keycloakに戻ろうとした際にエラーページが表示され、URLに error=redirect_uri_mismatch
といった文字列が含まれている場合。
-
原因:
- GitHubのOAuth Appに設定した “Authorization callback URL” と、Keycloakが期待している “Redirect URI” が完全に一致していません。
-
解決策:
- Keycloak管理コンソールの
Identity Providers
>GitHub
の設定画面を開き、”Redirect URI” を正確にコピーします。 - GitHubの
Developer settings
>OAuth Apps
> (対象アプリ) の設定画面を開きます。 - “Authorization callback URL” に、コピーしたURLを寸分違わず貼り付けます。
- URLの末尾に余計なスラッシュやスペースが入っていないか、
http
とhttps
が混在していないかなどを再度確認してください。 - GitHub側で設定を “Update application” して保存します。
- 再度ログインを試します。
- Keycloak管理コンソールの
ケース2: KeycloakのログインページにGitHubボタンが表示されない
ログインページにアクセスしても、ユーザー名とパスワードの入力欄しかなく、GitHubのログインボタンが見当たらない場合。
-
原因1:
- アイデンティティプロバイダーの設定が無効になっている。
-
解決策1:
- Keycloak管理コンソールの
Identity Providers
>GitHub
の設定を確認し、Enabled
スイッチがONになっていることを確認してください。OFFになっていたらONにして保存します。
- Keycloak管理コンソールの
-
原因2:
- (より高度なケースですが)クライアントの認証フローがカスタマイズされており、IdPリダイレクターが含まれていない。
-
解決策2:
Authentication
メニュー >Flows
タブを選択します。Browser
フローのコピーを作成し、そのフローにIdentity Provider Redirector
という実行タイプが追加されているか確認します。今回のチュートリアルではデフォルトのフローを使っているため、この問題は起こりにくいです。
ケース3: GitHubで認可後にエラーになる(Client ID/Secretの間違い)
GitHubでの認可は成功するものの、Keycloakに戻ってきたタイミングでエラーが発生する場合。
-
原因:
- Keycloakに設定したClient IDまたはClient Secretが間違っています。
-
解決策:
- Keycloak管理コンソールの
Identity Providers
>GitHub
の設定画面を開きます。 - GitHubのOAuth App設定ページを開きます。
- 両方のページの “Client ID” と “Client Secret” を慎重に見比べ、完全に一致しているか確認します。特にコピー&ペースト時に余計な文字が混入していないか注意してください。
- 正しい値をKeycloakに設定し直し、保存します。
- Keycloak管理コンソールの
ケース4: Dockerコンテナが起動しない、または停止する
docker run
コマンドを実行しても、すぐにコンテナが終了してしまう場合。
-
原因:
- ポート
8080
が既に使用されている。(例: 他の開発用サーバーが起動している) - Dockerデーモンが起動していない。
- PCのメモリやディスク容量が不足している。
- ポート
-
解決策:
- ポートの競合が疑われる場合は、
docker run
コマンドの-p
オプションを変更します。例えば、-p 8888:8080
のように変更し、http://localhost:8888
でアクセスします。 - Docker Desktopが起動しているか確認します。
- 不要なアプリケーションを終了し、リソースを確保してから再試行します。
docker logs keycloak-github-demo
コマンドで、コンテナが停止した直前のログを確認すると、原因のヒントが得られることがあります。
- ポートの競合が疑われる場合は、
第8章: 発展的なトピック
基本の連携ができるようになったら、さらにKeycloakを使いこなすための次のステップにも興味が湧いてくるかもしれません。ここでは、いくつかの発展的なトピックを簡単にご紹介します。
マッパー (Mapper) の設定
GitHubから取得した情報を、Keycloakのユーザー属性にどのように割り当てるか(マッピングするか)を細かく制御できます。
例えば、GitHubのプロフィールURL(html_url
)を、Keycloakユーザーのカスタム属性として保存したい場合、Identity Providers
> GitHub
の設定画面にある Mappers
タブから設定できます。Attribute Importer
を使って、GitHubのJSONレスポンス内の特定のフィールドを、Keycloakのユーザー属性にマッピングすることが可能です。
カスタムログインフロー
初回ログイン時に、単に情報を確認させるだけでなく、「利用規約への同意」チェックボックスを表示させ、同意しないと先に進めないようにする、といった独自の処理を追加できます。これは Authentication
> Flows
で新しいフローを定義し、それをIdPの “First login flow” に設定することで実現します。
本番環境での考慮事項
今回の start-dev
モードは、あくまで開発・学習用です。実際にサービスとして公開(本番運用)する場合は、以下のような点を考慮する必要があります。
- 本番モードでの起動:
start
コマンドで起動し、パフォーマンスとセキュリティを最適化します。 - データベース: デフォルトの組み込みデータベース(H2)ではなく、PostgreSQLやMySQLなどの外部データベースを利用してデータを永続化します。
- HTTPS化: 本番環境では通信の暗号化が必須です。リバースプロキシ(Nginxなど)を前段に配置してHTTPSを終端させ、Keycloakと正しく連携させる設定が必要です。
- ホスト名の適切な設定:
localhost
ではなく、公開するドメイン名をKeycloakに正しく設定することが、リダイレクトやトークンの検証で非常に重要になります。
まとめ
本記事では、KeycloakとGitHubを連携させ、ソーシャルログインを実現するまでの一連のプロセスを、初心者向けに詳細に解説しました。
Dockerでの簡単な環境構築から始まり、Keycloakのレルム作成、GitHubのOAuth App登録、そして両者を結びつけるアイデンティティプロバイダーの設定まで、一つ一つのステップを追いながら、実際にGitHubアカウントでログインするところまでを体験していただきました。
このチュートリアルを通じて、あなたは以下の重要なポイントを学んだはずです。
- 認証機能の外部委任: 面倒でリスクの高い認証処理を、Keycloakのような専門のソリューションに任せることの強力なメリット。
- ソーシャルログインの利便性: ユーザーと開発者の両方にとって、既存のアカウントを利用したログインがいかに便利であるか。
- 標準技術の力: OAuth 2.0やOIDCといった標準プロトコルが、異なるサービス間を安全に連携させるための共通言語として機能していること。
- Keycloakの柔軟性: 今回はGitHubとの連携でしたが、Keycloakは同様の手順でGoogle, Facebook, Twitterなど、他の多くのサービスとも連携できる高い柔軟性を持っています。
今日身につけたスキルは、あなたの今後の開発プロジェクトにおいて、ユーザー体験を向上させ、セキュリティを強化し、そして何よりもあなた自身の開発工数を大幅に削減するための強力な武器となります。
ここからさらに、自作のアプリケーションとKeycloakを連携させたり、他のソーシャルログインを追加してみたりと、学びを深めていくことをお勧めします。認証の世界は奥が深いですが、その入り口に立ったあなたは、もう初心者ではありません。
この記事が、あなたのKeycloakマスターへの道のりの、確かな一歩となったことを願っています。Happy coding