SAML 2.0 のシングル サインオン設定

シングル サインオン設定の一環として、アイデンティティ プロバイダがアサーションをサービス プロバイダに配信する方法を決定します。
sm1252sp1jjp
シングル サインオン設定の一環として、アイデンティティ プロバイダがアサーションをサービス プロバイダに配信する方法を決定します。
2
以下の手順に従います。
  1. 管理 UI で、サービス プロバイダ オブジェクトの[SAML プロファイル]設定に移動します。
  2. ページの[SSO]セクションのフィールドに入力します。通信に使用する SAML バインドを選択します。
    HTTP-Artifact バインドの場合、保護された Artifact 解決サービスにユーザがアクセスできるようにバックチャネルを設定します。バックチャネル設定は、設定ウィザードの[属性]手順にあります。
  3. [サブミット]をクリックして、変更を保存します。
シングル サインオンのアサーション有効期間
sm1252sp1jjp
シングル サインオンの場合、スキュー時間と有効期間の値によって、アサーションの合計有効時間を が計算する方法が決定されます。はアサーションの生成および消費にスキュー時間を適用します。
: この説明におけるアサーティング パーティは、SAML 1.x プロデューサ、SAML 2.0 アイデンティティ プロバイダ、または WS フェデレーション アカウント パートナーです。依存パーティは、SAML 1.x コンシューマ、SAML 2.0 サービス プロバイダ、または WS フェデレーション リソース パートナーです。
アサーション ドキュメントで、NotBefore と NotOnOrAfter の値は、有効期間の開始と終了を表します。
アサーティング パーティで、はアサーションの有効性を設定します。有効期間は、アサーションが生成されたときのシステム時間です。は、この時間を使用してアサーションに IssueInstant 値を設定した後、IssueInstant 値からスキュー時間の値を引き算します。その結果の時間が NotBefore 値になります。
NotBefore=IssueInstant - スキュー時間
有効期間の終了を決定するために、は、有効期間の値とスキュー時間を IssueInstant の値に加算します。その結果の時間が NotOnOrAfter 値になります。
NotOnOrAfter=有効期間 + スキュー時間 + IssueInstant
時間は GMT が基準になります。
たとえば、アサーティング パーティでアサーションが 1:00 GMT に生成されたとします。スキュー時間が 30 秒、有効期間が 60 秒とすると、アサーション有効期間は 12:59:30 GMT ~ 1:01:30 GMT となります。この期間は、アサーションが生成される 30 秒前に開始され、その後 90 秒後に終了します。
依存パーティで、は、アサーティング パーティで受信したアサーションが有効かどうかを判別するために実行する計算と同じ計算を実行します。
パートナーシップの両側での によるアサーション有効期間の計算
がパートナーシップの両側にある場合、アサーション有効期間は、スキュー時間の 2 倍と有効期間の総和になります。計算式は次のとおりです。
アサーション有効期間 = 2 x スキュー時間(アサーティング パーティ) + 有効期間 + 2 x スキュー時間(依存パーティ)
式の前半部分(2 x スキュー時間 + 有効期間)は、アサーティング パーティにおける有効期間ウィンドウの開始と終了を表します。式の後半部分(2 x スキュー時間)は、依存パーティにおけるシステム クロックのスキュー時間を表します。有効期間の NotBefore および NotOnOrAfter の両端を計算するために 2 を掛けます。
: レガシー フェデレーションでは、有効期間はアサーティング パーティでのみ設定されます。
アサーティング パーティ
アサーティング パーティでの値は以下のとおりです。
  • IssueInstant=5:00PM
  • 有効期間 = 60 秒
  • スキュー時間 = 60 秒
  • NotBefore = 4:59PM
  • NotOnOrAfter=5:02PM
依存パーティ
依存パーティは、アサーションから NotBefore と NotOnOrAfter の値を使用し、それらの値にスキュー時間を適用します。この数式は、依存パーティが新しい NotBefore と NotOnOrAfter の値を計算する方法です。
  • スキュー時間 = 180 秒(3 分)
  • NotBefore = 4:56PM
  • NotOnOrAfter=5:05PM
