第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 を使用すると、セキュリティードメインを設定できるアプリケーションは 1 つだけです。または、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 よりも優先されます。

    注記

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

    詳細は、Developing EJB Applicationsガイドの EJB Application Security を参照してください。

サイレント BASIC 認証

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

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

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

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

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

注記

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

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

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