4.3. 新しいアイデンティティーストアを用いた管理インターフェイスおよびアプリケーションのセキュア化

ここでは、JBoss EAP の管理インターフェイスおよびアプリケーションの両方を Elytron の新しいアイデンティティーストアでセキュアにする方法を説明します。アプリケーション sampleApp2.war は JBoss EAP にデプロイされ、basicExampleDomain を使用するよう設定されます。

4.3.1. セキュリティー

JBoss EAP では、ManagementRealmApplicationRealm を超えてアイデンティティーストアで管理インターフェイスとアプリケーションをセキュア化できます。Elytron では、同じアイデンティティーストアを使用して管理インターフェイスとアプリケーションをセキュアにできますが、個別のアイデンティティーストアを設定することもできます。アイデンティティーストアは、filesystem-realmjdbc-realmldap-realm などのセキュリティーレルムによって表されます。この例のために、exampleRealm という名前の filesystem-realm が作成されています。また、exampleDomain という名前のセキュリティードメインも作成されています。 このセキュリティードメインは、exampleRealm をアイデンティティーストアとして使用し、groups-to-roles ロールマッパーを使用して exampleRealm によって提供されるグループ情報をロールにデコードし、マッピングパーミッションに default-permission-mapper を使用します。

HTTP 認証では、 exampleHttpAuthFactory という http-authentication-factory が作成されています。これは、認証に global HTTP サーバーファクトリーのメカニズムと exampleDomain を使用します。また、2 つのメカニズム設定があります。1 つは basicExampleDomain として公開される BASIC 認証を使用し、もう 1 つは digestExampleDomain として公開される DIGEST 認証を使用します。HTTP 管理インターフェイスは exampleHttpAuthFactory を使用するよう設定されています。また、undertow サブシステムも exampleHttpAuthFactory を使用する新しい application-security-domain で設定されています。アプリケーション sampleApp2.warBASIC 認証で basicExampleDomain を使用するように設定されます。

SASL 認証では、exampleSaslAuthFactory という sasl-authentication-factory が作成されています。これは、認証に configured SASL サーバーファクトリーと exampleDomain を使用します。また、digestMD5ExampleDomain として公開される DIGEST-MD5 認証が設定されています。管理インターフェイスの SASL 設定は exampleSaslAuthFactory を使用するよう設定されています。

4.3.2. 仕組み

以下のユーザーが exampleRealm に追加されています。

表4.2 exampleRealm ユーザー

ユーザー名パスワードロール

Vincent

samplePass

sample

Issac

samplePass

guest

起動時、JBoss EAP はコアサービスをロードし、undertow および elytron サブシステムを起動します。これにより、管理インターフェイスをセキュアにし、JBoss EAP にデプロイされたアプリケーションに対して basicExampleDomaindigestExampleDomain、および digestMD5ExampleDomain を公開します。

sampleApp2.war がロードされると、basicExampleDomain を検索し、セキュアな URL の認証および承認を提供します。/hello.html/secure/hello.html の 2 つの HTML ファイルがあり、BASIC 認証を使用してパス /secure/* をセキュア化します。セキュアな URL にアクセスするには、sample ロールが必要です。

ユーザーの認証時、JBoss EAP へのアクセス方法に応じて、特定のメカニズムを使用してクレデンシャルが提出されます。たとえば、ユーザーが DIGEST 認証で HTTP を使用する管理コンソールにアクセスしようとすると、digestExampleDomain として公開される DIGEST 認証を使用して認証されます。BASIC 認証で HTTP を使用する sampleApp2.war にアクセスしようとすると、basicExampleDomain として公開される BASIC 認証を使用して認証されます。DIGEST 認証で SASL を使用する管理 CLI にアクセスしようとすると、digestMD5ExampleDomain として公開される DIGEST-MD5 を使用して認証されます。HTTP 認証は exampleHttpAuthFactory を使用し、SASL 認証は exampleSaslAuthFactory を使用します。両方の認証ファクトリーは、exampleDomain で認証とロールマッピングに対処します。

Vincent または Issac が管理インターフェイスにアクセスしようとすると、ユーザー名とパスワードの入力を要求されます。正常にログインした後、各ユーザーは管理操作を実行できます。

Vincent または Issac が /hello.html をリクエストすると、そのページを認証なしで閲覧できます。Vincent または Issac が /secure/hello.html をリクエストすると、ユーザー名とパスワードの入力を要求されます。正常にログインした後、Vincent は sample ロールを持っているため /secure/hello.html を閲覧できますが、Issac は guest ロールを持っているため /secure/hello.html を閲覧できません。その他すべてのユーザーはログインせずに /hello.html にアクセスできますが、exampleRealm に存在するユーザーは Vincent と Issac のみであるため、/secure/hello.html にはアクセスできません。