アサーション有効期間
この例の値を使用したアサーションの合計有効期間の計算は、次のとおりです。
120 秒(2x60) + 60 秒 + 360 秒(2x180) = 540 秒(9 分)
さまざまなシングル サインオン バインドに対するインデックス付きエンドポイントの定義
フェデレーション通信に対してインデックス付きのエンドポイントを設定できます。インデックス付きのエンドポイントは、アサーションが消費されるサイトです。のコンテキストでは、このエンドポイントはアサーション コンシューマ サービスが存在するサービス プロバイダです。
設定したエンドポイントのそれぞれには、アサーション コンシューマ サービスURL への明示的な単一の参照の代わりに、一意のインデックス値が割り当てられます。割り当てられたインデックスは、サービス プロバイダがアイデンティティ プロバイダに送信するアサーション リクエストに追加されます。
インデックス付きのエンドポイントをサポートするサードパーティ アイデンティティ プロバイダとのフェデレーション関係を持つ
Single Sign-On
サービス プロバイダに対して、インデックス付きのエンドポイントを設定できます。また、複数のエンドポイントをサービスに割り当てることにより、アサーション コンシューマ サービスに対してさまざまなプロトコル バインド(Artifact、POST)を設定できます。
注:
使用しているネットワークに別の
Single Sign-On
バージョンが含まれる場合、インデックス付きのエンドポイントは設定できません。たとえば、サービス プロバイダが r12.0 SP 2 で、アイデンティティ プロバイダが r12.0 SP3 である場合、インデックス付きのエンドポイントを設定できません。両方の HTTP バインドに対して、アサーション コンシューマ サービスを 1 つだけ設定します。
次の図は、インデックス付きのエンドポイントによる利点があるネットワークを示しています。
Graphic showing a network using indexed endpoints
インデックス付けされたエンドポイント フロー図
次の図は、インデックス付けされたエンドポイントを使用して、シングル サインオンがどのように動作するかを示します。
Graphic showing how single sign-on works with indexed enpoints
 
