IdP または SP からのシングル サインオンの開始
目次
casso126jjp
目次
2
ユーザは、アイデンティティ プロバイダまたは サービス プロバイダでシングル サインオンを開始できます。シングル サインオン動作をトリガするリンクを、各サイトで設定するかアプリケーションの一部として設定します。
アイデンティティ プロバイダで開始された SSO (POST または Artifact バインド)
ユーザがサービス プロバイダに移動する前にアイデンティティ プロバイダにアクセスする場合、アイデンティティ プロバイダでは未承認応答を生成する必要があります。未承認応答を開始するには、そのサービス プロバイダ ID に関連したクエリ パラメータが含まれる HTTP Get リクエストを生成するハードコード リンクを作成します。アイデンティティ プロバイダは、この ID に対するアサーション レスポンスを生成します。フェデレーション Web サービス アプリケーションおよびアサーション ジェネレータは、GET リクエストを受理する必要があります。
未承認応答を開始するために作成するリンクは、ユーザがクリックします。
未承認応答で Artifact または POST プロファイルを使用するにように指定するには、未承認応答リンクに以下の構文を使用します。
http://idp_server:port/affwebservices/public/saml2sso?SPID=SP_ID& ProtocolBinding=URI_for_binding
- casso126jjpidp_server:portWeb エージェント オプション パックまたはCA Access Gatewayをホストしている Web サーバおよびポートを識別します。
- casso126jjpSP_IDサービス プロバイダ ID の値。 エンティティ ID は大文字と小文字を区別します。管理 UI に表示される通りに正確に入力してください。
- casso126jjpURI_for_bindingProtocolBinding 要素用の POST バインディングまたは Artifact バインディングの URI を識別します。SAML 2.0 仕様によりこの URI が定義されます。
また、未承認応答が機能するように、SAML サービス プロバイダ プロパティ内でバインドを指定します。
以下の情報に注意してください。
- リンク内に ProtocolBinding パラメータがなく、サービス プロバイダ プロパティ内にバインドが 1 つだけ存在する場合、サービス プロバイダではそのバインドを使用します。
- Artifact バインドおよび POST バインドがサービス プロバイダ プロパティ内で有効化されている場合、POST がデフォルトになります。そのため、Artifact バインドのみを使用する場合には、リンクに ProtocolBinding クエリ パラメータを含めます。
- アサーション コンシューマ サービスに対してインデックス付きのエンドポイントを設定する場合、ProtocolBinding クエリ パラメータによりアサーション コンシューマ サービスのバインドがオーバーライドされます。
IdP によって使用される未承認応答のクエリ パラメータ
ポリシー サーバ IdP からシングル サインオンを開始する未承認応答には、以下のクエリ パラメータが含まれることがあります。
SPID
(必須)アイデンティティ プロバイダが未承認応答を送信するサービス プロバイダの ID を指定します。 エンティティ ID は大文字と小文字を区別します。管理 UI に表示される通りに正確に入力してください。
ProtocolBinding
未承認応答内の ProtocolBinding 要素を指定します。この要素は、アサーション レスポンスをサービス プロバイダに送信する際に使用されるプロトコルを指定します。指定されたプロトコル バインドをサービス プロバイダがサポートするように設定されていない場合、リクエストは失敗します。
ProtocolBinding クエリ パラメータの必須使用
ProtocolBinding パラメータの使用が必要となるのは、Artifact バインドおよび POST バインドがサービス プロバイダ プロパティ内で有効化されている場合
のみ
です。両方のプロファイルが有効化されている場合、Artifact バインドの使用時のみクエリ パラメータを使用します。- SAML 2.0 仕様による Artifact バインドの URI は次のとおりです。urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact
- SAML 2.0 仕様による POST バインドの URI は次のとおりです。urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POSTこのパラメータを HTTP-POST シングル サインオンに対して設定する必要はありません。
注:
クエリ パラメータを HTTP エンコードしないでください。例: ProtocolBinding が含まれる未承認応答
このリンクは、ユーザをシングル サインオン サービスにリダイレクトします。このリンクには、サービス プロバイダの ID が含まれています。SPID クエリ パラメータは、この ID を示します。さらに、バインド クエリ パラメータは、Artifact バインドが使用中であることを示しています。ユーザは、このハードコードされたリンクをクリックすると、ローカルのシングル サインオン サービスにリダイレクトされます。
http://idp-ca:82/affwebservices/public/saml2sso?SPID=http%3A%2F%2Ffedsrv.acme.com %2Fsmidp2for90&ProtocolBinding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact
ProtocolBinding クエリ パラメータの任意使用
ProtocolBinding クエリ パラメータを
使用しない場合、
以下の条件が適用されます。- ProtocolBinding が未承認応答で指定されない場合、サービス プロバイダに対するプロファイルが使用されます。
- サービス プロバイダに対して両方のプロファイルを有効化できます。ProtocolBinding が未承認応答に含まれない場合、サービス プロバイダはデフォルトで POST プロファイルを使用します。例: ProtocolBinding のない未承認応答このリンクは、ユーザをシングル サインオン サービスにリダイレクトします。このリンクには、サービス プロバイダ ID が含まれています。SPID クエリ パラメータは、この ID を示します。ProtocolBinding クエリ パラメータは存在しません。ユーザは、このハードコードされたリンクをクリックすると、ローカルのシングル サインオン サービスにリダイレクトされます。http://fedsrv.fedsite.com:82/affwebservices/public/saml2sso?SPID= http%3A%2F%2Ffedsrv.acme.com%2Fsmidp2for90
RelayState
サービス プロバイダのターゲット リソースの URL を示します。RelayState の値は URL エンコードする必要があります。 このクエリ パラメータを含めることによって、IdP はサービス プロバイダの適切なリソースにユーザをリダイレクトします。このクエリ パラメータは、シングル サインオンの設定時にターゲット URL を指定する代わりに使用できます。RelayState クエリ パラメータ名では、大文字小文字が区別され、その値は URL エンコードされる必要があります。
例:
http://ca.sp.com:90/affwebservices/public/saml2authnrequest?ProviderID= http%3A%2F%2Ffedsrv.acme.com%2Fsmidp2for90& RelayState=http%3A%2F%2Fwww.spdemo.com%2Fapps%2Fapp.jsp
サービス プロバイダで開始された SSO (POST バインドまたは Artifact バインド)
ユーザは、サービス プロバイダにアクセスした後、アイデンティティ プロバイダに移動することがあります。そのため、サービス プロバイダの認証リクエスト サービスまでのハードコード リンクが含まれる HTML ページをサービス プロバイダで作成します。HTML ページ内のリンクにより、ユーザがアイデンティティ プロバイダにリダイレクトされ、認証されます。また、リンクには、認証リクエストに含まれる内容も示されます。
ユーザが選択するハードコード リンクには、特定のクエリ パラメータが含まれる必要があります。これらのパラメータは、サービス プロバイダにおける認証リクエスト サービスに対する HTTP GET リクエストの一部です。
注:
これらのハードコードされたリンクを持つページは、保護されていないレルムに存在する必要があります。Artifact バインドまたはプロファイル バインドをトランザクションに使用するように指定するには、次のリンクの構文を使用します。
http://SP_server:port/affwebservices/public/saml2authnrequest? ProviderID=IdP_ID&ProtocolBinding=URI_of_binding
sp_server:port
Web エージェント オプション パックまたは
CA Access Gateway
をホストするサービス プロバイダにあるサーバおよびポート番号を指定します。IdP_ID
アイデンティティ プロバイダに割り当てられている ID を指定します。 エンティティ ID は大文字と小文字を区別します。管理 UI に表示される通りに正確に入力してください。
URI_of_binding
ProtocolBinding 要素用の POST バインディングまたは Artifact バインディングの URI を識別します。SAML 2.0 仕様によりこの URI が定義されます。
リクエストが機能するためには、SAML 認証方式に関するバインドを有効にする必要があります。
以下の情報に注意してください。
- 認証リクエストに ProtocolBinding クエリ パラメータが含まれない場合、認証方式に対して定義されたバインドがデフォルトのバインドになります。認証方式に両方のバインドが定義されている場合、認証リクエストにバインドは渡されません。その結果、アイデンティティ プロバイダのデフォルトのバインディングが使用されます。
- SAML 認証方式に対して Artifact および POST が有効化されている場合があります。Artifact バインドのみを使用する場合は、リンクに ProtocolBinding クエリ パラメータを含めます。
CA Single Sign-on
SP によって使用される AuthnRequest クエリ パラメータサービス プロバイダは、AuthnRequest サービスへのリンクでクエリ パラメータを使用できます。許可されるクエリ パラメータを以下に示します。
ProviderID (必須)
認証リクエスト サービスが認証リクエスト メッセージを送信するアイデンティティ プロバイダの ID です。 エンティティ ID は大文字と小文字を区別します。管理 UI に表示される通りに正確に入力してください。
ProtocolBinding
認証リクエスト メッセージの ProtocolBinding 要素を指定します。この要素は、アイデンティティ プロバイダが SAML レスポンスを返すために使用するプロトコルを指定します。指定したアイデンティティ プロバイダが指定したプロトコル バインディングをサポートするように設定されていない場合、リクエストは失敗します。
このパラメータを認証リクエストで使用する場合、AssertionConsumerServiceIndex パラメータを同時に含めることはできません。これらは、相互に排他的です。
ProtocolBinding クエリ パラメータの必須使用
Artifact および POST バインドを認証方式として有効化できます。Artifact バインドのみを使用する場合、ProtocolBinding パラメータが必要です。
- SAML 2.0 仕様による Artifact バインドの URI は次のとおりです。urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact
- SAML 2.0 仕様に基づいた POST バインドの URI は次のとおりです。urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POSTこのパラメータを HTTP-POST シングル サインオンに対して設定する必要はありません。例: ProtocolBinding が含まれる認証リクエスト リンクhttp://ca.sp.com:90/affwebservices/public/saml2authnrequest?ProviderID= http%3A%2F%2Ffedsrv.acme.com%2Fsmidp2for90&ProtocolBinding=urn:oasis: names:tc:SAML:2.0:bindings:HTTP-Artifactユーザは、サービス プロバイダのリンクをクリックします。フェデレーション Web サービス アプリケーションは、ローカル ポリシー サーバからの認証リクエスト メッセージを要求します。
ProtocolBinding の任意使用
ユーザが ProtocolBinding クエリ パラメータを使用
しない
場合、以下の条件が適用されます。- 認証方式に対してバインドを 1 つのだけ有効化し、ProtocolBinding クエリ パラメータは指定しない場合は、認証方式で有効化されたバインドが使用されます。
- 両方のバインディングが有効で、ProtocolBinding クエリ パラメータが指定されていない場合、デフォルトとして POST バインディングが使用されます。
注:
クエリ パラメータを HTTP エンコードしないでください。例: ProtocolBinding が含まれない認証リクエスト リンク
このサンプル リンクは、認証リクエスト サービスに移動します。このリンクは、ProviderID クエリ パラメータのアイデンティティ プロバイダを指定します。
http://ca.sp.com:90/affwebservices/public/saml2authnrequest?ProviderID= http%3A%2F%2Ffedsrv.acme.com%2Fsmidp2for90
ユーザは、サービス プロバイダのリンクをクリックします。フェデレーション Web サービス アプリケーションは、ローカル ポリシー サーバからの認証リクエスト メッセージを要求します。
ForceAuthn
ユーザに関する既存のセキュリティ コンテキストが存在する場合であっても、アイデンティティ プロバイダがそのユーザを認証するように SP が強制するかどうかを示します。
- AuthnRequest メッセージに ForceAuthn=True と指定されており、特定のユーザに対してSingle Sign-Onセッションが存在する場合、IdP はユーザに認証情報を再要求します。ユーザが正常に認証される場合、IdP は、既存のセッションからの ID 情報をアサーションに含めます。IdP は、再確証用に生成したセッションを破棄します。ユーザは、既存のセッションとは異る認証情報を使用して再認証を試みることができます。すると、IdP は、現在と既存のセッションの userDN ユーザ ディレクトリ OID を比較します。セッションの対象が同じユーザではない場合、IdP は SAML 2.0 レスポンスを返します。このレスポンスは、認証が失敗したことを示します。
- SP が AuthnRequest メッセージで ForceAuthn=True を設定していて、Single Sign-Onセッションがない場合、IdP はユーザに認証情報を要求します。ユーザが正常に認証されると、セッションが確立されます。
例:
http://www.sp.demo:81/affwebservices/public/saml2authnrequest?ProviderID=idp.demo&ForceAuthn=yes
認証 URL を保護している IIS サーバ上の Web エージェントについては、ForceAuthn 機能が動作するために IIS アプリケーション プールを ForceAuthn 機能は、クラシック モード IIS アプリケーション プールでは動作しません。
[統合]
に設定します。RelayState
サービス プロバイダにおけるターゲットを指定します。RelayState クエリ パラメータを使用して、ターゲットの宛先を示すことができます。ただし、この方法はオプションです。代わりに、SAML 2.0 認証方式で設定されたターゲットを指定することができます。この認証方式には、ターゲットを RelayState クエリ パラメータでオーバーライドするオプションがあります。
RelayState の値を URL エンコードします。
例:
http://www.spdemo.com:81/affwebservices/public/saml2authnrequest? ProviderID=idp.demo&RelayState=http%3A%2F%2Fwww.spdemo.com%2Fapps%2Fapp.jsp
IsPassive
アイデンティティ プロバイダがユーザと対話できるかどうかを決定します。このクエリ パラメータが true に設定されている場合、アイデンティティ プロバイダはユーザとの対話が禁止されます。また、IsPassive パラメータは、アイデンティティ プロバイダに送信された 認証リクエストに付属しています。このクエリ パラメータが false に設定されている場合、アイデンティティ プロバイダはユーザと対話できます。
例:
http://www.spdemo.com:81/affwebservices/public/saml2authnrequest? ProviderID=idp.demo&RelayState=http%3A%2F%2Fwww.spdemo.com% 2Fapps%2Fapp.jsp&IsPassive=true
AssertionConsumerServiceIndex
アサーション コンシューマとして機能するエンドポイントのインデックスを指定します。インデックスによって、アイデンティティ プロバイダにアサーション レスポンスの送信先が指定されます。
このパラメータを認証リクエストで使用する場合、ProtocolBinding パラメータを同時に含めることはできません。これらは、相互に排他的です。
CA Single Sign-on
IdP によるクエリ パラメータの処理サービス プロバイダがシングル サインオンを開始する場合、そのサービス プロバイダは ForceAuthn クエリ パラメータまたは IsPassive クエリ パラメータを認証リクエスト メッセージに含めることができます。サービス プロバイダがこれら 2 つのクエリ パラメータを認証リクエスト メッセージに含める場合、アイデンティティ プロバイダではこれらのクエリ パラメータを以下のように処理します。
ForceAuthn の処理
サービス プロバイダが ForceAuthn=True を AuthnRequest に含めている場合、アイデンティティ プロバイダは以下のアクションを実行します。
- 認証リクエスト メッセージに ForceAuthn=True があり、セッションが特定のユーザに対して存在する場合。IdP は、再度認証情報の入力をユーザに要求します。ユーザが正常に認証された場合、IdP では、その識別情報を既存のセッションからアサーション内に送信します。IdP は、再確証のために生成したセッションを破棄します。ユーザは、元のセッションとは異なる認証情報を使用して再認証を試みることができます。IdP では、現在と既存のセッションの userDN およびユーザ ディレクトリ OID を比較します。セッションの対象が同じユーザではない場合、SAML 2.0 レスポンスを返します。このレスポンスは、認証が失敗したことを示します。
- AuthnRequest メッセージに ForceAuthn=True があり、セッションが存在しない場合。IdP は、認証情報の入力をユーザに要求します。ユーザが正常に認証されると、セッションが確立されます。
IsPassive の処理
サービス プロバイダが IsPassive を認証リクエストに含めており、IdP がそれを受け付けることができない場合、以下のいずれかの SAML レスポンスがサービス プロバイダに返送されます。
- 認証リクエスト メッセージに IsPassive=True があり、セッションが存在しない場合。アイデンティティ プロバイダは、SAML レスポンスを返します。Single Sign-Onにはセッションが必要なため、このレスポンスにはエラー メッセージが含まれます。
- 認証リクエスト メッセージに IsPassive=True があり、セッションが存在する場合。アイデンティティ プロバイダは、アサーションを返します。
- 認証リクエスト メッセージに IsPassive と ForceAuthn があり、両方が True に設定されている場合。リクエストが無効であるため、アイデンティティ プロバイダはエラーを返します。IsPassive と ForceAuthn は相互に排他的です。