第4章 RH-SSO を使用した Business Central の認証

本章では、RH-SSO を介して Business Central を認証する方法を説明します。この章には以下のセクションが含まれます。

前提条件

注記

このセクションは、「RH-SSO への Business Central クライアントの作成」 を除き、スタンドアロンのインストールが対象です。Red Hat OpenShift Container Platform で RH-SSO と Red Hat Process Automation Manager を統合する場合には、「RH-SSO への Business Central クライアントの作成」 の手順のみを実行して、Red Hat OpenShift Container Platform に Red Hat Process Automation Manager 環境をデプロイしてください。Red Hat OpenShift Container Platform への Red Hat Process Automation Manager のデプロイの手順は、Red Hat カスタマーポータル の適切なドキュメントを参照してください。

4.1. RH-SSO への Business Central クライアントの作成

RH-SSO サーバーの起動後、RH-SSO 管理コンソールを使用して RH-SSO 向けに Business Central クライアントを作成します。

手順

  1. Web ブラウザーに http://localhost:8180/auth/admin と入力して、RH-SSO 管理コンソールを開き、RH-SSO のインストール時に作成した管理者の認証情報を使用してログインします。

    注記

    Red Hat OpenShift Container Platform で RH-SSO を設定している場合には、RH-SSO ルートに公開されている URL を入力します。OpenShift 管理者は、必要に応じてこの URL を提供してください。

    初回ログイン時に、新規ユーザー登録で最初のユーザーを設定できます。

  2. RH-SSO 管理コンソールで、Realm Settings メニューアイテムをクリックします。
  3. Realm Settings ページで Add Realm をクリックします。

    Add realm ページが表示されます。

  4. Add realm ページで、レルムの名前を指定して Create をクリックします。
  5. Clients メニューアイテムをクリックし、Create をクリックします。

    Add Client ページが表示されます。

  6. Add Client ページで、以下のようにレルムにクライアントを新規作成するのに必要な情報を指定します。

    • Client ID: kie
    • Client protocol: openid-connect
    • Root URL: http://localhost:8080/business-central

      注記

      Red Hat OpenShift Container Platform で RH-SSO を設定している場合には、KIE Server ルートに公開されている URL を入力します。OpenShift 管理者は、必要に応じてこの URL を提供してください。

  7. Save をクリックして変更を保存します。

    作成した新規クライアントの Access Type は、デフォルトでは public に設定されています。この設定を confidential に変更します。

    これで、Business Central アプリケーションのクライアントが含まれるレルムに RH-SSO サーバーが設定され、localhost:8180 で HTTP 接続をリッスンした状態で実行しています。このレルムは、Business Central アプリケーションに異なるユーザー、ロール、セッションを提供します。

4.2. Business Central への RH-SSO クライアントアダプターのインストール

RH-SSO をインストールしたら、Red Hat JBoss EAP に RH-SSO クライアントアダプターをインストールして、Business Central に対して設定する必要があります。

前提条件

