セッション Cookie の管理

このコンテンツでは、セッション Cookie を管理する方法について説明します。
casso11jp
このコンテンツでは、セッション Cookie を管理する方法について説明します。
SMSESSION Cookie に格納されている情報
CA シングル サインオンで保護されたレルムのユーザが認証されると、Web エージェントは、SMSESSION を生成します。SMSESSION Cookie は、ユーザ セッションを表します。
SMSESSION には、以下の情報が含まれます。
  • ATTR_USERDN
    ユーザの識別名を表します。
  • ATTR_SESSIONID:
    ログイン コールから返されるセッション ID を示します。
  • ATTR_USERNAME:
    ユーザ名を表します。
  • ATTR_CLIENTIP:
    ユーザが保護されているリソースの要求を開始したマシンの IP アドレスを指定します。
  • ATTR_DEVICENAME:
    トークンをデコードするエージェントの名前を示します。
  • ATTR_IDLESESSIONTIMEOUT:
    セッションの最大アイドル時間を示します。
  • ATTR_MAXSESSIONTIMEOUT:
    セッションをアクティブにできる最大時間を示します。
  • ATTR_STARTSESSIONTIME:
    セッションが成功した後、ログインが開始された時刻を示します。
  • ATTR_LASTSESSIONTIME:
    セッション内でのポリシー サーバへの最終アクセス時刻を示します。
  • ATTR_SESSIONSPEC:
    ログイン コールから返されるセッション指定情報を示します。
SESSIONSPEC には、ポリシー サーバでのみ復号化できる以下の情報が含まれています。
  • SessionVersion
  • SessionStartTime
  • SessionLastTime
  • SessionMaxTimeout
  • SessionIdleTimeout
  • SessionLevel
  • SessionId
  • SessionIp
  • SessionDn
  • SessionDirOid
  • SessionDirName
  • SessionUnivId
  • SessionType
  • SessionAnonymous
  • SessionImpersonatorName
  • SessionLoginName
  • SessionPersistent
  • SessionDrift
  • SessionImpersonatorDirName
  • SessionAuthContext
