Keycloak を利用して OpenID Connect ライブラリ (haskell-oidc-client) の動作確認をする

はじめに

昨年末に以下の Issue が来ていたことに気付いて修正したのですが,リリース前に Keycloak を用いて haskell-oidc-client の動作確認をできないか試したところ,とても簡単に実施できました.

github.com

今回はその方法をまとめたものです.

方法

Keycloak は Docker イメージが公開されています. hub.docker.com

ですから pull して起動すれば,(テスト目的であれば) すぐに利用可能です.

docker pull jboss/keycloak
docker run -d -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=test jboss/keycloak

docker logs -f を眺めながら起動完了を待った後,localhost:8080 にアクセスするとリダイレクト後に以下の画面が表示されます.Administrator Console からログインします. f:id:KrdLab:20200122011814p:plain

これより下で設定手順を説明しますが,あくまでも動作確認を目的とした簡易なものになっているため注意してください.


ログイン後,Clients から Create ボタンを押して Client ID/Secret を発行します.Add Client 画面で項目を埋めて Save し, f:id:KrdLab:20200122010646p:plain

Settings タブから Access Type を credential に変更,かつ Valid Redirect URIs を Relying Party のコールバック URL に変更します. 変更を保存すると Credentials タブが出現して Secret を取得できるようになります. f:id:KrdLab:20200122011050p:plain

次に Users からログイン用のユーザーを作成します.Email や各種 Name フィールドは設定しておいた方がテストの時に躓きません.パスワードは Save 後の Credentials タブから設定可能です. f:id:KrdLab:20200122011214p:plain

またデフォルトでは profile スコープに name が含まれていません.Client Scopes から profile を選択し,Mappers タブから name を追加します. f:id:KrdLab:20200122011342p:plain

以上で最低限の IdP として動作します.デフォルトの状態で Issuer Location は http://localhost:8080/auth/realms/master です.テストコードに設定して動作確認を開始しましょう.

おわりに

今回の実験でずいぶんと簡単に試せることが分かりました.Admin REST API があるみたいなので,ライブラリの API 仕様テストを自動化できないか試行錯誤したいと思います.

参考情報