2018年5月31日 Stian Thorgersen 著
この記事では、OpenShiftにKeycloakをデプロイする方法を説明します。また、Node.jsベースのRESTサービスとHTML5アプリケーションをOpenShiftにデプロイし、Keycloakで保護する方法も学びます。
この例を示すスクリーンキャストは、https://youtu.be/9zUWqbK3BqI でご覧いただけます。
OpenShiftをまだお持ちでない場合は、MiniShift を使用して始めるのが良いでしょう。
まず最初に、ocコマンドを実行してOpenShiftに新しいプロジェクトを作成します。
oc new-project keycloak
次に、KeycloakテンプレートをOpenShiftにインポートするために、以下を実行します。
oc replace --force -f "https://raw.githubusercontent.com/jboss-dockerfiles/keycloak"\ "/master/openshift-examples/keycloak-https.json"
OpenShiftコンソールを開き、keycloakプロジェクトを開きます。
「プロジェクトに追加」をクリックし、「カタログを閲覧」をクリックします。カタログ内でKeycloakを見つけてクリックします。
情報画面で「次へ」をクリックします。構成で、「Keycloak管理者ユーザー名」と「Keycloak管理者パスワード」フィールドに覚えやすいユーザー名とパスワードを設定します。次に「作成」をクリックします。「プロジェクト概要に進む」をクリックします。
デプロイが完了するのを待ってから、アプリケーションへのリンクをクリックします。ブラウザは自己署名証明書であるため、証明書について警告を表示します。これを無視して続行してください。「管理コンソール」をクリックし、先ほど入力したユーザー名とパスワードでログインします。後で必要になるので、このタブを開いたままにしてください。
これで、OpenShift上にKeycloakをデプロイしました。
保護するサービスとアプリケーションのためにクライアントを作成する必要があります。
Keycloak管理コンソールのタブを開きます。「クライアント」をクリックし、「作成」をクリックします。「クライアントID」に「service」と入力し、「保存」をクリックします。「アクセスタイプ」で「bearer-only」を選択し、「保存」をクリックします。
再度「クライアント」をクリックし、「作成」をクリックします。「クライアントID」に「app」と入力し、「保存」をクリックします。「有効なリダイレクトURI」と「Webオリジン」に「*」を入力します。本番環境では、アプリケーションの正しいURLを入力することが非常に重要ですが、これはデモンストレーションなので、ここでは簡単にするためにすべてのURLを許可します。デプロイ後、アプリケーションの正しいURLに簡単に更新できます。
後でまた必要になるので、Keycloak管理コンソールのタブを開いたままにしてください。
OpenShiftコンソールのタブに戻り、再度「プロジェクトに追加」をクリックし、「カタログを閲覧」をクリックします。今回は「Node.js」をクリックします。情報画面で「次へ」をクリックし、構成の下の「高度なオプション」をクリックします。
以下の変更を行います
「作成」をクリックし、「プロジェクト概要に進む」をクリックします。ビルドとデプロイが完了するのを待ってから、アプリケーションへのリンクをクリックします。「Not found!」と表示されるはずです。URLに「/service/public」を追加すると、JSONで「message: public」と表示されるはずです。
これで、サービスをデプロイして保護しました。後で必要になるので、このタブも開いたままにしてください。
OpenShiftコンソールのタブに戻り、再度「プロジェクトに追加」をクリックし、「カタログを閲覧」をクリックします。今回は「PHP」をクリックします。情報画面で「次へ」をクリックし、構成の下の「高度なオプション」をクリックします。
以下の変更を行います
「作成」をクリックし、「プロジェクト概要に進む」をクリックします。ビルドとデプロイが完了するのを待ってから、アプリケーションへのリンクをクリックします。すでにログインしているはずです。次に、「Invoke Public」をクリックして保護されていないエンドポイントを呼び出すか、「Invoke Admin」をクリックして管理者ロールで保護されたエンドポイントを呼び出すことで、サービスを呼び出すことができます。「Invoke Secured」をクリックすると、ログインしている管理者ユーザーにはユーザーロールがないため、失敗します。このエンドポイントも呼び出せるようにするには、Keycloak管理コンソールに戻ります。「user」という名前のレルムロールを作成します。次に、ユーザーに移動して管理者ユーザーを見つけ、ロールマッピングの下でユーザーロールをユーザーに追加します。
これで、アプリケーションをデプロイおよび保護し、アプリケーションが以前にデプロイしたサービスを安全に呼び出す方法を確認しました。