第6章 RH-SSO を使用したサードパーティークライアントの認証
Business Central または Process Server が提供するさまざまなリモートサービスを使用するには、curl、wget、Web ブラウザー、カスタムの REST クライアントなどのクライアントが、RH-SSO サーバー経由で認証を受け、要求を実行するために有効なトークンを取得する必要があります。リモートのサービスを使用するには、認証済みのユーザーに以下のロールを割り当てる必要があります。
-
rest-all
Business Central リモートサービスを使用する場合 -
kie-server
Process Server リモートサービスを使用する場合
RH-SSO 管理コンソールを使用してこれらのロールを作成し、リモートサービスを使用するユーザーに割り当てます。
クライアントは、以下のオプションのいずれかを使用して RH-SSO 経由で認証できます。
- クライアントでサポートされている場合は Basic 認証
- トークンベースの認証
6.1. Basic 認証
Business Central および Process Server の両方に対して RH-SSO クライアントアダプターの設定で Basic 認証を有効にした場合には、以下の例のようにトークンの付与/更新の呼び出しをせずにサービスを呼び出すことができます。
Web ベースのリモートリポジトリーエンドポイントの場合:
curl http://admin:password@localhost:8080/business-central/rest/repositories
Process Server の場合:
curl http://admin:password@localhost:8080/kie-execution-server/services/rest/server/
6.2. トークンベースの認証
よりセキュアな認証オプションを希望される場合には、RH-SSO から付与されたトークンを使用することで Business Central および Process Server の両方からリモートサービスを使用できます。
手順
RH-SSO 管理コンソールで Clients メニューアイテムをクリックし、Create をクリックして新規クライアントを作成します。
Add Client ページが表示されます。
Add Client ページで、以下のようにレルムにクライアントを新規作成するのに必要な情報を指定します。
- Client ID: kie-remote
- Client protocol: openid-connect
- Save をクリックして変更を保存します。
Realm Settings でトークンの設定を変更します。
- RH-SSO 管理コンソールで、Realm Settings メニューアイテムをクリックします。
- Tokens タブをクリックします。
Access Token Lifespan の値を
15
分に変更します。このように設定すると、トークンを取得してから失効するまでに余裕をもってサービスを呼び出すことができます。
- Save をクリックして変更を保存します。
リモートクライアントの公開クライアントを作成したら、以下のコマンドを使用して、RH-SSO サーバーのトークンエンドポイントに対して HTTP 要求を行ってトークンを取得できます。
RESULT=`curl --data "grant_type=password&client_id=kie-remote&username=admin&password=password" http://localhost:8180/auth/realms/demo/protocol/openid-connect/token`
このコマンドのユーザーは Business Central RH-SSO ユーザーです。詳細は「Red Hat Process Automation Manager ユーザーの追加」を参照してください。
RH-SSO サーバーから取得したトークンを表示するには、以下のコマンドを使用します。
TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'`
このトークンを使用してリモートの呼び出しを認証できるようになります。たとえば、Red Hat Process Automation Manager の内部リポジトリーを確認するには、以下のようにトークンを使用します。
curl -H "Authorization: bearer $TOKEN" http://localhost:8080/business-central/rest/repositories