第4章 アプリケーション設定ファイル

4.1. 認証に Elytron またはレガシーセキュリティーを使用するように Web アプリケーションを設定

認証に elytron またはレガシー security サブシステムを設定した後は、アプリケーションを設定して使用する必要があります。

  1. アプリケーションの web.xml を設定します。

    適切な認証方法を使用するようアプリケーションの web.xml を設定する必要があります。elytron サブシステムを使用する場合は、これは作成した http-authentication-factory に定義されています。レガシー security サブシステムを使用する場合、これはログインモジュールと設定する認証の種類によって異なります。

    BASIC 認証による web.xml のサンプル

    <web-app>
      <security-constraint>
        <web-resource-collection>
          <web-resource-name>secure</web-resource-name>
          <url-pattern>/secure/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
          <role-name>Admin</role-name>
        </auth-constraint>
      </security-constraint>
      <security-role>
        <description>The role that is required to log in to /secure/*</description>
        <role-name>Admin</role-name>
      </security-role>
      <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>exampleApplicationDomain</realm-name>
      </login-config>
    </web-app>

  2. セキュリティードメインを使用するようにアプリケーションを設定します。

    アプリケーションの jboss-web.xml を設定して、認証に使用するセキュリティードメインを指定できます。elytron サブシステムを使用する場合、これは application-security-domain の作成時に定義されます。レガシー security サブシステムを使用する場合、これはレガシーセキュリティードメインの名前となります。

    例: jboss-web.xml

    <jboss-web>
      <security-domain>exampleApplicationDomain</security-domain>
    </jboss-web>

    Jboss-web.xml を使用すると、単一のアプリケーションに対してのみセキュリティードメインを設定できます。または、undertow サブシステムを使用してすべてのアプリケーションにデフォルトのセキュリティードメインを指定することもできます。これにより、jboss-web.xml を使用して各アプリケーションにセキュリティードメインを設定することを省略することができます。

    /subsystem=undertow:write-attribute(name=default-security-domain, value="exampleApplicationDomain")
    重要

    undertow サブシステムで default-security-domain を設定すると、すべてのアプリケーションに適用されます。default-security-domain が設定されており、アプリケーションのセキュリティードメインが jboss-web.xml ファイルで指定されている場合には、jboss-web.xml の設定が undertow サブシステムの default-security-domain よりも優先されます。

    注記

    Jakarta Enterprise Beans のセキュリティードメインは、ejb3 サブシステム、jboss-ejb3.xml ファイルの Jakarta Enterprise Beans 記述子、または @SecurityDomain アノテーションを使用して Jakarta Enterprise Beans 設定で定義されます。

    詳細は、『 Developing Jakarta Enterprise Beans Applications』ガイドの「Jakarta Enterprise Beans Application Security 」を参照してください。

サイレント BASIC 認証

elytron を設定して サイレント BASIC 認証を実行できます。サイレント認証を有効にすると、Web アプリケーションにアクセスする際にログインを求めるプロンプトが表示されません。代わりに代替の認証方法が使用されます。ユーザーの要求に Authorization ヘッダーが含まれる場合、BASIC 認証メカニズムが使用されます。

サイレント BASIC 認証を有効にするには、auth-method 属性の値を以下のように設定します。

<auth-method>BASIC?silent=true</auth-method>

Parallel での Elytron およびレガシーセキュリティーサブシステムの使用

これにより、elytron サブシステムとレガシーの security サブシステムの両方で認証を定義でき、両方のサブシステムを並行して使用できます。undertow サブシステムで jboss-web.xmldefault-security-domain の両方を使用する場合、JBoss EAP は最初に elytron サブシステムで設定されたセキュリティードメインの一致を試行します。一致するものが見つからない場合、JBoss EAP はレガシー security サブシステムに設定されたセキュリティードメインと照合を試みます。elytron およびレガシー security サブシステムの両方に同じ名前のセキュリティードメインがある場合には、elytron セキュリティードメインが使用されます。

注記

1 つのセキュリティードメインを使用して Web サーブレットが定義されており、Jakarta Enterprise Beans 固有のセキュリティードメインを使用する別の EAR モジュールから Jakarta Enterprise Beans を呼び出す場合は、以下のいずれかが発生する可能性があります。

  • 異なる Elytron セキュリティードメインに WAR と Jakarta Enterprise Beans をマッピングする場合に、アイデンティティーが別のデプロイメントドメインに伝播されるように、フローまたは信頼できるセキュリティードメインを設定する必要があります。この設定をしない限り、呼び出しが Jakarta Enterprise Beans に到達すると、アイデンティティーは匿名になります。認証にセキュリティーアイデンティティーを設定する方法は、「信頼されているセキュリティードメインアウトバウンドの設定」を参照してください。
  • WAR と Jakarta Enterprise Beans が異なるセキュリティードメイン名を参照するにも拘らず、同じ Elytron セキュリティードメインにマップされた場合には、アイデンティティーは追加のステップなしで伝播されます。

移行時には、アプリケーション全体を移行することが推奨されます。Jakarta Enterprise Beans と WAR を別々に移行し、elytron サブシステムとレガシー security サブシステムの両方を並行して使用することは推奨されません。アプリケーションを移行して Elytron を使用する方法は、JBoss EAP『移行ガイド』の「Elytron への移行」を参照してください。