SAML のシングル・サインオン・シナリオ、フィーチャー、および制約
Security Assertion Markup Language (SAML) は、ユーザー ID、認証、および属性などの情報の表現と交換を行うための OASIS オープン・スタンダードです。 SAML は、ベンダー間共通のシングル・サインオン (SSO) インターオペラビリティーを提供する最適なテクノロジーとして急速に採用されつつあります。
- クライアントが、Idp、SP、またはその他の任意の場所でホストされている、カスタマー提供のフロントエンド Web アプリケーションにアクセスします。
- フロントエンド Web アプリケーションが、クライアントを IdP へリダイレクトします。
- ユーザーが IdP に対して認証されます。
- IdP は、 HTTP POST を介して SAML 応答を送信することにより、 WebSphere Application Server 上のアサーション・コンシューマー・サービス (ACS) にクライアントをリダイレクトします。
- アプリケーション・サーバーが、SAML 応答を処理し、セキュリティー・コンテキストを作成します。
- アプリケーション・サーバーが、HTTP 応答に LTPA Cookie を追加します。
- クライアントが、HTTP 要求内の targetUrl TAI カスタム・プロパティーまたは RelayState パラメーターに基づいて、Web リソースまたはビジネス・アプリケーションにリダイレクトされます。
- アプリケーション・サーバーが、要求をインターセプトし、LTPA Cookie をセキュリティー・コンテキストにマップし、要求された Web リソースにアクセスする権限をユーザーに付与します。
- アプリケーション・サーバーが、HTTP 応答をクライアントに返送します。
- 複数の ID プロバイダーを使用したシングル・サインオンのサポート
- ID アサーション用のオプション、およびアサーション ID をサービス・プロバイダーのユーザー・レジストリーにマップするためのオプションのサポート
- SAML トークン属性をレルム、プリンシパル、固有 ID、およびグループにマップまたは表明し、それらをサービス・プロバイダー・セキュリティー・コンテキストに設定する機能
- カスタマイズされた ID マッピングを可能にするプラグ・ポイントのサポート
- サービス・プロバイダー・レジストリーから ID グループ・メンバーシップを取得し、セキュリティー・コンテキストに設定する機能
- 要求が適切な IdP から送られてきたものではなかった場合に要求をその IdP に要求を返す IdP 選択フィルター
- 署名アルゴリズム RSA-SHA1 および RSA-SHA256 のサポート
- アプリケーションによるアクセスのためにサービス・プロバイダーのサブジェクト内に SAML トークンを保持し、ダウンストリームの認証済み Enterprise JavaBeans (EJB) または Web サービス呼び出しで使用できるようにする機能
- POST メソッドを実装するビジネス・サービスが ACS として動作することのサポート。 ターゲット・ビジネス・サーブレットを ACS として使用するとブラウザーとサービス・プロバイダー・サーバー間の 1 往復分が減少するので、そうすることをお勧めします。
- Issuer や NameID などの主要 SAML アサーションを監査する機能。
- WebSphere SAML サービス・プロバイダーのアサーション・コンシューマー・サービス (ACS):ACS は、SAML プロトコル・メッセージを受け入れ、セキュリティー・コンテキストを確立する、セキュアなサーブレットです。 ACS URL は事前定義された ContextRoot を
samlsps
として持ち、URL フォーマットは次のとおりです。
ACS が受け取った SAMLResponse は TAI によってインターセプトされ、検証が成功すると、要求がターゲット・アプリケーション・サービスにリダイレクトされます。https://<host name>:<port>/samlsps/<any uri pattern>
- 複数セキュリティー・ドメイン・サポート:ACS はアプリケーション・セキュリティー・ドメインにデプロイされます。また、ACS は、ビジネス・アプリケーションと同じセキュリティー・ドメインに常駐するものと予想されます。 ACS とターゲット・ビジネス・アプリケーション (RelayState) が別々のセキュリティー・ドメインにある場合は、次のようないくつかの推奨オプションがあります。
- SAMLResponse を ACS のセキュリティー・ドメイン内で処理する。
- ビジネス・アプリケーションと同じドメインを持つように ACS を再構成する。
- ターゲット・ビジネス・サービスを ACS として使用する。
- 複数のシングル・サインオン・パートナー:
WebSphere SAML TAI は、複数の ACS および IdP シングル・サインオン (SingleSignOnService) パートナーをサポートします。 1 つの SSO パートナーが 1 つの ACS URL として定義され、複数の SingleSignOnService オブジェクトを持つことができます。 複数の SSO パートナーが存在する場合、各 SSO パートナーシップは ACS URL によって一意的に識別されます。
各 SSO パートナーは、独自の検証ルール、アサーションからサブジェクトへのマッピング・ルール、または独自の IdP を使用して SSO を開始するルールを持つことができます。 例えば、ある SSO パートナーでは、ユーザー・レジストリーを呼び出さずに WebSphere プラットフォーム・サブジェクトを生成する操作からなる ID アサーションを、処理することができます。 もう 1 つの SSO パートナーはローカルのユーザー・レジストリー検索を実行することができます。 もう 1 つの例は、1 つの SSO パートナーが 1 つの IdP を使用して SSO を処理し、もう 1 つの SSO パートナーが別の IdP を使用して SSO を処理するというものです。
- WebSphere Application Server は、より従来の SP 開始フローをエミュレートするが、完全には実装していない「ブックマーク・スタイル」の SSO ログイン・フローを提供します。
- クライアントが、最初に IdP またはアプリケーション・サーバーに対して認証することなく、保護されたビジネス・アプリケーションにアクセスします。
- アプリケーション・サーバーが、構成されたフィルター定義に基づいて要求をインターセプトします。
- アプリケーション・サーバーが、元の要求 URL の値を、
WasSamlSpReqUrl
という名前の Cookie に保管します。 - アプリケーション・サーバーが、
sso_<id>.sp.login.error.page
カスタム・プロパティーで構成された IdP ログイン・ページに、クライアントをリダイレクトします。 - IdP が開始した SSO のフローに従って認証が続きます。
- ユーザーが IdP に対して認証されます。
- IdP は、 HTTP POST を介して SAML 応答を送信することにより、 WebSphere Application Server 上のアサーション・コンシューマー・サービス (ACS) にクライアントをリダイレクトします。
- アプリケーション・サーバーが、SAML 応答を処理し、セキュリティー・コンテキストを作成します。
- アプリケーション・サーバーが、HTTP 応答に LTPA Cookie を追加します。
- アプリケーション・サーバーが、
WasSamlSpReqUrl
Cookie の値を使用して、クライアントを元の要求 URL にリダイレクトします。
- ID マッピングとセキュリティー・コンテキスト管理:WebSphere SAML TAI では、強力で柔軟な ID マッピングが提供されています。これは、次のように分類することができます。
- ID アサーション: ローカル・レジストリーを使用せずに SAML アサーションを WebSphere プラットフォーム・サブジェクトにマップします。 典型的な ID アサーション・シナリオは次のとおりです。
- デフォルト: NameID をプリンシパルとして、発行者をレルムとして、選択した属性をグループ・メンバーとして使用します。
- カスタマイズ: SAML 属性をプリンシパル、レルム、アクセス ID、およびグループ・メンバーとして構成します。
- サービス・プロバイダーのユーザー・レジストリーに対して IdP から NameID をマップし、そのレジストリーからサブジェクトを作成します。 以下のシナリオがサポートされています。
- SAML NameId をローカル・レジストリーに直接マップします。
- カスタム・マッピング用のプラグイン・ポイントを提供してから、新しいユーザーを使用してサブジェクトを作成します。
- NameID をユーザー・レジストリーにマップし、ID アサーションにフォールバックします。
- ID アサーションとローカル・レジストリーの組み合わせ:
TAI は、ID アサーションの他に、表明されたグループの親グループをサービス・プロバイダーのユーザー・レジストリーで検索し、それらの親グループをサブジェクトに組み込みます。 例えば、親グループに許可が付与されても、ID プロバイダーは親グループ名を知りません。
- ID アサーション: ローカル・レジストリーを使用せずに SAML アサーションを WebSphere プラットフォーム・サブジェクトにマップします。 典型的な ID アサーション・シナリオは次のとおりです。
- ログアウトのサポート:
WebSphere Application Server SAML トラスト・アソシエーション・インターセプター (TAI) はシングル・ログアウト (SLO) プロファイルをサポートしていませんが、ユーザーをカスタム・ログアウト・ページにリダイレクトするようにログアウト URL を使用して TAI を構成することができます。 TAI によって保護されたエンドポイントから
HTTPServletRequest.logout
メソッドが呼び出されると、HTTP 要求は、WebSphere ログアウトが完了した後でこの URL に転送されます。 詳しくは、 SAML Web シングル・サインオン (SSO) プログラマチック・ログアウトの有効化を参照してください。
WebSphere Application Server は、 IdP が開始した SAML Web SSO のみをサポートします。
- 拡張クライアントまたはプロキシー (ECP) プロファイル
- ID プロバイダー・ディスカバリー・プロファイル
- シングル・ログアウト・プロファイル
- 名前 ID 管理プロファイル
- 成果物解決プロファイル
- アサーション照会/要求プロファイル
- 名前 ID マッピング・プロファイル
- SAML 属性プロファイル