第5章 レガシーのコア管理とセキュリティーサブシステムの例
JBoss EAP のセキュリティーとコンポーネントがどのように一緒に機能するかを理解する 1 つの方法が、実際のシナリオを検証することです。以下のセクションでは、さまざまな JBoss EAP セキュリティーコンポーネントおよび設定オプションが関係する一般的かつ現実的な状況を複数取り上げます。単一または複数のアプリケーションをセキュア化する方法と、管理インターフェースをセキュア化する方法を中心に説明します。
5.1. 初期状態の Red Hat JBoss Enterprise Application Platform
ここでは、初期インストール後に設定が変更されなかった場合に JBoss EAP とサンプルアプリケーションをセキュアにする方法を説明します。アプリケーション sampleApp1.war
はデプロイされ、コンテナーベースのセキュリティーを使用するよう設定されています。

5.1.1. 初期設定のコア管理認証
5.1.1.1. セキュリティー
コア管理認証は、ManagementRealm
と ApplicationRealm
の 2 つの事前設定されたセキュリティーレルムをデフォルトで提供します。これらのレルムはプロパティーファイルを使用して、ユーザー名、パスワード、およびロールを格納します。認証情報と管理 API の格納に使用される ManagementRealm
は、JBoss EAP インスタンスと同じホストで CLI を使用するユーザーに対してローカル認証を定義し、有効にします。ApplicationRealm
は、管理 API 以外のアプリケーション向けに、認証および承認情報を格納するために事前設定されています。さらに、 ApplicationRealm
はローカル認証が有効な状態で事前設定されていますが、これは一般的に使用されません。
5.1.1.2. 仕組み
このシナリオでは、JBoss EAP のデフォルトインストールに以下のユーザーが追加されています。
ユーザー名 | パスワード | ロール | セキュリティーレルム |
---|---|---|---|
Susan |
Testing123! |
ManagementRealm | |
Sarah |
Testing123! |
sample |
ApplicationRealm |
Frank |
Testing123! |
ApplicationRealm |
JBoss EAP インスタンスは、起動時に ManagementRealm
および ApplicationRealm
セキュリティーレルムをロードします。
Susan が管理インターフェース、HTTP、または CLI にアクセスしようとすると、認証が必要になります。Susan のユーザー名、パスワード、およびロールが ManagementRealm
のエントリーと一致する必要があります。デフォルトでは、管理 API にアクセスする必要があるルールはありません。Sarah と Frank は ManagementRealm
セキュリティーレルムには存在しないため、管理 API にアクセスできません。
5.1.2. 初期設定のセキュリティーサブシステム
5.1.2.1. セキュリティー
security
サブシステムには、other
、jboss-web-policy
、jboss-ejb-policy
、および jaspitest
の 4 つのセキュリティードメインが事前設定されています。other
セキュリティードメインは、デフォルトで ApplicationRealm
を使用する、ログインモジュールに指定されたレルムに委譲して認証と承認を実行します。
デフォルトのセキュリティーレルムとデフォルトのセキュリティードメインに関する詳細は、 「セキュリティーレルム」と「セキュリティードメイン」を参照してください。
5.1.2.2. 仕組み
アプリケーション sampleApp1.war
には /hello.html
と /secure/hello.html
の 2 つの HTML ファイルがあり、BASIC HTTP 認証を使用してパス /secure/*
をセキュア化します。other
セキュリティードメインを使用し、sample
ロールを必要とします。other
セキュリティードメインは認証および承認情報を ApplicationRealm
に委ねるため、前セクション に記載されている Users
の表のユーザーを参照します。
Sarah が /hello.html
を要求すると、認証なしでページを閲覧できます。Sarah が /secure/hello.html
を要求すると、ユーザー名とパスワードの入力が求められます。ログインに成功した後、Sarah は /secure/hello.html
を閲覧できます。Frank や Susan を含むすべてのユーザーが /hello.html
にアクセスできますが、Frank と Susan は /secure/hello.html
にはアクセスできません。Frank は sample
ロールを持たず、Susan は ApplicationRealm
セキュリティーレルムに存在しません。
5.2. 管理インターフェースに HTTPS と RBAC が追加された Red Hat JBoss Enterprise Application Platform
ここでは、管理インターフェースで HTTPS が有効で、RBAC が ManagementRealm
セキュリティーレルムに追加されている場合に JBoss EAP をセキュアにする方法を取り上げます。

5.2.1. セキュリティー
JBoss EAP は管理コンソールを含む、管理インターフェースによる HTTPS の使用をサポートします。HTTPS を有効にするには、secure-interface
要素を設定し、secure-port
を管理インターフェースの http-interface
セクションに追加し、希望の設定 (サーバー ID、プロトコル、キーストア、エイリアスなど) で既存または新規セキュリティーレルムを設定します。これにより、管理インターフェースがすべての HTTP トラフィックに SSL/TLS を使用できるようになります。HTTPS と管理インターフェースのセキュア化に関する背景情報は、「高度なセキュリティー」を参照してください。
JBoss EAP では、複数の異なる認証スキームを使用して、管理インターフェースの RBAC を有効にすることもできます。この例では、ManagementRealm
で使用される既存のプロパティーファイルでユーザー名とパスワードを使用します。RBAC を有効にするには、管理インターフェースに対して provider
属性を rbac
に設定し、希望のユーザーとロールで ManagementRealm
を更新します。
5.2.2. 仕組み
この例では、以下のユーザーが既存のセキュリティーレルムに追加されています。
ユーザー名 | パスワード | セキュリティーレルム |
---|---|---|
Suzy |
Testing123! |
ManagementRealm |
Tim |
Testing123! |
ManagementRealm |
Emily |
Testing123! |
ManagementRealm |
Zach |
Testing123! |
ManagementRealm |
Natalie |
Testing123! |
ManagementRealm |
グループメンバーシップを基に、ユーザーは以下の RBAC ロールにマップされています。
ユーザー名 | RBAC ロール |
---|---|
Suzy |
SuperUser |
Tim |
Administrator |
Emily |
Maintainer |
Zach |
Deployer |
Natalie |
Monitor |
起動時、JBoss EAP は ManagementRealm
と RBAC 設定、および管理インターフェースをコアサービスの一部としてロードします。また、管理インターフェースの HTTPS 用に設定された http-interface
も起動されます。ユーザーは HTTPS を介して管理インターフェースにアクセスできるようになり、RBAC も有効化および設定されます。RBAC が有効になっていない場合、ManagementRealm
セキュリティーレルムのユーザーはすべて SuperUser
として考慮され、アクセスが無制限になります。RBAC は有効になっているため、各ユーザーは持っているロールに応じて制限されるようになります。上記の表のとおり、Suzy、Tim、Emily Zach および Natalie は、異なるロールを持っています。たとえば、Suzy と Tim のみがアクセス制御情報の読み取りと編集を行えます。Suzy、Tim、および Emily はランタイム状態とその他の永続設定の情報を編集できます。Zach
もランタイム状態とその他の永続設定の情報を編集できますが、アプリケーションリソース関係のみに限定されます。Suzy、Tim、Emily、Zack、および Natalie は設定および状態情報を読み取りできますが、Natalie は何も更新できません。各ロールの詳細とJBoss EAP による RBAC の処理方法については、「ロールベースのアクセス制御」と「管理インターフェースへの RBAC の追加」を参照してください。
5.3. Red Hat JBoss Enterprise Application Platform と HTTPS を含む更新された security サブシステム
ここでは、新しいセキュリティードメインが追加され、HTTPS が有効化された場合に JBoss EAP で実行しているサンプルアプリケーションをセキュアにする方法を取り上げます。アプリケーション sampleApp2.war
はデプロイされ、コンテナベースのセキュリティー、sample-domain
、および HTTPS を使用するよう設定されています。

5.3.1. セキュリティー
JBoss EAP は、アプリケーション向けの HTTPS の使用をサポートし、undertow
サブシステムを使用して処理されます。HTTPS の新しいコネクターは undertow
サブシステムに追加され、プロトコル、ポート、キーストアなどの希望の設定で設定されます。設定が保存されると、web アプリケーションは設定されたポート上で HTTPS トラフィックを許可できるようになります。sample-domain
という新しいセキュリティードメインが追加され、認証に IdentityLoginModule
を使用します。sampleApp2.war
はユーザーの認証に sample-domain
を使用するよう設定されます。
5.3.2. 仕組み
セキュリティードメイン sample-domain
が作成され、IdentityLoginModule
を使用するよう設定されています。以下のクレデンシャルがログインモジュールに設定されています。
ユーザー名 | パスワード | ロール |
---|---|---|
Vincent |
samplePass |
sample |
JBoss EAP は起動時にコアサービスをロードし、すべての web アプリケーションの HTTPS 接続を管理する undertow
サブシステムと、sample-domain
の HTTPS 接続を管理する security
サブシステムを起動します。sampleApp2.war
がロードされ、セキュアな URL に認証と承認を提供するための sample-domain
を検索します。sampleApp2.war
には /hello.html
と /secure/hello.html
の 2 つの HTML ファイルがあり、BASIC HTTP 認証を使用してパス /secure/*
をセキュア化します。sample-domain
セキュリティードメインを使用し、sample
ロールを必要とします。
Vincent が /hello.html
をリクエストすると、Vincent は認証なしでこのページを閲覧できます。Vincent が /secure/hello.html
をリクエストすると、ユーザー名とパスワードの入力が要求されます。正常にログインした後、Vincent は /secure/hello.html
を閲覧できます。その他すべてのユーザーはログインせずに /hello.html
にアクセスできますが、sample-domain
に存在するユーザーは Vincent のみであるため、/secure/hello.html
にはアクセスできません。これは、HTTPS 上で処理されるすべてのトラフィックにも適用されます。
5.4. Red Hat JBoss Enterprise Application Platform における web アプリケーションの SSO
ここでは、JBoss EAP で web アプリケーションがクラスター化された SSO およびクラスター化されていない SSO を使用する方法を取り上げます。EAP1
、EAP2
、EAP3
、および EAP4
の 4 つの JBoss EAP インスタンスが作成されています。EAP1
と EAP2
はスタンドアロンサーバーとして動作し、EAP3
と EAP4
は 2 ノードクラスターとして動作します。sampleAppA
と sampleAppB
の 2 つの web アプリケーションが各 JBoss EAP インスタンスにデプロイされています。

5.4.1. セキュリティー
JBoss EAP は security
、undertow
、および infinispan
サブシステムの組み合わせを使用し、web アプリケーションでクラスター化された SSO とクラスター化されていない SSO のサポートを提供します。security
サブシステムは認証と承認を実行するためのセキュリティードメインを提供します。infinispan
および undertow
サブシステムは、JBoss EAP インスタンス上または JBoss EAP クラスター全体のすべての web アプリケーション間で SSO 情報をキャッシュおよび分散できるようにします。4 つの EAP インスタンスはすべてセキュリティードメイン sso-domain
を持ち、IdentityLoginModule
を使用するよう設定されています。sampleAppA
および sampleAppB
は、sso-domain
セキュリティードメインを使用してパス /secure/*
をセキュア化するよう設定され、アクセスするには sample
ロールが必要です。以下のクレデンシャルが sso-domain
ログインモジュールに設定されています。
ユーザー名 | パスワード | ロール |
---|---|---|
Jane |
samplePass |
sample |
4 つの JBoss EAP インスタンスはすべて standalone-full-ha
または full-ha
プロファイルで起動するよう設定され、このシナリオで SSO を有効化するのに必要な infinispan
サブシステムとその他の機能を追加します。web
キャッシュコンテナーとレプリケートされた SSO
キャッシュも追加され、undertow
サブシステムはこれら両方を使用するよう設定されています。EAP1
と EAP2
の undertow
サブシステムはクラスター化されていない SSO に対して設定され、EAP3
および EAP4
が含まれるクラスターはクラスター化された SSO を使用するよう設定されています。
クラスター化された web アプリケーションとクラスター化された SSO には明らかな違いがあります。クラスター化された web アプリケーションは、そのアプリケーションをホストするための負荷を分散するためにクラスターのノード全体で分散されます。分散可能なクラスター化されたアプリケーションでは、新しいセッションと既存セッションの変更はすべてクラスターの別のメンバーへレプリケートされます。クラスター化された SSO は、アプリケーション自体がクラスター化されているかどうかに関わらず、セキュリティーコンテキストとアイデンティティー情報のレプリケーションを可能にします。これらの技術は一緒に使用することができますが、相互に排他的であり、独立して使用することもできます。
5.4.2. 仕組み
JBoss EAP は起動時にコアサービスをロードし、sso-domain
と SSO 情報の関連キャッシュを管理する security
、undertow
、および infinispan
サブシステムを起動します。4 つの JBoss EAP インスタンスすべてに sampleAppA.war
と sampleAppB.war
がロードされ、各インスタンスは認証と承認を提供するために sso-domain
を検索します。
Jane が EAP1/sampleAppA/secure/hello.html
にアクセスしようとすると、認証が要求されます。正しい情報を提供した後、Jane は EAP1/sampleAppA/secure/hello.html
の閲覧が許可されます。Jane のセッションは undertow
および infinispan
サブシステムによって使用される SSO キャッシュに追加されます。Jane が EAP1/sampleAppB/secure/hello.html
にアクセスしようとすると、再認証は要求されません。EAP1
で実行されている sampleAppB
は、undertow
サブシステムキャッシュと infinispan
サブシステムを使用して Jane のセッションを検索します。Jane はすでに認証されているため、アクセスを許可します。Jane が EAP2/sampleAppA/secure/hello.html
または EAP2/sampleAppB/secure/hello.html
にアクセスしようとすると、再度認証が要求されます。これは、EAP1
と EAP2
はキャッシュを共有しないためです。
Jane が EAP3/sampleAppA/secure/hello.html
にアクセスしようとすると、認証を要求され、Jane のセッションは SSO キャッシュに保存されます。これらのキャッシュはクラスター全体で保存されるため、Jane が EAP3/sampleAppB/secure/hello.html
、EAP4/sampleAppA/secure/hello.html
、または EAP4/sampleAppB/secure/hello.html
にログインする際に再認証する必要ありません。EAP3
または EAP4
のいずれかが再起動した場合、他の JBoss EAP インスタンスとクラスターは稼働しているため、Jane の SSO 情報はキャッシュに保持されます。同様に、Jane のセッションが無効化された場合はキャッシュ全体で無効化され、クラスターでアクセスしようとするアプリケーションやサーバーに関係なく、再認証が要求されます。
5.5. SAML でブラウザーベースの SSO を使用する複数の Red Hat JBoss Enterprise Application Platform インスタンスと複数のアプリケーション
ここでは、JBoss EAP の複数のインスタンスをセキュアにする方法と、ブラウザーベースの SSO が追加される方法を取り上げます。EAP1
、EAP2
、および EAP3
の個別でクラスター化されていない 3 つの JBoss EAP インスタンスが設定されます。sampleAppA.war
、sampleAppB.war
、および sampleAppC.war
の 3 つのサンプルアプリケーションは、認証にブラウザーベースの SSO を使用するよう設定されます。

5.5.1. セキュリティー
JBoss EAP は、web アプリケーションで SAML を介してブラウザーベースの SSO をサポートし、アイデンティティープロバイダーのホストもサポートします。アイデンティティープロバイダーをホストするには、セキュリティードメイン (この例では idp-domain
) に定義した認証方法を設定する必要があります。この例では、 idp-domain
が DatabaseLoginModule
を認証方法として使用するよう設定されます。IDP アプリケーション (例: IDP.war
) がその JBoss EAP インスタンス (この例では EAP-IDP
) にデプロイされ、idp-domain
をアイデンティティーストアとして使用するよう設定されます。IDP.war
は、アプリケーションの機能とともにアイデンティティーストアを使用してユーザーを認証し、ユーザーのアイデンティティーとロール情報が含まれる SAML トークンを発行します。EAP1
、EAP2
、および EAP3
の 3 つの JBoss EAP インスタンスは、それぞれ個別の SP として動作するアプリケーション sampleAppA.war
、sampleAppB.war
、および sampleAppC
をホストします。各 JBoss EAP インスタンスには、SAML2LoginModule
を認証方法として使用するよう設定されている sso-domain
セキュリティードメインがあります。各アプリケーションには、SSO をサポートし、 IDP.war
をアイデンティティープロバイダーとして使用し、認証に HTTP/POST バインディングを使用する機能が含まれています。また、各アプリケーションは sso-domain
を使用してパス /secure/*
をセキュア化するよう設定され、承認の処理に独自のロールのリストを提供します。
5.5.2. 仕組み
この例では、idp-domain
セキュリティードメインの DatabaseLoginModule
によって使用されるデータベースに以下のユーザーが追加されています。
ユーザー名 | パスワード | ロール |
---|---|---|
Eric |
samplePass |
all |
Amar |
samplePass |
AB |
Brian |
samplePass |
C |
Alan |
samplePass |
EAP-IDP
の起動時、管理インターフェースが起動した後に security
サブシステムが含まれるサブシステムとデプロイされたアプリケーションが起動します。security
サブシステムには idp-domain
と IDP.war
が含まれます。idp-domain
はデータベースに接続し、DatabaseLoginModule
ログインモジュールに設定されたようにユーザー名、パスワード、およびロールをロードします。機密情報が DatabaseLoginModule
ログインモジュールの設定にプレーンテキストで保存されないようにするため、データベースのパスワードなどの一部のフィールドを隠すようパスワードハッシュが設定されます。IDP.war
は 認証と承認に idp-domain
を使用します。また、認証されたユーザーに SAML トークンを発行し、認証の対象となるユーザーに対して簡単なログインフォームを提供するため、IDP.war
は jboss-web.xml
、web.xml
、picketlink.xml
、および jboss-deployment-structure.xml
を使用して設定されます。
EAP1
、EAP2
、および EAP3
の起動時、管理インターフェースが起動した後に security
を含むサブシステムとデプロイされたアプリケーションが起動します。security
サブシステムには各インスタンスの sso-domain
が含まれ、それぞれ sampleAppA.war
、sampleAppB.war
、および sampleAppC.war
が含まれます。sso-domain
は SAML2LoginModule
ログインモジュールを使用するよう設定されますが、アプリケーションに依存して適切な SAML トークンを提供します。よって、sso-domain
を使用するすべてのアプリケーションは適切に IDP に接続して SAML トークンを取得する必要があります。この場合、各 sampleAppA
、sampleAppB
、および sampleAppC
は jboss-web.xml
、web.xml
、picketlink.xml
、および jboss-deployment-structure.xml
を介して設定され、IDP のログインフォームを使用して IDP.war
から SAML トークンを取得します。
また、各アプリケーションは独自の許可されるロールでも設定されます。
アプリケーション/SP | 許可されるロール |
---|---|
sampleAppA |
all、AB |
sampleAppB |
all、AB |
sampleAppC |
all、C |
認証されていないユーザーが sso-domain
によってセキュア化された URL (すべてのアプリケーションの /secure/*
) にアクセスしようとすると、ユーザーは IDP.war
のログインページにリダイレクトされます。その後、ユーザーはフォームを使用して認証され、ユーザーのアイデンティティーとロール情報が含まれる SAML トークンが発行されます。ユーザーは元の URL にリダイレクトされ、SAML トークンが SP であるアプリケーションに提示されます。アプリケーションは SAML トークンが有効であることを確認し、SAML トークンによって提供されたロールとアプリケーションで設定されたロールを基にしてユーザーを承認します。ユーザーに SAML トークンが発行された後、同じ IDP を使用して SSO によってセキュア化された別のアプリケーションでは、ユーザーはそのトークンを使用して認証および承認されます。SAML トークンの期限が切れ、無効になると、ユーザーは IDP から新しい SAML トークンを取得する必要があります。
この例では、Eric が EAP1/sampleAppA/secure/hello.html
にアクセスすると、ログインのために EAP-IDP/IDP/login.html
にリダイレクトされます。正常にログインした後、Eric にユーザー情報とロール all
が含まれる SAML トークンが発行され、EAP1/sampleAppA/secure/hello.html
にリダイレクトされます。この SAML トークンが sampleAppA
に提示され、トークンの確認後にロールを基にして承認が行われます。sampleAppA
は、ロール all
および AB
の /secure/*
へのアクセスを許可します。 Eric は all
ロールを持っているため、EAP1/sampleAppA/secure/hello.html
にアクセスできます。
Eric が EAP2/sampleAppB/secure/hello.html
にアクセスしようとすると、この SP に対しては認証されていないため、認証リクエストとともに IDP.war
にリダイレクトされます。Eric はすでに IDP に対して認証されているため、その SP に対する新しい SAML トークンとともに IDP.war
によって EAP2/sampleAppB/secure/hello.html
にリダイレクトされ、再認証は必要ありません。sampleAppB
によって新しい SAML トークンがチェックされ、ロールを基に承認が行われます。sampleAppB
は、ロール all
および AB
の /secure/*
へのアクセスを許可します。Eric は all
ロールを持っているため、EAP2/sampleAppB/secure/hello.html
にアクセスできます。Eric が EAP3/sampleAppC/secure/hello.html
にアクセスする場合も同様に処理されます。
SAML トークンがグローバルログアウトによって無効になった後、Eric が EAP1/sampleAppA/secure/hello.html
や、EAP2/sampleAppB/secure/*
または EAP3/sampleAppC/secure/*
以下の URL に戻ろうとすると、再認証のために EAP-IDP/IDP/login.html
へリダイレクトされ、新しい SAML トークンが発行されます。
Amar が EAP1/sampleAppA/secure/hello.html
または EAP2/sampleAppB/secure/hello.html
にアクセスしようとすると、Eric と同様に処理されます。Amar は AB
ロールを持ち、EAP1/sampleAppA/secure/*
および EAP2/sampleAppB/secure/*
のみにアクセスできます。そのため、 EAP3/sampleAppC/secure/hello.html
にアクセスしようとすると、SAML トークンの保持または取得が必要になりますが、EAP3/sampleAppC/secure/hello.html
の閲覧は制限されます。Brian も同様ですが、EAP3/sampleAppC/secure/*
のみにアクセスできます。Alan はロールを持たないため、サービスプロバイダーのセキュアな領域にアクセスしようとすると、SAML トークンの保持または取得が必要になりますが、閲覧はすべて制限されます。各 SP には、承認の有無に関わらず、すべてのユーザーが SAML トークンを取得しなくても閲覧可能なセキュアでない領域もあります。
5.6. LDAP と ManagementRealm の使用
ここでは、LDAP を使用して管理インターフェースをセキュアにする ManagementRealm
を取り上げます。JBoss EAP インスタンス EAP1
が作成され、スタンドアロンサーバーとして稼働しています。また、EAP1
の ManagementRealm
は LDAP を認証および承認に使用するよう更新されています。

5.6.1. セキュリティー
JBoss EAP は、LDAP および Kerberos を使用したセキュリティーレルムでの認証をサポートします。これには、既存の ManagementRealm
が認証タイプとして ldap
を使用するよう更新し、LDAP サーバーへのアウトバウンド接続を作成します。これにより、認証方法が digest
から BASIC / Plain
に変更され、ネットワーク上ではデフォルトでユーザー名とパスワードがクリアテキストで送信されます。
5.6.2. 仕組み
以下のユーザーが LDAP ディレクトリーに追加されています。
ユーザー名 | パスワード | ロール |
---|---|---|
Adam |
samplePass |
SuperUser |
Sam |
samplePass |
起動時、EAP1
は ManagementRealm
と管理インターフェースを含むコアサービスをロードします。ManagementRealm
は LDAP ディレクトリーサーバーに接続し、必要に応じて管理インターフェースの認証を提供します。
Adam が管理インターフェースにアクセスしようとすると、認証が強制的に実行されます。Adam のクレデンシャルは、認証に LDAP ディレクトリーサーバーを使用する ManagementRealm
セキュリティーレルムに渡されます。EAP1
は認証後にデフォルトの簡単なアクセス制御を使用しているため、Adam のロールはチェックされず、アクセスが許可されます。Sam が管理インターフェースにアクセスしようとしても同様に処理されます。
Adam の認証後に RBAC が有効化されると、承認のために Adam のロールは管理インターフェースに戻されます。Adam は SuperUser
ロールを持っているため、管理インターフェースへのアクセスが許可されます。サムが RBAC が有効になっている管理インターフェースにアクセスしようとすると、LDAP によって認証されますが、適切なロールを持っていないためアクセスは拒否されます。
5.7. Kerberos を使う Desktop SSO を使用した Web アプリケーションへの SSO の提供
ここでは、JBoss で Kerberos を使用して web アプリケーションに SSO を提供する方法について説明します。JBoss EAP インスタンス EAP1
は作成済みで、スタンドアロンサーバーとして実行されています。sampleAppA
と sampleAppB
の 2 つのアプリケーションが EAP1
にデプロイされています。両方のアプリケーションと EAP1
は、Kerberos でデスクトップベースの SSO を使用して認証するよう設定されています。

5.7.1. セキュリティー
JBoss EAP は、SPNEGO と JBoss Negotiation による web アプリケーションでの SSO に対する Kerberos の使用をサポートします。Kerberos と SPNEGO に特化した情報は、「サードパーティーの SSO 実装」を参照してください。JBoss EAP とデプロイされた web アプリケーションが認証に Kerberos を使用するようにするには、2 つのセキュリティードメインを作成する必要があります。最初のセキュリティードメイン host-domain
は、kerberos
ログインモジュールで設定され、Kerberos サーバーへ接続します。これにより、JBoss EAP のコンテナーレベルでの認証が可能になります。2 つ目のセキュリティードメイン spnego-domain
は、2 つのログインモジュールで作成されます。その 1 つは spnego
ログインモジュールを使用して host-domain
に接続し、ユーザーを認証します。もう 1 つは別のログインモジュール (プロパティーファイルを使用してユーザーをロールにマップする UsersRoles
など) を使用して、承認の決定に使用するロール情報をロードします。
これら 2 つのログインモジュールは、password-stacking
を利用して、承認モジュールのユーザーとロールを認証モジュールのユーザーにマップします。EAP1
は host-domain
と spnego-domain
の両方で設定されます。アプリケーションは、spnego-domain
を使用して認証を実行し、承認のためにユーザーのロールを取得するよう、 web.xml
および jboss-web.xml
を介して設定されます。また、セクリティートークンをオペレーティングシステムからブラウザーに渡せない場合のために、FORM 認証をフォールバック認証としてアプリケーションに設定することもできます。FORM 認証がフォールバックとして設定された場合、追加のセキュリティードメインを追加してサポートする必要があります。このセキュリティードメインは Kerberos と SPNEGO には依存せず、FORM 認証のみ (ユーザー名とパスワードの検証およびロール) をサポートする必要があります。各アプリケーションは、spnego-domain
を使用するよう設定され、FORM 認証をフォールバックとして提供するよう設定されます。また、各アプリケーションはパス /secure/*
をセキュアにするよう設定され、承認の処理に独自のロールリストを提供します。
5.7.1.1. 仕組み
以下のユーザーが Kerberos サーバーに作成されています。
ユーザー名 | パスワード |
---|---|
Brent |
samplePass |
Andy |
samplePass |
Bill |
samplePass |
Ron |
samplePass |
以下のロールは、 password-stacking
オプションを useFirstPass
に設定してチェーンされた追加のモジュールを介してユーザーにマップします。
ユーザー名 | ロール |
---|---|
Brent |
all |
Andy |
A |
Bill |
B |
Ron |
各アプリケーションには以下のロールが設定されています。
アプリケーション/SP | 許可されるロール |
---|---|
sampleAppA |
all、A |
sampleAppB |
all、B |
起動時に、EAP1
はコアサービスをロードしてから security
およびその他のサブシステムをロードします。host-domain
は Kerberos サーバーへの接続を確立し、spnego-domain
は host-domain
に接続します。sampleAppA
と sampleAppB
がデプロイされ、認証のために spnego-domain
に接続します。
Brent は Kerberos でセキュア化されたコンピューターにログインしています。Brent はブラウザーを開き、sampleAppA/secure/hello.html
へのアクセスを試みます。このページはセキュアであるため、認証が必要になります。EAP1
は、Brent のコンピューターに設定されている Kerberos Key Distribution Center (Kerberos サーバー) へのキーを要求するリクエストを送信するよう、ブラウザーに指示します。ブラウザーがキーを取得した後、sampleAppA
に送信されます。sampleAppA
はチケットを spnego-domain
に送信します。そこでチケットがアンパックされ、設定済みの Kerberos サーバーとともに host-domain
によって認証が実行されます。チケットが認証されたら、Brent のロールは sampleAppA
に戻され、承認が実行されます。Brent は all
ロールを持っているため、sampleAppA/secure/hello.html
にアクセスできます。Brent が sampleAppB/secure/hello.html
にアクセスする場合も同じ処理が発生します。 all
ロールを持っているため、アクセスが許可されます。Andy と Bill にも同じ処理が発生しますが、Andy は sampleAppA/secure/hello.html
のみにアクセスでき、sampleAppB/secure/hello.html
にはアクセスできません。Bill はこの逆で、sampleAppB/secure/hello.html
のみにアクセスでき、sampleAppA/secure/hello.html
にはアクセスできません。Ron は sampleAppA/secure/hello.html
または sampleAppB/secure/hello.html
の認証に成功しますが、ロールを持たないためどちらにもアクセスできません。
オフィスのネットサークに接続する個人のラップトップなど、Andy が Kerberos でセキュア化されていないコンピューターから sampleAppA/secure/hello.html
にアクセスしようとすると、フォールバックのログインとして FORM ログインページに転送されます。Andy のクレデンシャルはフォールバックセキュリティードメイン経由で認証され、承認の処理が続行されます。
Revised on 2018-08-29 12:46:31 EDT