手順

  1. Red Hat カスタマーポータルの Software Downloads ページに移動し (ログインが必要)、ドロップダウンオプションから製品およびバージョンを選択します。

    • 製品: Red Hat Single Sign-On
    • バージョン: 7.4
  2. Red Hat Single Sign-on 7.4.0 Client Adaptor for JBoss EAP 7 (rh-sso-7.4.0-eap7-adapter.zip) または最新のバージョンをダウンロードします。
  3. アダプターの Zip ファイルを展開してインストールします。インストール手順は『Red Hat Single Sign On Securing Applications and Services Guide』の「JBoss EAP Adapter」セクションを参照してください。

    注記

    -Dserver.config=standalone-full.xml プロパティーでアダプターをインストールします。

  4. Red Hat JBoss EAP インストールの EAP_HOME/standalone/configuration ディレクトリーに移動し、テキストエディターで standalone-full.xml ファイルを開きます。
  5. 以下の例に表示されているシステムプロパティーを <system-properties>; に追加します。

    <system-properties>
      <property name="org.jbpm.workbench.kie_server.keycloak" value="true"/>
      <property name="org.uberfire.ext.security.management.api.userManagementServices" value="KCAdapterUserManagementService"/>
      <property name="org.uberfire.ext.security.management.keycloak.authServer" value="http://localhost:8180/auth"/>
    </system-properties>
  6. 以下のように、RH-SSO サブシステム設定を追加します。

    <subsystem xmlns="urn:jboss:domain:keycloak:1.1">
     <secure-deployment name="business-central.war">
       <realm>demo</realm>
       <realm-public-key>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB</realm-public-key>
       <auth-server-url>http://localhost:8180/auth</auth-server-url>
       <ssl-required>external</ssl-required>
       <enable-basic-auth>true</enable-basic-auth>
       <resource>kie</resource>
       <credential name="secret">759514d0-dbb1-46ba-b7e7-ff76e63c6891</credential>
       <principal-attribute>preferred_username</principal-attribute>
     </secure-deployment>
    </subsystem>

    この例で、

    • secure-deployment name は、アプリケーションの WAR ファイルの名前です。
    • realm は、使用するアプリケーション用に作成したレルムの名前です。
    • realm-public-key は、作成したレルムの公開鍵です。この鍵は、RH-SSO 管理コンソールで作成したレルムの Realm settings ページの Keys タブで確認できます。realm-public-key の値を指定しない場合は、サーバーが自動的に取得します。
    • auth-server-url は、RH-SSO 認証サーバーの URL です。
    • enable-basic-auth は、クライアントがトークンベースと Basic 認証アプローチの両方を使用して要求を実行できるように、Basic 認証メカニズムを有効にする設定です。
    • resource は、作成したクライアントの名前です。
    • credential name は、作成したクライアントの秘密鍵です。この鍵は、RH-SSO 管理コンソールの Clients ページの Credentials タブで確認できます。
    • principal-attribute は、ユーザーのログイン名です。この値を指定しないと、ユーザー名ではなくユーザー ID がアプリケーションに表示されます。

      注記

      RH-SSO サーバーは、ユーザー名を小文字に変換します。したがって、RH-SSO と統合すると、ユーザー名が Red Hat Process Automation Manager では小文字で表示されます。ユーザー名が、ビジネスプロセスに大文字でハードコードされている場合は、アプリケーションが大文字のユーザー名を識別できない場合があります。

  7. Elytron サブシステムには、JACC 仕様に基づいた組み込みポリシープロバイダーがあります。standalone.xml または、Elytron がインストールされているファイルで手動で JACC を有効にするには、以下のタスクのいずれかを実行します。

    • ポリシープロバイダーを作成するには、 Red Hat JBoss EAP の管理コマンドラインインターフェース (CLI) で以下のコマンドを入力します。

      /subsystem=elytron/policy=jacc:add(jacc-policy={})
      /subsystem=undertow/application-security-domain=other:remove
      /subsystem=undertow/application-security-domain=other:add(http-authentication-factory=keycloak-http-authentication,enable-jacc=true)

      Red Hat JBoss EAP の管理 CLI に関する詳細は、『管理 CLI ガイド』を参照してください。

    • Red Hat JBoss EAP インストールの EAP_HOME/standalone/configuration ディレクトリーに移動し、standalone.xml ファイルおよび standalone-full.xml ファイルで Elytron と undertow サブシステム設定の場所を特定して JACC を有効化します。以下に例を示します。

      <subsystem xmlns="urn:wildfly:elytron:4.0" ...>
      ......
       <policy name="jacc"><jacc-policy/></policy>
      </subsystem>
      <subsystem xmlns="urn:jboss:domain:undertow:7.0" ...>
      ......
       <application-security-domains>
          <application-security-domain name="other" http-authentication-factory="keycloak-http-authentication" enable-jacc="true"/>
       </application-security-domains>
      </subsystem>
  8. EAP_HOME/bin/ に移動し、以下のコマンドを実行して Red Hat JBoss EAP サーバーを起動します。

    ./standalone.sh -c standalone-full.xml
注記

RH-SSO セキュリティーサブシステムを使用するようにアプリケーションの WAR ファイルを更新して、Business Central の RH-SSO アダプターを設定することもできます。ただし Red Hat では、RH-SSO サブシステムからアダプターを設定することを推奨します。つまり、設定を各 WAR ファイルに適用するのではなく、Red Hat JBoss EAP の設定を更新します。

4.3. RH-SSO を使用した Business Central ファイルシステムサービスのセキュリティー

ファイルシステムなど、他のリモートサービス (例: リモート GIT サービス) を使用するには、正しい RH-SSO ログインモジュールを指定する必要があります。

手順

  1. JSON 設定ファイルを生成します。

    1. http://localhost:8180/auth/admin から RH-SSO 管理コンソール に移動します。
    2. Clients をクリックします。
    3. 以下の設定で新規クライアントを作成します。

      • Client IDkie-git に設定します。
      • Access Typeconfidential に設定します。
      • Standard Flow Enabled オプションを無効にします。
      • Direct Access Grants Enabled オプションを有効にします。
      kie git client settings
    4. 保存 をクリックします。
    5. クライアント設定画面の上部にある Installation タブをクリックして、Format OptionKeycloak OIDC JSON を選択します。
    6. Download をクリックします。
  2. ダウンロードした JSON ファイルを、サーバーのファイルシステム内でアクセス可能なディレクトリーに移動するか、アプリケーションクラスパスに追加します。
  3. EAP_HOME/standalone/configuration/standalone-full.xml ファイルに、正しい RH-SSO ログインモジュールを指定します。デフォルトでは、Red Hat Process Automation Manager のセキュリティードメインは other に設定されます。このセキュリティードメインの login-module のデフォルト値を、以下の例で示す値に置き換えます。

    <security-domain name="other" cache-type="default">
      <authentication>
        <login-module code="org.keycloak.adapters.jaas.DirectAccessGrantsLoginModule" flag="required">
          <module-option name="keycloak-config-file" value="$EAP_HOME/kie-git.json"/>
        </login-module>
      </authentication>
    </security-domain>
  4. module-option 要素で指定した JSON ファイルには、リモートサービスのセキュリティーを確保するために使用するクライアントが含まれます。module-option 要素の $EAP_HOME/kie-git.json の値を、この JSON 設定ファイルの絶対パスまたはクラスパス (classpath:/EXAMPLE_PATH/kie-git.json) に置き換えます。

    これで、RH-SSO サーバーで認証されたすべてのユーザーは、内部 GIT リポジトリーのクローンを作成できます。以下のコマンドで、USER_NAME を RH-SSO ユーザー (admin など) に変更します。

    git clone ssh://USER_NAME@localhost:8001/system