SessionSecurityTokenHandler クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
種類が SecurityTokenHandler であるセキュリティ トークンを処理する SessionSecurityToken。
public ref class SessionSecurityTokenHandler : System::IdentityModel::Tokens::SecurityTokenHandler
public class SessionSecurityTokenHandler : System.IdentityModel.Tokens.SecurityTokenHandler
type SessionSecurityTokenHandler = class
inherit SecurityTokenHandler
Public Class SessionSecurityTokenHandler
Inherits SecurityTokenHandler
- 継承
- 派生
例
次の XML は、トークン ハンドラー コレクション内の既定のセッション セキュリティ トークン ハンドラーを構成の クラスのインスタンスに置き換える方法を MachineKeySessionSecurityTokenHandler 示しています。
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
注釈
クラスは SessionSecurityTokenHandler 、セッション トークンをシリアル化、逆シリアル化、検証します。 セッション トークンは、 型のトークンです SessionSecurityToken。 クラスは SessionSecurityTokenHandler 、Cookie 形式との間でトークンをシリアル化します。 既定では、クラスはトークンを WS-Secure Conversation Feb2005 または WS-Secure Conversation 1.3 <wsc:SecurityContextToken>
要素にシリアル化します。 セッション トークンは、(WSFAM) と SessionAuthenticationModule (SAM) によってWSFederationAuthenticationModuleセッションに関する情報を格納するために使用されます。これは主に、認証されたユーザーとセッションの開始時刻と有効期限にClaimsPrincipal関連付けられています。
パッシブ シナリオでは、 WSFederationAuthenticationModule 認証パイプラインから (SAM) を SessionAuthenticationModule 呼び出して、認証されたユーザーを表す から ClaimsPrincipal セッション トークンを作成します。 SAM は、構成された SessionSecurityTokenHandler を使用してトークンを作成し、それを Cookie にシリアル化します (また、後続の要求で Cookie からトークンを逆シリアル化します)。 SAM は、構成された CookieHandler クラスのインスタンスを使用して、COOKIE を HTTP 応答に書き戻します。 その後、この Cookie はクライアントに返され、その後の要求で、クライアントは ID プロバイダーにラウンド トリップしてセキュリティ トークンを取得し直すのではなく、Cookie を提示できます。 WIF でのセッションの動作の詳細については、「 WIF セッション管理」を参照してください。
注意
<securityTokenHandlers> 構成要素を使用して、アプリケーションのセッションをセキュリティで保護する責任がある を指定SessionSecurityTokenHandlerできます。 システムが正しく構成されていないと、アプリケーションが侵害される可能性があり、この構成設定を変更する場合は注意が必要です。 たとえば、派生 SessionSecurityTokenHandler を指定し、空の Transforms (CookieTransform) コレクションをベースに渡すと、ユーザー ID が保護されていない Cookie にシリアル化されます。 これにより、攻撃者が ID を変更し、アクセス特権を変更する可能性があります。
セッション トークンが参照モードの場合、つまり、その SessionSecurityToken.IsReferenceMode プロパティが である true
場合、セッション トークン ハンドラーは、 で SessionSecurityTokenCacheキーを再生成するために必要なセッション トークンのプロパティのみをシリアル化します。 既定のケースでは、 クラスをSessionSecurityTokenCacheKey使用してキャッシュ キーを表し、トークン ハンドラーは トークンの プロパティと SessionSecurityToken.KeyGeneration プロパティを書き込SessionSecurityToken.ContextIdみます。 セッション トークンが参照モードでない場合、つまり SessionSecurityToken.IsReferenceMode 、 プロパティが である false
場合、前に説明したプロパティに加えて、ハンドラーはトークンからシリアル化されたバイト配列で メソッドを呼び出 ApplyTransforms し、結果の値も Cookie に格納します。 トークンのシリアル化方法の詳細については、 メソッドを SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) 参照してください。
プロパティは Transforms 、 メソッドのセッション トークンに適用される変換の一覧を ApplyTransforms 取得します。 すべての変換は、 クラスから CookieTransform 派生します。 既定では、 DeflateCookieTransform と が ProtectedDataCookieTransform 適用されます。 では ProtectedDataCookieTransform 、Data Protection API (DPAPI) を使用して Cookie 素材を保護します。 DPAPI は、保護アルゴリズムで実行されているコンピューターに固有のキーを使用します。 このため、既定のセッション トークン ハンドラーは、Web ファームのシナリオでは使用できません。このようなシナリオでは、あるコンピューターに書き込まれたトークンを別のコンピューターで読み取る必要がある場合があるためです。 この問題を回避するには、多くの戦略を使用できます。 たとえば、次のように操作できます。
既定値 SessionSecurityTokenHandler を に MachineKeySessionSecurityTokenHandler置き換えます。 MachineKeySessionSecurityTokenHandlerでは、構成ファイルの ASP.NET
<machineKey>
要素で署名キーと暗号化キーを指定できます。global.asax.cs ファイルで イベントのFederatedAuthentication.FederationConfigurationCreatedハンドラーを指定し、既定のセッション トークン ハンドラーを、 と を含むRsaSignatureCookieTransform変換のリストを持つ のインスタンスSessionSecurityTokenHandlerにRsaEncryptionCookieTransform置き換えます。 変換の一覧を受け取るコンストラクターのいずれかを呼び出すことで、新しいインスタンスを作成できます。
基底クラスからカスタム変換を CookieTransform 派生させ、上記の メソッドを使用して、適用する変換の一覧に含めます。
からカスタム トークン ハンドラー SessionSecurityTokenHandler を派生させ、独自のメカニズムを実装します。
Web ファーム シナリオでのセッションの使用の詳細については、「 WIF および Web ファーム」を参照してください。
SessionSecurityTokenHandlerは既定のトークン ハンドラー コレクションに含まれていますが、まず securityTokenHandlers> 要素の下<に remove> 要素を指定してコレクションから既定のハンドラーを<削除し、add 要素を使用して<>カスタム トークン ハンドラーを追加することで、カスタム セッション トークン ハンドラーに置き換えることができます。 既定では、 要素の下に sessionTokenRequirement> 要素を<含めることで、既定のトークンの有効期間を<add>
指定できます。 カスタム トークン ハンドラーを設計して、 要素の下でカスタム構成要素を <add>
取得するには、 LoadCustomConfiguration メソッドをオーバーライドして、それらを処理するロジックを提供します。
コンストラクター
SessionSecurityTokenHandler() |
既定のクッキー変換およびトークン有効期間を使用する SessionSecurityTokenHandler クラスの新しいインスタンスを初期化します。 |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
指定したクッキーの変換を使用する SessionSecurityTokenHandler クラスの新しいインスタンスを初期化します。 |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
指定したクッキー変換およびトークン有効期間を使用する SessionSecurityTokenHandler クラスの新しいインスタンスを初期化します。 |
フィールド
DefaultCookieTransforms |
Cookie、DeflateCookieTransform、および ProtectedDataCookieTransform に適用される既定の変換から成るリストを含む読み取り専用コレクション。 |
DefaultLifetime |
Cookie の既定の有効期間を指定する定数、10 時間。 |
プロパティ
CanValidateToken |
このハンドラーが、種類が SessionSecurityToken であるトークンの検証をサポートするかどうかを示す値を取得します。 |
CanWriteToken |
このハンドラーが、種類が SessionSecurityToken であるトークンを書き込むできるかどうかを示す値を取得します。 |
Configuration |
現在のインスタンスの構成を提供する SecurityTokenHandlerConfiguration オブジェクトを取得または設定します。 (継承元 SecurityTokenHandler) |
ContainingCollection |
現在のインスタンスを含むトークン ハンドラー コレクションを取得します。 (継承元 SecurityTokenHandler) |
CookieElementName |
クッキー要素の名前を取得します。 |
CookieNamespace |
クッキー要素の名前空間を取得します。 |
DefaultTokenLifetime |
既定のトークン有効期間を取得します。 |
TokenLifetime |
トークンの有効期間を取得または設定します。 |
TokenType |
このハンドラーが処理するトークンの型を取得します。 |
Transforms |
クッキーに適用される変換を取得します。 |
メソッド
ApplyTransforms(Byte[], Boolean) |
指定したクッキーに対して Transforms プロパティに指定された変換を適用して、クッキーをエンコードまたはデコードします。 |
CanReadKeyIdentifierClause(XmlReader) |
指定した XML リーダーによって参照される XML 要素が、このインスタンスによって逆シリアル化できるキー識別子節であるかどうかを示す値を返します。 (継承元 SecurityTokenHandler) |
CanReadToken(String) |
指定した文字列が、このインスタンスが処理する型のトークンとして逆シリアル化できるかどうかを示す値を返します。 (継承元 SecurityTokenHandler) |
CanReadToken(XmlReader) |
リーダーの位置が |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
指定したキー識別子句をこのインスタンスでシリアル化できるかどうかを示す値を返します。 (継承元 SecurityTokenHandler) |
CreateSecurityTokenReference(SecurityToken, Boolean) |
派生クラスでオーバーライドされると、そのクラスによって処理されるトークンのセキュリティ トークン参照を作成します。 このメソッドは、通常、セキュリティ トークン サービス (STS) によって呼び出されます。 (継承元 SecurityTokenHandler) |
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
指定したクレーム プリンシパルとトークンの有効期間に基づいて SessionSecurityToken を作成します。 |
CreateToken(SecurityTokenDescriptor) |
指定したトークン記述子に基づいてセキュリティ トークンを作成します。 |
DetectReplayedToken(SecurityToken) |
派生クラスでオーバーライドされると、指定したトークンが再生中に検出された場合に例外をスローします。 (継承元 SecurityTokenHandler) |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetTokenTypeIdentifiers() |
このハンドラーで処理できるトークンの種類の、トークンの種類 URI を取得します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
LoadCustomConfiguration(XmlNodeList) |
カスタム構成を XML から読み込みます。 |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ReadKeyIdentifierClause(XmlReader) |
派生クラスでオーバーライドされると、指定された XML リーダーによって参照される XML を、派生クラスによって処理されるトークンを参照するキー識別句に逆シリアル化します。 (継承元 SecurityTokenHandler) |
ReadToken(Byte[], SecurityTokenResolver) |
指定されたトークン リゾルバーを使用して、バイトのストリームから SessionSecurityToken を読み取ります。 |
ReadToken(String) |
派生クラスでオーバーライドされると、派生クラスによって処理される型のトークンに指定の文字列を逆シリアル化します。 (継承元 SecurityTokenHandler) |
ReadToken(XmlReader) |
指定した XML リーダーを使用して SessionSecurityToken を読み取ります。 |
ReadToken(XmlReader, SecurityTokenResolver) |
指定した XML リーダーおよびトークン リゾルバーを使用して SessionSecurityToken を読み取ります。 |
SetTransforms(IEnumerable<CookieTransform>) |
クッキーに適用される変換を設定します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
TraceTokenValidationFailure(SecurityToken, String) |
トレースが有効であるとき、セキュリティ トークンの検証中、障害イベントをトレースします。 (継承元 SecurityTokenHandler) |
TraceTokenValidationSuccess(SecurityToken) |
トレースが有効であるとき、セキュリティ トークン イベントの検証の成功をトレースします。 (継承元 SecurityTokenHandler) |
ValidateSession(SessionSecurityToken) |
指定したトークンに関連付けられたセッションがまだ有効かどうかを判断します。 有効性は、指定されたトークンの ValidFrom と ValidTo プロパティをチェックすることによって判断されます。 セッションが無効になった場合は、例外がスローされます。 |
ValidateToken(SecurityToken) |
指定されたトークンを検証し、その要求を返します。 |
ValidateToken(SessionSecurityToken, String) |
指定されたセッション トークンを検証し、クレームを返します。 |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
派生クラスでオーバーライドされると、指定されたキー識別句を XML にシリアル化します。 キー識別句は、派生クラスでサポートされているタイプにする必要があります。 (継承元 SecurityTokenHandler) |
WriteToken(SecurityToken) |
派生クラスでオーバーライドされると、指定されたセキュリティ トークンを文字列にシリアル化します。 トークンは、派生クラスによって処理される種類である必要があります。 (継承元 SecurityTokenHandler) |
WriteToken(SessionSecurityToken) |
指定したトークンをバイト配列にシリアル化します。 |
WriteToken(XmlWriter, SecurityToken) |
指定した XML ライターを使用して、指定したトークンをシリアル化します。 |
適用対象
こちらもご覧ください
.NET