第15章 シングルサインオン (SSO)
15.1. Web アプリケーションのシングルサインオン (SSO) について
概要
SSO (シングルサインオン) は 1 つのリソースへの認証を用いて他のリソースへのアクセスを暗黙的に承認できるようにします。
クラスター化された SSO とクラスター化されていない SSO
クラスター化されていない SSO は、アプリケーションの承認情報の共有を同じ仮想ホスト内に制限します。また、ホストの障害に対する耐性を持ちません。クラスター化された SSO データは複数の仮想ホストのアプリケーション間で共有することができ、フェイルオーバーに対する耐性を持ちます。さらに、クラスター化された SSO はロードバランサーからのリクエストを受信することができます。
SSO の仕組み
リソースが保護されていない場合、ユーザーの認証は完全に無視されます。ユーザーが保護されたリソースにアクセスすると、ユーザーの認証が必要になります。
認証に成功すると、ユーザーに関連するロールが保存され、関連する他のリソースすべての承認に使用されます。
ユーザーがアプリケーションからログアウトしたり、アプリケーションがプログラムを用いてセッションを無効化した場合、永続化された承認データはすべて削除され、プロセスを最初からやり直しします。
他のセッションが有効である場合、セッションタイムアウトは SSO セッションを無効化しません。
SSO の制限
- サードパーティー境界にまたがる伝搬がない
- JBoss Enterprise Application Platform のコンテナ内にデプロイされたアプリケーションの間でのみ SSO を使用できます。
- コンテナ管理の認証のみ使用可能
- アプリケーションの
web.xml
で<login-config>
などのコンテナ管理認証要素を使用しなければなりません。 - クッキーが必要
- SSO はブラウザークッキーを介して維持されます。URL の再書き込みはサポートされていません。
- レルムとセキュリティードメインの制限
requireReauthentication
パラメーターがtrue
に設定されている場合を除き、同じ SSO バルブに設定されたすべての Web アプリケーションは、web.xml
の同じレルム設定と同じセキュリティードメインを共有しなければなりません。関与する Web アプリケーションの 1 つに対し、Host 要素内または Engine 要素周囲で Realm 要素をネストできますが、context.xml 要素内で Realm 要素はネストできません。jboss-web.xml
に設定された<security-domain>
はすべての Web アプリケーション全体で一貫していなければなりません。すべてのセキュリティー統合が同じ認証情報 (ユーザー名やパスワードなど) を許可しなければなりません。