SAML のシングル・サインオン・シナリオ、フィーチャー、および制約
Security Assertion Markup Language (SAML) は、ユーザー ID、認証、および属性などの情報の表現と交換を行うための OASIS オープン・スタンダードです。 SAML は、ベンダー間共通のシングル・サインオン (SSO) インターオペラビリティーを提供する最適なテクノロジーとして急速に採用されつつあります。
- ユーザーは、IdP、SP その他に常駐可能なフロントエンド Web アプリケーションにアクセスします。
- フロントエンド Web アプリケーションはユーザーを IdP にリダイレクトし、ユーザーは IdP に対して認証を行います。
- IdP は、SAML 応答を隠しフォームで HTTP POST を通じて送ることによって、ユーザーをアサーション・コンシューマー・サービス (ACS) にリダイレクトします。
- SP が SAML 応答を処理し、WebSphere セキュリティー・コンテキストを作成します。
- SP が LTPA Cookie を HTTP 応答に追加し、要求を Web リソースまたはビジネス・アプリケーションにリダイレクトします。
- WebSphere Application Server は要求をインターセプトし、LTPA Cookie をセキュリティー・コンテキストにマップし、要求された Web リソースへのユーザー・アクセスを許可します。
- WebSphere Application Server は HTTP 応答をユーザーに返します。
次の図は SAML SSO のフローを示しています。

- WebSphere SAML サービス・プロバイダーは、複数の ID プロバイダーを使用したシングル・サインオンをサポートします。
- WebSphere SAML サービス・プロバイダーは、ID アサーション用のオプション、およびアサーション ID をこのサービス・プロバイダーのユーザー・レジストリーにマップするためのオプションをサポートします。
- WebSphere SAML サービス・プロバイダーは、SAML トークン属性をレルム、プリンシパル、固有 ID、およびグループにマップまたは表明し、それらをサービス・プロバイダー・セキュリティー・コンテキスト内に設定することができます。
- WebSphere SAML サービス・プロバイダーは、カスタマイズされた ID マッピングを可能にするプラグ・ポイントを提供します。
- WebSphere SAML サービス・プロバイダーには、このサービス・プロバイダーのレジストリーから ID のグループ・メンバーシップを取得して、セキュリティー・コンテキストにデータを取り込むオプションがあります。
- WebSphere SAML サービス・プロバイダーは、要求が IdP から送られてきたものではなかった場合に要求を適切な IdP に返す IdP 選択フィルターを提供します。
- WebSphere SAML サービス・プロバイダーは、RSA-SHA1 署名アルゴリズムと RSA-SHA256 署名アルゴリズムの両方をサポートします。
- WebSphere SAML サービス・プロバイダーは、SAML トークンを、アプリケーションによるアクセスに備えてこのサービス・プロバイダーのサブジェクトに保存し、認証されたダウンストリームの Enterprise JavaBean (EJB) または Web Service 呼び出しで使用できるようにします。
- WebSphere SAML サービス・プロバイダーはビジネス・アプリケーション URL が AssertionConsumerService URL の役割を果たすようにできるので、IdP は SAMLResponse をビジネス・アプリケーション URL に直接送ることができます。
- WebSphere SAML トラスト・アソシエーション・インターセプター (TAI) が、鍵 SAML アサーション (Issuer および NameID を含む) の監査を可能にします。
- WebSphere SAML サービス・プロバイダーのアサーション・コンシューマー・サービス (ACS):
ACS は、SAML プロトコル・メッセージを受け入れ、セキュリティー・コンテキストを確立する、セキュアなサーブレットです。 ACS URL は事前定義された ContextRoot を samlsps として持ち、URL フォーマットは次のとおりです。
ACS が受け取った SAMLResponse は TAI によってインターセプトされ、検証が成功すると、要求がターゲット・アプリケーション・サービスにリダイレクトされます。https://<host name>:<port>/samlsps/<any uri pattern>
POST メソッドを実装するビジネス・サービスはいずれも ACS として使用することができます。 ターゲット・ビジネス・サーブレットを ACS として使用するとブラウザーとサービス・プロバイダー・サーバー間の 1 往復分が減少するので、そうすることをお勧めします。
- 複数セキュリティー・ドメイン・サポート:
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 を開始するルールを持つことができます。 例えば、1 つの SSO パートナーは、ユーザー・レジストリーを呼び出さずに WebSphere プラットフォーム・サブジェクトを生成する ID アサーションを処理することができます。 もう 1 つの SSO パートナーはローカルのユーザー・レジストリー検索を実行することができます。 もう 1 つの例は、1 つの SSO パートナーが 1 つの IdP を使用して SSO を処理し、もう 1 つの SSO パートナーが別の IdP を使用して SSO を処理するというものです。
- ブックマーク・スタイル SSO および TAI フィルター:
これまで SP 開始 SSO に適合していたブックマーク・スタイル SSO を検討してください。 ユーザーは、IdP への認証を最初に行わずにビジネス・アプリケーションにアクセスします。 SSO を開始するように WebSphere SAML TAI を構成することができます。 各 SSO パートナー構成には IdP ログイン・アプリケーションとルーティング・フィルターが含まれています。 各フィルターは、HTTP 要求が SSO パートナーのために選択されるかどうかを調べるために HTTP 要求と突き合わされる条件を表す選択ルールのリストを定義します。 フィルター・ルールは、HTTP 要求ヘッダー、参照者データ、およびターゲット・アプリケーション名を組み合わせたものです。 WebSphere SAML TAI ランタイム環境は、ユーザー要求をすべてのフィルター・ルールと照合して SSO パートナーを一意的に識別し、その要求を選択された IdP ログイン・アプリケーションにリダイレクトします。 TAI フィルターにより、IdP 開始 SSO は、SP 開始 SSO と IdP ディスカバリー・サービスの組み合わせに類似した機能を提供します。
- 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 は IdP 開始の SAML Web SSO のみをサポートします。
- 拡張クライアントまたはプロキシー (ECP) プロファイル
- ID プロバイダー・ディスカバリー・プロファイル
- シングル・ログアウト・プロファイル
- 名前 ID 管理プロファイル
- 成果物解決プロファイル
- アサーション照会/要求プロファイル
- 名前 ID マッピング・プロファイル
- SAML 属性プロファイル