注:
Web エージェント オプション パックまたは
CA Access Gateway
は FWS 機能を提供できます。
インデックス付けされたエンドポイントを使用したイベントのシーケンスは以下のとおりです。
  1. ユーザは、固有の IdP を使用して認証するリンクを選択します。インデックス機能が有効であるため、リンクには IdP ID および AssertionConsumerServiceIndex クエリ パラメータ インデックスがクエリ パラメータとして含まれます。
  2. SP フェデレーション Web サービス(FWS)アプリケーションは、そのローカル ポリシー サーバから 認証リクエストを要求します。このアプリケーションが送信するリクエストには、IdP ID のほか、必要に応じてクエリ パラメータ AssertionConsumerServiceIndex および ForceAuthn が含まれます。
    ACS Index パラメータと Protocol Binding パラメータは相互に排他的であるため、プロトコル バインドはリクエストに含まれません。AssertionConsumerServiceIndex は、すでにバインドに関連付けられているため、Protocol Binding 値を指定する必要はありません。プロトコル バインドおよび AssertionConsumerServiceIndex がクエリ パラメータとして渡される場合、ローカル ポリシー サーバはエラーの応答を出力し、リクエストを拒否します。
  3. 認証リクエスト サービスは、IdP 情報を SP ポリシー サーバから抽出し、認証リクエスト メッセージを生成します。このメッセージには AssertionConsumerServiceIndex が含まれます。AssertionConsumerServiceIndex はクエリ パラメータの 1 つであるため、その値は IdP 記述子ドキュメントの IdP に照らして確認されます。このドキュメントは、事前に IdP から SP に送信されています。
    認証リクエスト サービスは以下のように動作します。
    • Artifact バインドのインデックスが IdP メタデータ内で設定されている場合、このインデックスは AssertionConsumerServiceIndex 値と比較されます。値が一致する場合、インデックス値は 認証リクエストの一部としてそのまま使用されます。インデックス値が一致しない場合、IdP メタデータが確認されます。AssertionConsumerServiceIndex は、POST バインドに対応する必要があります。
    • インデックスが HTTP-POST バインドに対応する場合、このインデックス値は 認証リクエスト内の AssertionConsumerServiceIndex と再度比較されます。AssertionConsumerServiceIndex パラメータの値が POST バインドに一致しない場合、認証リクエスト サービスはエラーを生成します。エラーには、AssertionConsumerServiceIndex が IdP メタデータ内のインデックスに一致しないという説明が記述されます。
  4. IdP メタデータ インデックスおよび AssertionConsumerServiceIndex 値が一致する場合、SP ポリシー サーバは 認証リクエストを生成します。
  5. SP ポリシー サーバは、HTTP リダイレクト バインドで 認証リクエストを返します。
  6. SP FWS アプリケーションは、認証リクエストを IdP のシングル サインオン サービスに リダイレクトします。SP がシングル サインオン サービスの URL を既知であるのは、この URL が 認証リクエスト内の設定情報の一部であるためです。
  7. ブラウザは、シングル サインオン サービスをリクエストします。
  8. シングル サインオン サービスは、認証リクエストから AssertionConsumerServiceIndex 値を抽出します。このサービスでは、AssertionConsumerServiceIndex を使用して、アサーション コンシューマ サービス URL を判別します。インデックスがメタデータに含まれていない場合、サービスはエラーを生成します。エラー メッセージには、無効な AssertionConsumerServiceIndex が 認証リクエスト メッセージに存在することが示されます。
    アサーションや Artifact を SP に送信するアサーション コンシューマ URLは、使用しているシングル サインオン プロファイルに応じて異なります。
    : AssertionConsumerServiceIndex パラメータが 認証リクエストに存在しない場合、アサーション コンシューマ サービスの値および対応するバインドがデフォルトで使用されます。
アサーション コンシューマ サービスにおけるインデックス付きエンドポイントの設定
シングル サインオン サービスは、認証リクエストから ACS インデックス値を抽出します。サービスでは、インデックス値をそのインデックス エントリのリストと比較し、そのインデックス値に関連付けられたアサーション コンシューマ サービス URL を判別します。その後、シングル サインオン サービスは、インデックス値に関連付けられたバインドに応じて、アサーションまたは Artifact の送信先を認識します。
アイデンティティ プロバイダでインデックス エントリを設定する方法
  1. 管理 UI にログインします。
  2. 変更するサービス プロバイダ エントリを選択か、新規に作成します。
  3. [SAML プロファイル]ページに移動します。
  4. ページの[SSO]セクションで、[アサーション コンシューマ サービス]フィールドの端にある省略記号ボタンをクリックします。
    [アサーション コンシューマ サービス]ページが表示されます。
  5. [追加]をクリックします。
    [アサーション コンシューマ サービスの追加]ページが表示されます。
  6. ページの各種フィールドに入力します。
    同じアサーション コンシューマ サービス URL に別のインデックス値を割り当てることができます。
  7. [OK]をクリックして、変更を保存します。
: サービス プロバイダで SAML 2.0 認証方式のインデックス エントリを必ず設定してください。
SSO に対する認証方式保護レベルの適用
ユーザがフェデレーション リソースをリクエストする場合、
Single Sign-On
セッションがあることが必要です。ユーザにセッションがない場合、そのユーザはセッションの確立のために認証 URL にリダイレクトされます。認証 URL を保護する認証方式は、特定の保護レベルに設定されます。この保護レベルは、SAML サービス プロバイダ設定で設定する認証レベルと同じかそれ以上であることが必要です。
認証 URL の保護レベルが管理 UI で設定した認証レベルより低い場合、ポリシー サーバはアサーションを生成しません。
デジタル署名オプションの決定
フェデレーションでは、秘密キー/証明書ペアを使用して、フェデレーション通信用のさまざまなデジタル署名タスクを実行できます。秘密キー/証明書ペアは、以下のメッセージに署名できます。
  • アサーション
  • SAML レスポンス
  • Artifact レスポンス
  • シングル ログアウト リクエストおよびレスポンス
    シングル ログアウトの場合、ログアウトを開始する側がリクエストに署名します。リクエストを受信する側は署名を検証します。逆に、受信する側は SLO レスポンスを署名する必要があります。またログアウトを開始する側は、レスポンスの署名を検証する必要があります。
  • 属性レスポンス(ユーザ属性に基づく認可に対する)
