SessionAuthenticationModule クラス

定義

WS-Federation シナリオのセッション クッキーを処理する ASP.NET モジュールを実装します。

public ref class SessionAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class SessionAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type SessionAuthenticationModule = class
    inherit HttpModuleBase
Public Class SessionAuthenticationModule
Inherits HttpModuleBase
継承
SessionAuthenticationModule

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup

    //SUBSCRIBE TO SAM EVENTS
    FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenCreated);
    FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived += new EventHandler<SessionSecurityTokenReceivedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenReceived);
    FederatedAuthentication.SessionAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(SessionAuthenticationModule_SigningOut);
    FederatedAuthentication.SessionAuthenticationModule.SignedOut += new EventHandler(SessionAuthenticationModule_SignedOut);
    FederatedAuthentication.SessionAuthenticationModule.SignOutError += new EventHandler<ErrorEventArgs>(SessionAuthenticationModule_SignOutError);
}
void SessionAuthenticationModule_SignOutError(object sender, ErrorEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SignOutError event");
}

void SessionAuthenticationModule_SignedOut(object sender, EventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SignedOut event");
}

void SessionAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SigningOut event");
}

void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenReceived event");
}

void SessionAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
    System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
    //Store session on the server-side token cache instead writing the whole token to the cookie.
    //It may improve throughput but introduces server affinity that may affect scalability
    FederatedAuthentication.SessionAuthenticationModule.IsReferenceMode = true;
}

次の XML は、ASP.NET パイプラインで SAM を構成する方法を示しています。 簡潔にするために、一般的な構成に存在する他の多くの要素はここでは省略されています。

<configuration>  
  <system.webServer>  
    <modules>  
      <!--WIF 4.5 modules -->  
      <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  
      <add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  
    </modules>  
  </system.webServer>  
</configuration>  

注釈

ASP.NET パイプラインに存在する場合、 SessionAuthenticationModule (SAM) は、WS-Federation シナリオでセッション Cookie を処理します。 プロパティで指定された Cookie ハンドラーを CookieHandler 使用して、HTTP 要求から生セッション Cookie を読み取り、HTTP 応答に書き込みます。 アプリケーションが生セッション Cookie SessionSecurityToken をオブジェクトに逆シリアル化するように構成されている を使用SessionSecurityTokenHandlerします。 セッション セキュリティ トークンには、要求を処理するエンティティに関連付けられている要求 (Claim) とプリンシパル (ClaimsPrincipal) が含まれます。

SAM は、その OnAuthenticateRequest イベント ハンドラーを HttpApplication.AuthenticateRequest ASP.NET パイプラインのイベントに追加します。 このハンドラーはサインイン要求をインターセプトし、セッション Cookie がある場合はセッション トークンに逆シリアル化し、 プロパティと HttpContext.User プロパティをセッション トークンに含まれる要求プリンシパルに設定Thread.CurrentPrincipalします。 このプロセス中に SAM によって公開される他のいくつかのメソッドを呼び出します。

メソッドを SignOut 呼び出して、ユーザーをセッションからサインアウトできます (たとえば、SignOut.aspx.cs分離コード ファイル内)。

SAM は、処理パイプラインへのアクセスを提供するいくつかのイベントを公開します。 SessionSecurityTokenReceivedイベントと SessionSecurityTokenCreated イベントを使用すると、Cookie から読み取られたり、処理中に作成されたセッション トークンを変更したりできます。 通常、これはトークン内の要求を追加、削除、または変換したり、有効期限を調整したりするために行われます。 、SignedOut、および SignOutError イベントはSigningOut、サインアウト要求の処理にフックを提供します。 多くのシナリオでは、多くの場合、これらのイベントのハンドラーをglobal.asax.cs ファイルに追加するだけで十分です。

より複雑なシナリオでは、 から SessionAuthenticationModule 派生してカスタム SAM を実装できます。 このため、セッション処理ライフサイクルの特定の段階でカスタム動作を提供できるように、 および の間にOnAuthenticateRequestSignOut呼び出されるメソッドの多くが公開されます。

