SAML のシングル・サインオン・シナリオ、フィーチャー、および制約

Security Assertion Markup Language (SAML) は、ユーザー ID、認証、および属性などの情報の表現と交換を行うための OASIS オープン・スタンダードです。 SAML は、ベンダー間共通のシングル・サインオン (SSO) インターオペラビリティーを提供する最適なテクノロジーとして急速に採用されつつあります。

WebSphere® Application Server SAML サービス・プロバイダー (SP) は、SAML 2.0 ID プロバイダー (IdP) によって開始されるシングル・サインオン (SSO) をサポートします。 WebSphere IdP によって開始される SSO サービスは、トラスト・アソシエーション・インターセプターとして実装され、以下のワークフローに従って処理を進めます。
  1. クライアントが、Idp、SP、またはその他の任意の場所でホストされている、カスタマー提供のフロントエンド Web アプリケーションにアクセスします。
  2. フロントエンド Web アプリケーションが、クライアントを IdP へリダイレクトします。
  3. ユーザーが IdP に対して認証されます。
  4. IdP は、 HTTP POST を介して SAML 応答を送信することにより、 WebSphere Application Server 上のアサーション・コンシューマー・サービス (ACS) にクライアントをリダイレクトします。
  5. アプリケーション・サーバーが、SAML 応答を処理し、セキュリティー・コンテキストを作成します。
  6. アプリケーション・サーバーが、HTTP 応答に LTPA Cookie を追加します。
  7. クライアントが、HTTP 要求内の targetUrl TAI カスタム・プロパティーまたは RelayState パラメーターに基づいて、Web リソースまたはビジネス・アプリケーションにリダイレクトされます。
  8. アプリケーション・サーバーが、要求をインターセプトし、LTPA Cookie をセキュリティー・コンテキストにマップし、要求された Web リソースにアクセスする権限をユーザーに付与します。
  9. アプリケーション・サーバーが、HTTP 応答をクライアントに返送します。
以下の図は、SAML SSO フローを示しています。 このフローでは、「サービス・プロバイダー」は WebSphereです。
SAML SSO フロー
WebSphere Application Server の SAML SSO コンポーネントには、以下が含まれます。
  • 複数の 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 アサーションを監査する機能。
SAML SSO フィーチャーには以下の機能ハイライトおよびベスト・プラクティスがあてはまります。
  • WebSphere SAML サービス・プロバイダーのアサーション・コンシューマー・サービス (ACS):
    ACS は、SAML プロトコル・メッセージを受け入れ、セキュリティー・コンテキストを確立する、セキュアなサーブレットです。 ACS URL は事前定義された ContextRoot を samlsps として持ち、URL フォーマットは次のとおりです。
    https://<host name>:<port>/samlsps/<any uri pattern>
    ACS が受け取った SAMLResponse は TAI によってインターセプトされ、検証が成功すると、要求がターゲット・アプリケーション・サービスにリダイレクトされます。
  • 複数セキュリティー・ドメイン・サポート:
    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 ログイン・フローを提供します。
    1. クライアントが、最初に IdP またはアプリケーション・サーバーに対して認証することなく、保護されたビジネス・アプリケーションにアクセスします。
    2. アプリケーション・サーバーが、構成されたフィルター定義に基づいて要求をインターセプトします。
    3. アプリケーション・サーバーが、元の要求 URL の値を、WasSamlSpReqUrl という名前の Cookie に保管します。
    4. アプリケーション・サーバーが、sso_<id>.sp.login.error.page カスタム・プロパティーで構成された IdP ログイン・ページに、クライアントをリダイレクトします。
    5. IdP が開始した SSO のフローに従って認証が続きます。
      1. ユーザーが IdP に対して認証されます。
      2. IdP は、 HTTP POST を介して SAML 応答を送信することにより、 WebSphere Application Server 上のアサーション・コンシューマー・サービス (ACS) にクライアントをリダイレクトします。
      3. アプリケーション・サーバーが、SAML 応答を処理し、セキュリティー・コンテキストを作成します。
      4. アプリケーション・サーバーが、HTTP 応答に LTPA Cookie を追加します。
    6. アプリケーション・サーバーが、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 プロバイダーは親グループ名を知りません。

  • [8.5.5.16 以降]ログアウトのサポート:

    WebSphere Application Server SAML トラスト・アソシエーション・インターセプター (TAI) はシングル・ログアウト (SLO) プロファイルをサポートしていませんが、ユーザーをカスタム・ログアウト・ページにリダイレクトするようにログアウト URL を使用して TAI を構成することができます。 TAI によって保護されたエンドポイントから HTTPServletRequest.logout メソッドが呼び出されると、HTTP 要求は、WebSphere ログアウトが完了した後でこの URL に転送されます。 詳しくは、 SAML Web シングル・サインオン (SSO) プログラマチック・ログアウトの有効化を参照してください。

WebSphere Application Server は、 IdP が開始した SAML Web SSO のみをサポートします。

以下の仕様またはシナリオは、 WebSphere Application Server SAML SSO ではサポートされていません。
  • 拡張クライアントまたはプロキシー (ECP) プロファイル
  • ID プロバイダー・ディスカバリー・プロファイル
  • シングル・ログアウト・プロファイル
  • 名前 ID 管理プロファイル
  • 成果物解決プロファイル
  • アサーション照会/要求プロファイル
  • 名前 ID マッピング・プロファイル
  • SAML 属性プロファイル