署名を担当するパートナーは、秘密キーに関連付けられた証明書(公開キー)を署名検証担当のパートナーに渡します。この交換は、あらゆるトランザクションが行われる前に、独立した通信で実行されます。
IdP は、SP にアサーションを送信する際、デフォルトで証明書をアサーションに含めます。ただし、SP では、自身のサイトに保存した証明書を使用して署名を検証します。
デジタル署名の設定オプションには、以下のものがあります。
  • 署名エイリアス
  • 署名アルゴリズム(RSAwithSHA1 または RSAwithSHA256)
  • HTTP-Artifact アサーション、SAML レスポンス、および Artifact レスポンス オプション
  • HTTP-POST アサーションおよび SAML レスポンス オプション
[一般]タブまたは[SSO]タブからの署名オプションを指定する方法
  1. 既存の SAML サービス プロバイダ オブジェクトを変更するか、新規に作成します。
  2. [SAML プロファイル]に移動します。
  3. ダイアログ ボックスの[署名オプション]セクションで、フィールドに入力します。
  4. [サブミット]をクリックします。
機能強化クライアントまたはプロキシ プロファイルの概要
機能強化クライアントまたはプロキシ プロファイル(ECP)は、シングル サインオンのアプリケーションです。機能強化クライアントは、ECP 機能をサポートするブラウザやほかのいくつかのユーザ エージェントです。機能強化プロキシは、ワイヤレス デバイス用のワイヤレス アクセス プロトコル プロキシなどの HTTP プロキシです。
ECP プロファイルは、アイデンティティ プロバイダとサービス プロバイダが直接通信できない場合に、シングル サインオンを有効にします。ECP は、サービス プロバイダとアイデンティティ プロバイダの間で仲介する機能を果たします。
仲介として機能することに加えて、ECP プロファイルは以下の状況で役立ちます。
  • このプロファイルを必要とする機能強化クライアントまたはプロキシをサービス プロバイダが提供する場合。
  • 機能が制限されたモバイル デバイスの前のワイヤレス アクセス プロトコル(WAP)ゲートウェイなどのプロキシ サーバが使用中の場合。
ECP アプリケーションを入手または開発する必要があります。ポリシー サーバは ECP リクエストのみを処理し、SAML 要件に準拠する ECP アプリケーションに対してのみ応答します。
ECP プロファイルのフローを、次の図に示します。
Graphic showing the flow of the Enhanced Client and Proxy Profile between the Identity Provider and Service Provider
ECP 通信では、ユーザが携帯電話などからアプリケーションへのアクセスをリクエストします。アプリケーションはサービス プロバイダに存在し、ユーザの ID 情報はアイデンティティ プロバイダに存在します。サービス プロバイダとアイデンティティ プロバイダは、直接通信を行いません。
ECP 呼び出しのフローを以下に示します。
  1. ECP アプリケーションは、Reverse SOAP (PAOS)リクエストをサービス プロバイダに転送します。アイデンティティ プロバイダには、サービス プロバイダから直接アクセスできません。
    ID プロバイダとは異なり、ECP エンティティは常に直接アクセスできます。
  2. サービス プロバイダは、認証リクエストを ECP アプリケーションに送り返します。
  3. ECP アプリケーションは、認証リクエストを処理および変更し、アイデンティティ プロバイダに送信します。
  4. アイデンティティ プロバイダはリクエストを処理し、SOAP レスポンスを ECP アプリケーションに返します。このレスポンスには、アサーションが含まれます。
  5. ECP アプリケーションは、署名された PAOS レスポンスをサービス プロバイダに渡します。
