概要
- KeycloakとDrupal8の連携方法をまとめます。
- Keycloakのアカウントを使ってDrupal8で構築されたサイトにログインできるようにします。
前提
- Keycloakの前提
- Keycloakを構築済み
- レルムを作成済み (本稿ではレルム名を "
demo
"とします)
→ レルムの作成方法については、「Keycloakのレルムとユーザの作成方法」をご覧ください。 - レルムにユーザアカウントを作成済み
- Drupal8の前提
- Drupal8のサイトを構築済み
- ユーザアカウントを作成済み
- OpenID Connectを使って連携します
手順
1. Keycloakの設定
- Keycloakに管理者アカウントでログインし、レルムが正しいことを確認します。
- OpenID Connectのクライアントを新たに作ります。
左のメニューから、Cliants をクリックし、表示された画面の [Create]ボタンをクリックします。 - 以下の情報を入力し、[Save]ボタンをクリックします。
- Client ID
- "drupal8"
※任意の名前を設定できます。
Client IDは、ログイン画面のURLに含まれます。
- "drupal8"
- Client Protocol
- "openid-connect"
- Client Template
- ※空欄にする
- Root URL
- 例)"http://drupal.example.com/"
※Drupal8サイトのURLを入力します。
- 例)"http://drupal.example.com/"
- Client ID
- 新しいクライアントが作成されたことを確認します。
- Clinetsの画面でも確認することができます。
Client IDの列の「drupal8」をクリックすると、クライアントの設定画面が表示されます。 - drupal8のSettingsタブで以下を入力して、[Save]ボタンをクリックします。
- Access Type
- "confidential"
- Valid Redirect URIs
- 例)"http://drupal.example.com/openid-connect/keycloak"
- Admin URL
- 例)"http://drupal.example.com/"
- Web Origins
- 例)"http://drupal.example.com/"
- Access Type
- Client「Drupal8」のCredentialsタブをクリックして、表示された画面の「secret」の値をコピーして、メモ帳などにメモしておきます。(あとで使います)
- Keycloakの設定はこれで終わりです。
次はDrupal8の設定を行います。
2. Drupal8の設定
2-1. 必要モジュールのインストール
-
Drupal8のサイトに管理者としてログインしてください。
- 管理用メニューから、「機能拡張」をクリックして、[+新しいモジュールをインストール]のボタンをクリックします。
- 以下の2つのモジュールをインストールします。
- まずはopenid_connectからインストールします。
リンクをクリックして、表示されたDrupalコミュニティの画面を下にスクロールすると、「tar.gz」ファイルのダウンロードリンクがあります。
今回はDrupal8を使っているので、「8.x」のバージョンのリンクを右クリックして、リンクのアドレスをコピーします。 - Drupalの「新しいモジュールをインストール」の画面に戻り、「次のURLからインストールする」のテキストボックスに、tar.gzのURLを貼り付けて、[インストール]ボタンをクリックします。
- インストール完了画面が表示されたら成功です。
続けて、keycloakモジュールもインストールするので、「別のモジュールをインストール」をクリックします。 - 同様に、keycloakモジュールのページから、8.xのモジュールのリンクアドレスをコピーします。
- Drupalの「新しいモジュールをインストール」の画面に戻り、「次のURLからインストールする」のテキストボックスに、tar.gzのURLを貼り付けて、[インストール]ボタンをクリックします。
- 「インストールは正常に終了しました。」が表示されたら、インストールは完了です。
次は、インストールしたモジュールを有効にするので、「新しく追加されたモジュールを有効にします」をクリックします。 - インストールした2つのモジュールを見つけて、チェックボックスをONにします。そして、[インストール]ボタンをクリックします。
検索ボックスに「openid」と入力すると見つけやすくなります。 - 「2個のモジュールが有効化されました: Keycloak Integration, OpenID Connect 。」と表示されたら、成功です。
2-2. openid connect設定
- 管理者メニューの環境設定より「OpenID Connect」リンクをクリックします。
- 「Enabled OpenID Connect clients」で"keycloak"をチェックします。
- 以下の項目を入力します。
- Client ID
- "drupal8"
- Client secret
- ※Keycloakのクライアントdrupal8のsecret
- Keycloak base URL
- ※「https://example.com/」をご自分のKeycloakのドメインに変更します。例)"http://keycloak.example.com:8080/auth"
- Keycloak realm
- ※実際のレルム名に変更します。
- "demo"
- Authorization endpoint
- ※「https://example.com/」をご自分のKeycloakのドメインに、「example-realm」を実際のレルム名に変更します。
- 例)"http://keycloak.example.com:8080/auth/realms/demo/protocol/openid-connect/auth"
- Token endpoint
- ※「https://example.com/」をご自分のKeycloakのドメインに、「example-realm」を実際のレルム名に変更します。例)"http://keycloak.example.com:8080/auth/realms/demo/protocol/openid-connect/token"
- UserInfo endpoint
- ※「https://example.com/」をご自分のKeycloakのドメインに、「example-realm」を実際のレルム名に変更します。例)"http://keycloak.example.com:8080/auth/realms/demo/protocol/openid-connect/userinfo"
- Client ID
- 以下の3つのチェックをONにして、[設定を保存]ボタンをクリックします。
- Override registration settings
- Save user claims on every login
- Automatically connect existing users
- 「設定オプションが保存されました。」と表示されたら、成功です。
2-3. openid connectブロックの追加
- 管理者メニューのサイト構築より「ブロックレイアウト」リンクをクリックします。
- openid connectブロックを任意のリージョンに追加します。
※下図では「Sidebar second」に追加しています。
動作確認
- Drupal8サイトの管理者をログアウトし、トップ画面の右側にある「login with keycloak」ボタンをクリックします。
- 表示されるkeycloakのログイン画面でユーザ名とパスワードを入力して、[Log in]ボタンをクリックします。
- Keycloakでログインが成功すると、Drupal8サイトもログイン成功となります。
右上の「アカウント情報」をクリックして、ログインしているユーザを確認してみましょう。 - Keycloakでログインしたユーザで、Drupal8のサイトにログインできていることが確認できました。
- これで、KeycloakとDrupal8の連携ができました。
トラブルシューティング
もしうまく動作しない場合は、今までの設定に間違いがなかったか確認してみましょう。
それでもうまくいかない場合は、Drupal8のレポートを見て、どこに問題があるのか確認してみましょう。
- Drupal8サイトに管理者ログインして、管理メニューの「レポート」画面の「Recent log messages」をクリックします。
- 「openid_connect_keycloak」に関するログを見つけて、クリックします。
- 「Message」の内容を頼りに、問題がありそうな箇所を修正します。
※下図の場合、「Could not resolve host: keycloak.example.com; Name or service not known」(ホスト名が解決できない)なので、例えば、「/etc/hosts」にKeycloakサーバのドメインを記載するなどの解決策が考えられます。
今回の説明は以上になります。
最後まで読んでいただき、ありがとうございました。
- 閲覧数 798
コメントを追加