4.3. 新しいアイデンティティーストアを用いた管理インターフェイスおよびアプリケーションのセキュア化
ここでは、JBoss EAP の管理インターフェイスおよびアプリケーションの両方を Elytron の新しいアイデンティティーストアでセキュアにする方法を説明します。アプリケーション sampleApp2.war
は JBoss EAP にデプロイされ、basicExampleDomain
を使用するよう設定されます。
4.3.1. セキュリティー
JBoss EAP では、ManagementRealm
と ApplicationRealm
を超えてアイデンティティーストアで管理インターフェイスとアプリケーションをセキュア化できます。Elytron では、同じアイデンティティーストアを使用して管理インターフェイスとアプリケーションをセキュアにできますが、個別のアイデンティティーストアを設定することもできます。アイデンティティーストアは、filesystem-realm
、jdbc-realm
、ldap-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.war
は BASIC
認証で 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 にデプロイされたアプリケーションに対して basicExampleDomain
、digestExampleDomain
、および 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
にはアクセスできません。