第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 への移行 を参照してください。