シングル サインオンが続行され、アプリケーションへのアクセス権がユーザに付与されます。
アイデンティティ プロバイダでの ECP の設定
ECP を設定するには、アイデンティティ プロバイダおよびサービス プロバイダでこの機能を有効にします。アイデンティティ プロバイダに対する手順を以下に示します。
以下の手順に従います。
  1. アイデンティティ プロバイダで管理 UI にログインします。
  2. 変更する SAML サービス プロバイダの[SAML プロファイル]タブに移動します。
  3. ダイアログ ボックスで必要なシングル サインオン設定を完了します。
  4. SSO セクションの[拡張されたクライアントとプロキシ プロファイル]チェック ボックスをオンにします。
  5. [サブミット]をクリックします。
アイデンティティ プロバイダが、ECP 呼び出しを処理できるようになります。
フェデレーション パートナーも ECP を有効にする必要があります。の場合は、SAML 2.0 認証方式で ECP を有効にします。
: 単一の SAML サービス プロバイダ オブジェクトは、シングル サインオン リクエストの Artifact、POST、SOAP、および PAOS バインディングを処理できます。SOAP と PAOS は、ECP プロファイルのバインディングです。アイデンティティ プロバイダおよびサービス プロバイダは、リクエストのパラメータに基づいて使用するバインディングを決定します。
Allow/Create の有効化によるユーザ識別子の作成
アイデンティティ プロバイダでは、SAML 2.0 Allow/Create 機能を使用して、サービス プロバイダのリクエスト時にユーザ識別子を作成できます。この機能が動作するためには、サービス プロバイダ リクエストに Allow/Create 属性が含まれる必要があります。また、管理者は、識別子を作成するようにアイデンティティ プロバイダを設定する必要があります。アイデンティティ プロバイダは、NameID の一部として使用される一意の値を生成します。この値は、サービス プロバイダに返されるアサーション内に配置されます。
サービス プロバイダがアサーションを受信すると、SAML 2.0 認証方式がレスポンスを処理します。認証方式は、そのローカル ユーザ ストアでユーザを検索します。ユーザ レコードが検出される場合、そのユーザはアクセスが付与されます。
新規ユーザ識別子の作成を有効にする方法
  1. 管理 UI にログインします。
  2. サービス プロバイダ オブジェクトの[SAML プロファイル]設定に移動します。
  3. ページの[SSO]セクションで、[新規識別子の作成を許可する]を選択します。
  4. [サブミット]をクリックします。
SP からの認証コンテキストの無視
ユーザ認証コンテキストに関する情報を交換することにより、フェデレーション パートナーシップの各側に対し、認証処理について通信する方法が提供されます。
サービス プロバイダがアイデンティティ プロバイダへのリクエストで認証コンテキストをリクエストする場合、コンテキストを無視するようにアイデンティティ プロバイダを設定することができます。
認証コンテキストを無視する方法
  1. サービス プロバイダ オブジェクトの[一般]設定に移動します。
  2. [詳細 SSO 設定]セクションで、[リクエストされた AuthnContext を無視]を選択します。
  3. [サブミット]をクリックします。
アサーションの単一使用の設定
SAML 2.0 の仕様に準拠して、ポリシー サーバはアサーションの単一使用を適用できます。単一使用のアサーションを生成することにより、以降のトランザクション用にアサーションを保持しないことが依存パーティで認識されます。その有効期限を過ぎたアサーションを再利用すると、期限切れの ID 情報に基づく認証判断という結果になります。
アサーションの単一使用を設定する方法
  1. サービス プロバイダ オブジェクトの[一般]設定に移動します。
  2. [詳細 SSO 設定]セクションで、[OneTimeUse 条件の設定]を選択します。
  3. [サブミット]をクリックします。
