DockerとKeycloakで世界最速OpenID Connect!!

こんにちは、サイオステクノロジー技術部 武井です。今回は、KeycloakのOfficialのDockerイメージを使って、KeycloakでOpenID ConnectのProviderと、ついでにSPを立てようかと思います。

きっかけ

よくAzure Active DirectoryをOpenID ConnectのProviderとして使います。今回、とある用途で、ローカルにOpenID ConnectのProviderを立てなければいけなくなり、そこでOSSのシングルサインオンシステムであるKeycloakを使ってみたいと思い、ちょっと試してみました。

やってみよう!!

では、実際にやってみたいと思います。KeycloakはOfficialのDockerイメージがあるので、それを使ってサクッと構築したいと思います。

SPの方はPHPのOfficialのDockerイメージを使って、Apacheのモジュールであるmod-auth-openidcをインスコして、OpenID ConnectのSP化をします。SPのアプリはPHPで作ります。

まず、Keycloakのホスト名をkeycloak、SPのホスト名をspとして、両方とも以下のようにlocahostと紐付けます。

 

次に、KeycloakはOfficialのDockerイメージを実行します。SPからKeycloakのOpenID Connectのメタデータを取得する関係でKeycloakとSPは同じネットワークにいなければいけません。なので、Dockerのネットワークを作成します。

 

KeycloakのOfficialのDockerイメージから、コンテナを起動します。

 

http://keycloak:8080/にアクセスして、Keycloakの管理画面を表示します。「Administration Console」をクリックします。

 

コンテナ起動時に環境変数で渡したユーザー名「admin」、パスワード「password」でログインします。

 

SPの定義をします。KeycloakではSPのことをClientと呼ぶらしいです。左部メニューの「Clients」をクリックして、右の方にある「Create」をクリックします。

 

「Client ID」に「test」と入力して、「Save」をクリックして下さい。

 

「Access Type」を「confidential」に変更します。そして、「Valid Redirect URIs」に「http://sp:8081/secure」と入力して、画面最下部までスクロールして、「Save」をクリックして下さい。

 

「Credentials」のタブをクリックして、「Secret」に表示されるものをメモします。これはOpenID ConnectのClient Secretです。

 

次にログインユーザーを作成します。画面左部メニューの「User」をクリックして、「Add user」をクリックして下さい。

 

ログインユーザー名をhogeとします。「Username」に「hoge」と入力して、「Save」をクリックして下さい。

 

「Credentials」のタブをクリックしてパスワードを設定します。「Password」に任意のパスワードを入力します。そして、「Temporary」のスイッチを「OFF」にします。これをすると、初回ログイン後にパスワードの変更が求められません。

 

最後の確認画面が出るので「Set password」をクリックして下さい。これでユーザーの作成は完了です。

 

次に、SPを構築します。これはPHPのOfficialのDockerイメージを使います。

 

SPのコンテナにログインして、mod-auth-openidcモジュールを入れて、OpenID ConnectのSP化をします。

 

mod-auth-openidcの設定ファイルである/etc/apache2/mods-enabled/auth_openidc.confを編集して以下の内容に置き換えます。

 

SPのアプリケーションを作成します。/var/www/html/secure/test.phpというファイルを作成して以下のように書きます。おなじみPHPの色んな設定を表示するアレです。

 

SPのコンテナを再起動して設定を反映させます。

 

さぁ、これで準備が整いました。SPのURLであるhttp://sp:8081/secure/test.phpにアクセスして下さい。ログイン画面が表示されますので、先程作成したユーザー名をパスワードを入力して、「Log In」をクリックして下さい。

 

毎度おなじみPHPの設定を表示する画面です。「PHP Variables」のところを見ていただきたいのですが、OpenID ConnectのTokenのClaim情報が表示されていますネ。

 

もうOpenID ConnectのProviderとSPができてしまいました。まさに世界最速ですネヮ(゚д゚)ォ!

まとめ

Keycloakとってもよさげな感じがします。もっと使い込んでKeycloakライフを満喫したいなと思います。No Keycloak,No Life!!

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*