構成ファイルの ASP.NET パイプラインに SAM を追加するには、IIS バージョン 7 以降の 要素の下 <system.webServer> 、または IIS 7 より前のバージョンの 要素の下 <system.web> にある HTTP モジュールに SAM を追加します。 SAM で使用される Cookie ハンドラーは、cookieHandler> 要素を使用して<構成できます。

コンストラクター

SessionAuthenticationModule()

SessionAuthenticationModule クラスの新しいインスタンスを初期化します。

プロパティ

ContextSessionSecurityToken

現在の SessionSecurityToken のアクティブな HttpContext を取得します。

CookieHandler

セッション クッキーの読み取り、書き込み、および削除に使用されるクッキー ハンドラーを取得します。

FederationConfiguration

現在のモジュールに対して有効な FederationConfiguration オブジェクトを取得または設定します。

(継承元 HttpModuleBase)
IsReferenceMode

セッション情報 (クレーム値など) をセッション クッキーに保存するか、またはセッションの内容を、クッキーを使用して参照だけを保存することにより、サーバー側で保存するかを指定する値を取得または設定します。

メソッド

AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

受信セッション トークンを検証することにより受信要求を認証します。 検証が成功すると、指定した を使用して、現在の HTTP コンテキストとスレッド プリンシパルが更新されます SessionSecurityToken

ContainsSessionTokenCookie(HttpCookieCollection)

セッション クッキーが指定したクッキー コレクション内にあるかどうかを判断します。

CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean)

構成済みのセッション トークン ハンドラーを使用して指定されたパラメーターから SessionSecurityToken を作成します。

DeleteSessionTokenCookie()

セッション クッキーを削除し、キャッシュから削除します。

Dispose()

HttpModuleBase クラスの現在のインスタンスによって使用されているリソース (メモリを除く) を解放します。

(継承元 HttpModuleBase)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Init(HttpApplication)

HTTP モジュールを初期化します。

(継承元 HttpModuleBase)
InitializeModule(HttpApplication)

モジュールを初期化し、モジュールの ASP.NET アプリケーション オブジェクトからのイベントを処理するように準備します。

InitializePropertiesFromConfiguration()

構成ファイルの定義に基づいてモジュール プロパティを初期化します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnAuthenticateRequest(Object, EventArgs)

AuthenticateRequest ASP.NET パイプラインからイベントを処理します。

OnPostAuthenticateRequest(Object, EventArgs)

PostAuthenticateRequest ASP.NET パイプラインからイベントを処理します。

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

SessionSecurityTokenCreated イベントを発生させます。

OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs)

SessionSecurityTokenReceived イベントを発生させます。

OnSignedOut(EventArgs)

SignedOut イベントを発生させます。

OnSigningOut(SigningOutEventArgs)

SigningOut イベントを発生させます。

OnSignOutError(ErrorEventArgs)

SignOutError イベントを発生させます。

ReadSessionTokenFromCookie(Byte[])

指定されたセッション クッキーから SessionSecurityToken を読み取ります。

SetPrincipalFromSessionToken(SessionSecurityToken)

指定されたセッション トークンに含まれるプリンシパルに HttpContextThread のプリンシパルを設定します。

SignOut()

現在のユーザーからサインアウトして、関連したイベントを発生させます。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

セッション クッキーから SessionSecurityToken を読み取り、セッション クッキーが正常に読み取られたかどうかを示す値を返します。

ValidateSessionToken(SessionSecurityToken)

指定された SessionSecurityToken を検証し、ID を返します。

WriteSessionTokenToCookie(SessionSecurityToken)

指定された SessionSecurityToken をセッション クッキーに書き込みます。

イベント

SessionSecurityTokenCreated

セッション セキュリティ トークンが作成されたときに発生します。

SessionSecurityTokenReceived

クッキーからセッション セキュリティ トークンを読み込んだときに発生します。

SignedOut

ユーザーがサインアウトした後に発生します。

SigningOut

サインイン セッションを削除する前に発生します。

SignOutError

サインアウト中にエラーが発生したときに発生します。

適用対象