第4章 アプリケーション設定
4.1. 認証に Elytron またはレガシーセキュリティーを使用するよう Web アプリケーションを設定する手順
認証用に elytron
またはレガシーの security
サブシステムを設定した後に、お使いのアプリケーションでこのサブシステムを使用するように設定する必要があります。
アプリケーションの
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>
セキュリティードメインを使用するようにアプリケーションを設定します。
認証に使用するセキュリティードメインを指定するように、アプリケーションの
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.xml
と default-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 への移行 を参照してください。