2.9. コンテナー管理のシングルサインオンを使用するようにアプリケーションを設定する手順

Elytron FORM の認証メソッドを使用すると、アプリケーションにコンテナー管理のシングルサインオンを使用するように JBoss EAP を設定できます。この設定では、ユーザーを 1 回認証し、FORM 認証メソッドでセキュリティー保護された他のリソースに再認証する必要なくアクセスできます。

以下の場合に、関連するシングルサインオンセッションが無効になります。

  • アクティブなローカルセッションが残っていない。
  • アプリケーションからログアウトする。
重要

さまざまな JBoss EAP インスタンスにデプロイされたアプリケーションには、このようなインスタンスが 1 つのクラスター内にある場合に限り、シングルサインオンを使用できます。

  1. key-store を作成します。

    SSO に参加するさまざまなサーバー間でセキュアな通信チャネルを設定するには、key-store が必要です。このチャネルは、シングルサインオンセッションの作成時または破棄時 (ログイン時、またはログアウト時) に発生するイベントのメッセージ交換に使用します。

    elytron サブシステムで key-store を作成するには、まず以下のように Java KeyStore を作成します。

    keytool -genkeypair -alias localhost -keyalg RSA -keysize 1024 -validity 365 -keystore keystore.jks -dname "CN=localhost" -keypass secret -storepass secret

    keystore.jks ファイルを作成したら、以下の管理 CLI コマンドを実行して Elytron に key-store 定義を作成します。

    /subsystem=elytron/key-store=example-keystore:add(path=keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=secret}, type=JKS)
  2. セキュリティーレルムを追加します。

    以下の管理 CLI コマンドを使用して FileSystem レルム (ローカルファイルシステムにユーザーを保存するアイデンティティーストア) を作成します。

    /subsystem=elytron/filesystem-realm=example-realm:add(path=/tmp/example-realm)
  3. 以下の管理 CLI コマンドを使用して security-domain を作成します。

    /subsystem=elytron/security-domain=example-domain:add(default-realm=example-realm,permission-mapper=default-permission-mapper,realms=[{realm=example-realm,role-decoder=groups-to-roles}]
    注記

    SSO を使用するアプリケーションは、 通常ユーザーにログインページを表示する必要があるので HTTP FORM 認証を使用する必要があります。

  4. undertow サブシステムでアプリケーションのセキュリティードメインを設定します。

    注記

    undertow サブシステムに application-security-domain がすでに定義されており、このドメインを使用してアプリケーションへのシングルサインオンを有効にする場合は、この手順を省略できます。

    /subsystem=undertow/application-security-domain=other:add(security-domain=example-domain)
    注記

    デフォルトでは、お使いのアプリケーションの jboss-web.xml ファイルで特定のセキュリティードメインが定義されていない場合には、アプリケーションサーバーは other という名前のセキュリティードメインを選択します。

  5. undertow サブシステムがシングルサインオンを有効にし、キーストアを使用するように更新します。

    シングルサインオンは、undertow サブシステムの特定の application-security-domain 定義に対して有効になります。アプリケーションのデプロイに使用するサーバーで、同じ設定を使用することが重要です。

    シングルサインオンを有効にするには、以下のように undertow サブシステムで既存の application-security-domain を変更します。

    /subsystem=undertow/application-security-domain=other/setting=single-sign-on:add(key-store=example-keystore, key-alias=localhost, domain=localhost, credential-reference={clear-text=secret})
    注記

    ConfigurationSubsystemsWeb (Undertow)Application Security Domain に移動して、管理コンソールを使用して undertow サブシステムの application-security-domain を設定できます。

    SSO 属性とその定義に関する詳細は、シングルサインオン属性のリファレンス を参照してください。

  6. アプリケーションの web.xml および jboss-web.xml ファイルを設定します。

    アプリケーションの web.xml および jboss-web.xml は、JBoss EAP で設定した application-security-domain を使用するように更新する必要があります。このサンプルは、Configure Web Applications to use Elytron or Legacy Security for Authentication で確認できます。

JBoss EAP は、 undertow および infinispan サブシステムを使用する クラスター化された SSO とクラスター化されていない SSO に対して、追加設定なしでサポートを提供します。