15.4. Web アプリケーションでの SSO (シングルサインオン) の使用
概要
SSO (シングルサインオン) の機能は Web および Infinispan サブシステムによって提供されます。この手順に従って Web アプリケーションに SSO を設定します。
要件
- 認証と承認を処理するセキュリティードメインが設定されている必要があります。
infinispan
サブシステムが存在する必要があります。管理対象ドメインの場合、このサブシステムはfull-ha
プロファイルにあります。スタンドアロンサーバーではstandalone-full-ha.xml
設定を使用します。web
cache-container
と SSO cache-container が存在する必要があります。例の設定ファイルにはweb
cache-container がすでに含まれており、一部の設定には SSO cache-container も含まれています。以下のコマンドを使用して SSO キャッシュコンテナをチェックし、有効にします。これらのコマンドは管理対象ドメインのfull
プロファイルを変更することに注意してください。スタンドアロンサーバーに対して異なるプロファイルを使用したり、コマンドの/profile=full
部分を削除するため、コマンドを変更することもできます。例15.1
web
cache-container の確認前述のプロファイルや設定には、デフォルトとしてweb
cache-container が含まれています。次のコマンドを使用して、web
cache-container の存在を確認します。異なるプロファイルを使用する場合は、ha
をその名前に置き換えます。/profile=ha/subsystem=infinispan/cache-container=web/:read-resource(recursive=false,proxies=false,include-runtime=false,include-defaults=true)
サブシステムが存在する場合、結果はsuccess
になります。存在しない場合は追加する必要があります。例15.2
web
cache-container の追加次の 3 つのコマンドを使用してweb
cache-container を設定に対して有効にします。必要に応じてプロファイルの名前やその他のパラメーターを変更します。以下のパラメーターはデフォルト設定で使用されるパラメーターになります。/profile=ha/subsystem=infinispan/cache-container=web:add(aliases=["standard-session-cache"],default-cache="repl",module="org.jboss.as.clustering.web.infinispan")
/profile=ha/subsystem=infinispan/cache-container=web/transport=TRANSPORT:add(lock-timeout=60000)
/profile=ha/subsystem=infinispan/cache-container=web/replicated-cache=repl:add(mode="ASYNC",batching=true)
例15.3
SSO
cache-container の確認次の管理 CLI コマンドを実行します。/profile=ha/subsystem=infinispan/cache-container=web/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
"sso" => {
のような出力を探します。このような出力が見つからない場合、設定に SSO cache-container は存在しません。例15.4
SSO
cache-container の追加/profile=ha/subsystem=infinispan/cache-container=web/replicated-cache=sso:add(mode="SYNC", batching=true)
- SSO を使用するよう
web
サブシステムを設定する必要があります。次のコマンドは、default-host
という仮想サーバー上と、クッキードメインdomain.com
で SSO を有効にします。キャッシュ名はsso
で、再認証は無効になっています。/profile=ha/subsystem=web/virtual-server=default-host/sso=configuration:add(cache-container="web",cache-name="sso",reauthenticate="false",domain="domain.com")
- SSO 情報を共有する各アプリケーションは、
jboss-web.xml
デプロイメント記述子にある同じ <security-domain> とweb.xml
設定ファイルにある同じレルムを使用するよう設定されている必要があります。
クラスター化された SSO バルブとクラスター化されていない SSO バルブの違い
クラスター化された SSO では個別のホスト間で認証を共有できますが、クラスター化されていない SSO では共有できません。どちらの SSO も同じように設定されますが、クラスター化された SSO には永続データのクラスタリングレプリケーションを制御する cacheConfig
や processExpiresInterval
、 maxEmptyLife
パラメーターが含まれています。
例15.5 クラスター化された SSO 設定の例
クラスター化された SSO とクラスター化されていない SSO は大変似ているため、クラスター化されている設定のみを取り上げます。この例は
tomcat
と呼ばれるセキュリティードメインを使用します。
<jboss-web> <security-domain>tomcat</security-domain> <valve> <class-name>org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn</class-name> <param> <param-name>maxEmptyLife</param-name> <param-value>900</param-value> </param> </valve> </jboss-web>
表15.1 SSO 設定のオプション
オプション | 説明 |
---|---|
cookieDomain |
SSO クッキーに使用するホストドメインです。デフォルトは
/ です。app1.xyz.com と app2.xyz.com によるクッキーの共有を許可するには、cookieDomain を xyz.com に設定します。
|
maxEmptyLife |
クラスター化された SSO のみ設定可能です。失効する前に、アクティブなセッションを持たない SSO バルブを 1 つのリクエストが使用できる最大秒数。唯一バルブにアクティブなセッションが付加されている場合、正の値を設定するとノードのシャットダウンが適切に処理されるようになります。maxEmptyLife を
0 に設定すると、ローカルセッションがコピーされると同時にバルブが終了しますが、クラスター化されたアプリケーションからのセッションのバックアップコピーは他のクラスターノードが使用できるようになります。バルブの管理セッションの生存期間を越えてバルブが生存できるようにすると、他のリクエストを実行する時間がユーザーに与えられます。このリクエストはセッションのバックアップコピーをアクティベートする他のノードへフェイルオーバーすることができます。デフォルトは 1800 秒 (30 分) です。
|
processExpiresInterval |
クラスター化された SSO のみ設定可能です。
MaxEmptyLife タイムアウトを失効した SSO インスタンスをバルブが発見し無効化する動作の間隔の最初秒数。デフォルトは 60 (1 分) です。
|
requiresReauthentication |
true の場合、各リクエストはキャッシュされた認証情報を使用してセキュリティーレルムへ再認証します。false の場合 (デフォルト)、バルブによる新しい要求の認証には有効な SSO クッキーのみが必要になります。
|
セッションの無効化
アプリケーションはメソッド javax.servlet.http.HttpSession.invalidate()
を呼び出し、プログラムを用いてセッションを無効化することができます。