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 インスタンスにデプロイされています。
![シナリオ4](https://access.redhat.com/webassets/avalon/d/Red_Hat_JBoss_Enterprise_Application_Platform-7.2-Security_Architecture-ja-JP/images/c19f6c1446b6059750c676be05469513/scenario4.png)
5.4.1. Security
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 のセッションが無効化された場合はキャッシュ全体で無効化され、クラスターでアクセスしようとするアプリケーションやサーバーに関係なく、再認証が要求されます。