IdP での HTTP エラー処理
アサーション ベースのシングル サインオンは、さまざまな理由によってアイデンティティ プロバイダで失敗する可能性があります。HTTP エラーが発生した場合、後続処理用の別のアプリケーション(URL)にユーザをリダイレクトすることができます。カスタマイズされたエラー ページへのリダイレクトが実行されるのは、サービス プロバイダに関する必要な情報がアイデンティティ プロバイダに提供されている場合のみです。リクエスト内の情報が利用できないか正しくない場合は、HTTP エラー コードのみがブラウザに返されます。リダイレクトは発生しません。
たとえば、IdP ID または SP ID がリクエストで正しくない場合、リダイレクトは発生しません。
HTTP 処理用のリダイレクト URL を設定できますが、それらは必須ではありません。
以下の手順に従います。
  1. [一般]設定に移動します。
  2. [詳細 SSO 設定]セクションで、有効にする URL を選択した後、その URL を入力します。以下のエラーの 1 つまたは複数に対して URL を指定できます。
    • サーバ エラー URL の有効化
    • 無効なリクエスト URL の有効化
    • 不正なアクセス URL の有効化
  3. モードに関して以下のいずれかのオプションを選択します。
    • 302 データなし
    • HTTP POST
  4. [サブミット]をクリックします。
注:
これらのリダイレクト URL をアサーション コンシューマ プラグインと共に使用して、より詳細なアサーション処理を実行できます。アサーション リクエストが失敗した場合、プラグインは、設定されているリダイレクト URL の 1 つにユーザをリダイレクトできます。
アサーションでのセッション期間のカスタマイズ
ポリシー サーバ IdP は、アサーションを送信する際、デフォルトでアサーションの Authentication ステートメントに SessionNotOnOrAfter パラメータを含めます。サードパーティ SP は、SessionNotOnOrAfter の値を使用して、独自のタイムアウト値を設定することができます。タイムアウト値により、ユーザ セッションが無効になるまでの期間が決定され、無効になると、IdP で再認証するようにユーザが送信されます。
重要
: ポリシー サーバが SP として機能している場合、SessionNotOnOrAfter 値を無視します。代わりに、SP は、ターゲット リソースを保護する設定済みの SAML 認証方式に相当するレルム タイムアウトに基づき、セッション タイムアウトを設定します。
SessionNotOnOrAfter パラメータは、アサーション有効期間およびスキュー時間の決定に使用される NotOnOrAfter パラメータとは異なります。
SessionNotOnOrAfter パラメータをカスタマイズする方法
  1. UI にログオンします。
  2. 変更するサービス プロバイダ エントリを選択します。
  3. [詳細]タブに移動します。
  4. ダイアログ ボックスの[詳細 SSO 設定]セクションで[検証期間のカスタマイズ]を選択します。
    [検証期間のカスタマイズ]ダイアログ ボックスが表示されます。
  5. [SP セッション有効期間]の値を選択します。入力する値がアサーションの SessionNotOnOrAfter パラメータの値になります。
    オプションを以下に示します。
    • アサーション有効期間の使用
      アサーション有効期間に基づく SessionNotOnOrAfter 値を計算します。
    • 省略
      アサーションに SessionNotOnOrAfter パラメータを含めないように IdP に命じます。
    • IDP セッション
      IdP セッション タイムアウトに基づく SessionNotOnOrAfter 値を計算します。タイムアウトは認証 URL 用の IdP レルムで設定されます。このオプションを使用すると、IdP および SP セッション タイムアウト値を同期することができます。
    • カスタム
      アサーションに SessionNotOnOrAfter パラメータのカスタム値を指定できます。このオプションを選択する場合は、[アサーション有効期間のカスタマイズ]フィールドに時間を入力します。
  6. [OK]をクリックして変更内容を保存します。