シングル サインオンとエージェント API
目次
casso1283
目次
シングル サインオン環境では、所定のエージェントで正しく認証されたユーザが別のエージェントによって保護されたレルムにアクセスする場合、再認証は不要です。カスタム エージェントがシングル サインオン環境に関与する場合、2 つのエージェントは同じ Cookie ドメイン(たとえば、xxx.domainname.com など)に配置される必要があります。
シングル サインオンは SMSESSION という名前のシングル サインオン Cookie によって可能になります。この Cookie は、
SiteMinder
またはカスタム エージェントによって作成され、ユーザのブラウザに書き込まれます。クラス AgentAPI には、カスタム エージェントが標準の
SiteMinder
Web エージェントによるシングル サインオン環境に参加することを可能にする 2 つのメソッドが含まれます。- decodeSSOToken()カスタム エージェントは、既存の SMSESSION Cookie からトークンと呼ばれる Cookie の内容を抽出し、トークンをこのメソッドへ渡します。メソッドはトークンを復号し、指定された情報を抽出します。このメソッドは、トークン内の最後のアクセス タイムスタンプを更新するために使用することもできます。
- createSSOToken()ユーザがカスタム エージェントを通して正常にログインした後、カスタム エージェントはユーザに関する情報をこのメソッドに渡します。メソッドは、このユーザ情報およびログイン コールから返されたセッション情報から暗号化されたトークンを作成します。カスタム エージェントは、トークンを SMSESSION Cookie に書き込みます。
シングル サインオン メソッドに対するパラメータの設定および結果の解析の例については、サンプル カスタム エージェント コードを参照してください。サンプル カスタム エージェント コードは、<install_path>\sdk\samples の smjavaagentapi ディレクトリに置かれています。
カスタム エージェントを通したログオン
ここでは、初期ログインがカスタム エージェントを通して実行される場合のシングル サインオン環境のイベントの典型的なシーケンスを示します。
- ユーザはカスタム エージェント経由でログインします。
- カスタム エージェントは、ユーザを認証するために login() を呼び出します。ユーザは認証情報を要求されます。
- カスタム エージェントは createSSOToken() を呼び出し、ユーザに関する情報(要求元のクライアントのユーザ名、ユーザ DN、IP アドレス)を渡します。SiteMinderは、ログイン コールから返されたセッション情報と共にトークンにこの情報を追加します。SiteMinderはトークン内の情報の暗号化も実行します。
- カスタム エージェントは、ユーザのブラウザに SMSESSION Cookie を作成し、この Cookie にトークンを書き込みます。
- ユーザは標準的なSiteMinderエージェントによって保護されたリソースを要求します。
- 標準エージェントはログイン操作を実行します。この操作により、シングル サインオン Cookie 内の情報に基づいてユーザが検証されます。ユーザは、認証情報を要求されません。
標準エージェントを通したログオン
ここでは、初回のログインが標準の
SiteMinder
Web エージェントを介して実行される場合に、シングル サインオン環境で発生するイベントの典型的なシーケンスを示します。- ユーザは標準エージェント経由でログインします。
- 標準エージェントは、ログイン コールを通じて認証情報をユーザに要求して、ユーザを認証します。
- SiteMinderは、ユーザのブラウザに SMSESSION Cookie を作成し、セッション情報が含まれる暗号化トークンを挿入します。
- ユーザはカスタム エージェントによって保護されたリソースを要求します。
- カスタム エージェントは、ユーザの要求から SMSESSION Cookie を取得し、トークンを抽出します。
- カスタム エージェントはトークンをメソッド decodeSSOToken() へ渡します。メソッドはトークンを復号し、カスタム エージェントにトークンの属性のサブセットを返します。
- カスタム エージェントは、トークンからのセッション指定を取得し、セッション指定を login() へ渡します。ログイン コールにより、ユーザへ認証情報を要求することなく、ユーザが検証されます。
- ユーザは標準的なSiteMinderエージェントによって保護されたリソースを要求します。
- 標準エージェントはログイン操作を実行し、SMSESSION Cookie の内容に基づいてユーザを検証します。ユーザは、認証情報を要求されません。
標準エージェント サポート
SiteMinder
SDK v6.x で作成されたカスタム エージェントは、標準的な SiteMinder
v4.x、v5.x または v6.x Web エージェントによって作成された SMSESSION Cookie を受け入れることができます。ただし、標準的な SiteMinder
v4.x または v5.x Web エージェントは、標準エージェントが適切な Siteminder Agent Quarterly Maintenance Release (QMR)でアップグレードされている場合は、カスタム エージェントによって作成された Cookie のみを受け入れることができます。各標準エージェントのバージョンに必要な QMR バージョンの詳細については、付属の SDK リリース ノートを参照してください。SiteMinder
v4.x または v5.x エージェントを適切な QMR アップグレードで有効にし、カスタム エージェントによって作成された SMSESSION Cookie を受け入れるようにするには、標準エージェントのエージェント設定ファイル(IIS サーバの場合は LocalConfig.conf、その他のサーバの場合は WebAgent.conf)または中央設定オブジェクト(v5.x 以降)に以下のエントリが含まれる必要があります。AcceptTPCookie="yes"
AcceptTPCookie を以下のとおりに設定します。
- 4.xQMR4 エージェント以降では、標準エージェントのエージェント設定ファイルに AcceptTPCookie="yes" を直接追加します。
- 5.xQMR1 エージェント以降では、標準エージェントのエージェント設定オブジェクトに対する AllowLocalConfig パラメータが no に設定されている場合はそのオブジェクトにエントリを追加します。AllowLocalConfig が yes の場合は、標準エージェントのエージェント設定ファイルに AcceptTPCookie を設定できます。
情報がセッションにバインドされる方法
セッション情報の構成には、セッション仕様以外の情報も含まれる場合があります。セッション情報には、クライアント アプリケーションがユーザのセッションとの関連付けに必要とする情報を含めることができます。
アプリケーションに定義されるセッション情報は、
セッション変数
と呼ばれる名前/値のペアで構成されます。たとえば、アフィリエイト操作用のビジネス ロジック、証明書情報および SAML アサーションはすべて、セッション変数として保存し、セッション ID にバインドできます。クラス AgentAPI は、セッション変数を設定、取得および削除するための以下のメソッドを提供します。
- setSessionVariables()
- getSessionVariables()
- delSessionVariables()
セッション変数は、
セッション ストア
と呼ばれるサーバ側のデータベースに保存されます。セッション ストアはポリシー サーバによって管理されます。セッション変数の利点
クライアント アプリケーションがセッション変数を使用する場合、
- 各セッション変数値に対して最大 4K のデータを保存できます。
- セッション情報が複数のポリシー サーバにわたって維持されます。サーバ上のセッション情報の一元化により、異なるドメインにわたるログアウトおよびアイドル タイムアウトの適用を含むクロス ドメイン セッション管理などの機能が可能になります。
セッション変数を使用するための要件
クライアント アプリケーションでセッション変数を使用するには、以下の前提条件の両方に適合する必要があります。
- セッション ストアをポリシー サーバ管理コンソールで有効にする必要があります。
- ポリシー サーバ UI でのレルム設定時に、[永続セッション]は、セッション中にアクセスするレルムの少なくとも 1 つに対して選択する必要があります。永続セッションに対して設定されたレルムにユーザがアクセスすると即座に、それ以降のセッション全体を通じてセッション変数が使用可能になります。
セッション終了時のクリーンアップ
ユーザがログアウトし、エージェントがセッション指定を破棄すると、セッションは終了します。永続セッションの場合、
SiteMinder
は、すべてのセッション変数を含めたすべてのセッション情報をセッション ストアから削除します。