💡

Drupal と Keycloak を連携してみる

2023/01/17に公開

最近 Keycloak を利用する機会があったので、Drupal と連携できないかということで試してみたことのメモ書きになります。Keycloak の解説だけでとんでもない物量になりそうなので、ある程度省略しつつ簡単な使い方だけ書いてみようと思います。
より突っ込んだ使い方含めた丁寧verはいずれ会社ブログの方で書くかもしれません(というより丁寧verを書く時間がなかなか取れずに3ヶ月4ヶ月経過してしまったので、先にこっちだけでも書いてみようと思った次第)。


今回使用するモジュール

Keycloak OpenID Connect

※↑のモジュール試してから見つけたけどこちらのほうがいいのかもしれない。

設定方法

※1. Drupal と Keycloak のセットアップは完了している体で説明します
※2. 一丁前にところどころマスクしてますが、ただ恥ずかしいだけです

Keycloak 側

  1. Administration Console にログイン
  2. Drupal と連携するレルムを選択(チュートリアルで大体Demoのレルムを作成するのでこちらを流用)
  3. サイドメニューのクライアントから Drupal と連携するクライアントを選択して詳細画面(設定タブ)に遷移(必要に応じて新規作成してください)
  4. Account settings の以下情報を設定
    • ルートURL(Drupal のサーバーパスを設定)
    • 有効なリダイレクトURI({サーバーパス名}/openid-connect/keycloak を設定、
      Drupal 側のモジュール設定画面の「転送先URL」の値が該当)
    • Valid post logout redirect URIs(ログアウト後に遷移するパスを設定)
  5. Capability Config でクライアント認証をオンにする
  6. クレデンシャルタブのクライアントシークレットの内容を控える(Drupal 側での設定に必要)
  7. サイドメニューのユーザーから Drupal にログインするためのアカウントを作成

Drupal 側

  1. 上述の Keycloak OpenID Connect モジュールをインストール
  2. 環境設定 > OpenID Connect に遷移
  3. Enabled OpenID Connect clients は Keycloak にチェック
  4. Client ID は Keycloak の該当クライアントのIDを設定
  5. Client Seacret は Keycloak の該当クライアントのシークレットを設定
  6. Keycloak base URL は Keycloak のサーバーパスを設定
  7. Keycloak realm は Keycloak の該当レルムを設定
  8. チェックボックス5点セットは以下の通りなので、必要なものにチェック
    • Update email address in user profile
      (メールアドレスの更新を反映するか)
    • Replace Drupal login with Keycloak single sign-on (SSO)
      (Drupal 側のログインを Keycloak のSSOに切り替えるか)
    • Enable Drupal-initiated single sign-out
      (Drupal でログアウトした際に Keycloak からログアウトするか)
    • Enable Keycloak-initiated single sign-out
      (Keycloak でログアウトした際に Drupal からログアウトするか)
    • Enable user role mapping
      (Keycloak で設定したユーザーロールを Drupal側のアカウントに適用するか)
  9. その下のチェックボックス2種も必要なものにチェック
    • Override registration settings
      (ユーザー作成や設定の変更に管理者承認が必要な場合でもそれをスキップして操作ができる)
    • Save user claims on every login
      (無効にすると、クレームはアカウント作成時のみ保存される)
  10. OpenID buttons display in user login form はお好きなものをどうぞ…

ログインしてみる

  1. ログイン画面に Log in with Keycloak のSSO用のリンクがあるのでクリック

  2. Keycloak 側で作成したユーザー情報を入力して Sign In をクリック

  3. Your kindness...

終わりに

ということで簡単なモジュールの使い方の説明は以上になります。
今回の範囲だけでも Keycloak の専門用語が結構出てきてしまった…
上記も補足しつつ、ユーザーロールマッピングの連携やセキュアな利用方法については別記事として書ければいいなあ…と思います。そのうちそのうち。。。

Discussion