セッション Cookie の作成または更新の防止
Microsoft Outlook Web Access など、一部の Web アプリケーションでは、ユーザがアプリケーションをアクティブに使用していない場合でも、HTTP リクエストが行われます。たとえば、ユーザがサーバ上で新しい電子メールをアクティブに確認していない場合、アプリケーションは HTTP リクエストを行います。ユーザがアイドル状態の場合でも、セッションが期限切れにならないように、これらのリクエストによって SMSESSION Cookie を更新できます。セッションが期限切れになるように、バックグラウンド リクエスト中に Web エージェントがセッション Cookie を作成または更新するのを阻止できます。
セッション Cookie の作成または更新を防止するために、必要に応じて以下のパラメータを使用します。
  • OverlookSessionForMethods
    Web エージェントによるすべての HTTP リクエストのリクエスト メソッドの比較の対象となるメソッドのリストを指定します。一致した場合、Web エージェントは SMSESSION cookie の作成も更新も行いません。さらに、cookie プロバイダ(設定されている場合)はそのリクエストに対して更新されません。
    デフォルト:
    デフォルトなし
  • OverlookSessionForUrls
    Web エージェントによるすべての HTTP リクエストの URL の比較の対象となる URL のリストを指定します。一致した場合、Web エージェントは SMSESSION cookie の作成も更新も行いません。さらに、cookie プロバイダ(設定されている場合)はそのリクエストに対して更新されません。
    デフォルト:
    デフォルトなし
    例:
    /MyDocuments/index.html のような相対 URL を使用します。http://
    fqdn.host
    /MyDocuments/index.html のような絶対 URL は使用しないでください。
  • OverlookSessionAsPattern
    有効な場合、Web エージェントは、OverlookSessionForUrls で指定されるディレクトリ下にあるどの URL 用の Cookie も作成しません。
    デフォルト:
    No
    オプション:
    [はい]、[いいえ]
    例:
     /siteminder/ for the OverlookSessionForUrls パラメータを指定し、OverlookSessionAsPattern パラメータを[Yes]に設定します。この設定に基づいて、任意の /siteminder/* リクエストに対して Cookie は生成されません。
注:
OverlookSessionForMethods および OverlookSessionForUrls パラメータを設定すると、それらのメソッドは URL より前に処理されます。
メソッドと URI に基づいたセッション Cookie の作成または更新の防止
Microsoft Outlook Web Access など、一部の Web アプリケーションでは、ユーザがアプリケーションをアクティブに使用していない場合でも、HTTP リクエストが行われます。たとえば、ユーザがサーバ上で新しい電子メールをアクティブに確認していない場合でも、アプリケーションは HTTP リクエストを行います。ユーザがアイドル状態だったとしても、セッションが期限切れにならないようにこれらのリクエストによって SMSESSION cookie が更新されます。セッションが期限切れになるように、バックグラウンド リクエスト中に Web エージェントがセッション Cookie を作成または更新するのを阻止できます。
メソッドおよび URI に基づいたセッション Cookie の更新の作成を阻止するには、以下のパラメータの両方を設定します。
  • OverlookSessionForMethods
    Web エージェントによるすべての HTTP リクエストのリクエスト メソッドの比較の対象となるメソッドのリストを指定します。一致した場合、Web エージェントは SMSESSION cookie の作成も更新も行いません。さらに、cookie プロバイダ(設定されている場合)はそのリクエストに対して更新されません。
    デフォルト:
    デフォルトなし
  • OverlookSessionForMethodUri
    Web エージェントが、すべての HTTP リクエストの URI を、このパラメータに示されている URI と比較するかどうかを指定します。一致した場合、Web エージェントは SMSESSION cookie の作成も更新も行いません。Cookie プロバイダ(設定されている場合)はそのリクエストに対して更新されません。
    デフォルト
    : デフォルトなし
    値:
    相対 URI を指定します。カンマと URL の間にはスペースを追加
    しません
    : POST,/directory/file では、/directory/resource に対する POST リクエストの SMSESSION Cookie は更新されません。
注:
メソッドは URI の前に処理されます。
セッション ストアを使用したマルチドメイン シングル サインオンのセキュリティの強化 
デフォルトでは、エージェントは、マルチドメイン シングル サインオン操作中に、Cookie プロバイダ リダイレクト URL のクエリ文字列で SMSESSION Cookie を渡します。これらの操作中にセキュリティを強化するには、
StoreSessioninServer
パラメータを設定して、エージェントおよび Cookie プロバイダが一時的にセッションを格納するように設定し、リダイレクト URL 内のセッション Cookie ではなく、格納されたセッションを識別する GUID を渡します。
以下の手順に従います。
  1. 環境が以下の条件を満たすことを確認します。
    • セッション ストアは、ポリシー サーバで設定されます。
    • Cookie プロバイダとして設定されているエージェントの DefaultAgentName パラメータの値が設定されます。
  2. マルチドメイン シングル サインオンに関係するすべてのエージェントおよび Cookie プロバイダで、
    StoreSessioninServer
    エージェント設定パラメータを「
    Yes
    」に設定します。
セッション Cookie ドメインの検証
Web エージェントでセッション Cookie のドメインを検証することにより、許可されていないユーザがセッション Cookie をハイジャックし、再使用するリスクを軽減することができます。ドメインを検証するには、
TrackSessionDomain
パラメータを使用します。このパラメータを[yes]に設定すると、Web エージェントはセッション Cookie の目的のドメインを暗号化し、セッション Cookie 自体に格納します。それ以降のリクエストでは、Web エージェントはセッション Cookie 内に格納されている対象ドメインを、リクエストされたリソースのドメインと比較します。ドメインが一致
しない
場合、Web エージェントはリクエストを拒否します。
たとえば、このパラメータが「yes」に設定されている場合、セッション Cookie の対象が operations.example.com で、リクエストされたドメインが finance.example.com の場合は、拒否されます。
Single Sign-On
環境で SSO を使用する場合は、暗号化されたセッション Cookie を作 成する Web エージェントでこのパラメータを設定します。たとえば、SSO 環境内に
a.example.com
というドメインと
b.example.com
というドメインがあるとします。a.example.com を保護する Web エージェントがセッション cookie を暗号化する場合は、この Web エージェントの TrackSessionDomain パラメータの値を設定します。b.example.com を保護する Web エージェントは、Cookie を受信すると、対象ドメインをリクエストされたリソースのドメインと比較します。
デフォルト:
No
セッション ドメインを追跡するには、TrackSessionDomain パラメータの値を
[yes]
に設定します。
検証期間と期限切れになった Cookie URL での悪用からのセッション Cookie の保護
Single Sign-On
では、時間ベースのセッション Cookie パラメータが使用されます。これは、以下のアイテムにアクセスできる管理者やその他のユーザによってセッション Cookie が危険にさらされる可能性を大幅に減らすことができます。
  • Web サーバ ログ
  • Web エージェント ログ。
  • クロスドメイン シングル サインオンの場合にドメイン間に置かれている、侵害される可能性のあるプロキシ サーバ
これらの時間ベースのセッション cookie パラメータは、セッション cookie に「生成日」の概念を付加します。リダイレクトの結果としてセッション Cookie (URL セッション Cookie)を受け取るエージェントは、Cookie の生成日の名前と値のペアを探し、この値を CookieValidationPeriod 設定パラメータに設定されている値と比較します。生成日の値に CookieValidationPeriod パラメータの値を加えた値が現在の時刻に達しない場合、cookie は拒否されます。
悪用からセッション cookie を保護するには、以下のパラメータを設定します。
  • CookieValidationPeriod
    受信側のエージェントがセッション Cookie を受け取る期間を(秒単位で)指定します。この期間を過ぎると、セッション cookie は受け取られません。このフィールドが使用されていないか、ゼロに設定されている場合、アイドル タイムアウトおよび最大セッション タイムアウト値に達すると、セッション cookie は期限切れになります。
    デフォルト:
    空白
  • ExpiredCookieURL
    (省略可)セッション cookie の期限切れ後にエージェントがユーザをリダイレクトする先の URL を指定します。セッションの作成日も CookieValidationPeriod も設定されていない場合、エージェントはこの設定を無視し、通常どおり Cookie を処理します。
IdleTimeout および SessionGracePeriod パラメータがセッション更新に与える影響
指定したセッション猶予期間は、設定されたアイドル タイムアウトの半分以上にする必要があります。セッション猶予期間がアイドル タイムアウトの半分未満の場合、エージェントは、以下の式に従って新しいセッション cookie を生成します。
IdleTimeout
- (
SessionGracePeriod
* 2)
たとえばセッション猶予期間が 25 分でアイドル タイムアウトが 60 分である場合、エージェントは 10 分後にセッション cookie を再生成します(60 - (25*2) = 10 のため)。