SessionAuthenticationModule 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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
- 상속
예제
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에는 SAM ASP.NET 파이프라인에서 구성 하는 방법을 보여 줍니다. 일반적인 구성에 있는 여러 가지 요소는 간단한 설명을 위해 여기 생략 됩니다.
<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-페더레이션 시나리오에서 세션 쿠키를 처리 합니다. 지정 된 쿠키 처리기를 사용 하는 CookieHandler HTTP 요청에서 원시 세션 쿠키를 읽고 HTTP 응답에 쓸 속성입니다. 사용 된 SessionSecurityTokenHandler 에 원시 세션 쿠키를 역직렬화 할 애플리케이션에 대해 구성 된 SessionSecurityToken 개체입니다. 세션 보안 토큰을 클레임을 포함 (Claim) 및 주체 (ClaimsPrincipal) 요청이 처리 되는 엔터티와 연결 합니다.
SAM 추가 해당 OnAuthenticateRequest 이벤트 처리기는 HttpApplication.AuthenticateRequest ASP.NET 파이프라인에는 이벤트입니다. 이 처리기 로그인 요청을 가로채서, 세션 토큰을 역직렬화하 고 설정 하면 세션 쿠키가 있으면 합니다 Thread.CurrentPrincipal 및 HttpContext.User 세션 토큰에 포함 된 클레임 보안 주체에는 속성입니다. 다양 한이 프로세스 중 SAM에서 노출 되는 다른 메서드를 호출 합니다.
SignOut (예를 들어 SignOut.aspx.cs 코드 숨김 파일)에 세션에서 사용자 로그인 메서드를 호출할 수 있습니다.
SAM 해당 처리 파이프라인에 대 한 액세스를 제공 하는 여러 이벤트를 노출 합니다. 합니다 SessionSecurityTokenReceived 고 SessionSecurityTokenCreated 이벤트를 통해 쿠키에서 읽은 되거나 처리 중에 생성 되는 세션 토큰을 수정할 수 있습니다. 일반적으로 추가, 제거 또는 토큰의 클레임을 변환 하거나 만료 시간에 맞게 수행 됩니다. 합니다 SigningOut, SignedOut, 및 SignOutError 이벤트를 로그 아웃 요청을 처리 하는 후크를 제공 합니다. 많은 시나리오에서 global.asax.cs 파일에 종종 이러한 이벤트에 대 한 처리기를 추가 하기만 하면 됩니다.
더 복잡 한 시나리오에서 파생할 수 있습니다 SessionAuthenticationModule 사용자 지정 SAM을 구현 합니다. 이 위해 하는 동안 호출 되는 메서드의 대부분 OnAuthenticateRequest 고 SignOut 세션 처리 수명 주기의 특정 단계에서 사용자 지정 동작을 제공할 수 있도록 노출 됩니다.
아래에서 HTTP 모듈에 추가 하 여 구성 파일의 ASP.NET 파이프라인에 SAM을 추가할 수 있습니다는 <system.webServer>
또는 IIS 7 이상 버전에 대 한 요소는 <system.web>
IIS 7 이전 버전에 대 한 요소입니다. SAM에서 사용하는 쿠키 처리기는 cookieHandler> 요소로< 구성할 수 있습니다.
생성자
SessionAuthenticationModule() |
SessionAuthenticationModule 클래스의 새 인스턴스를 초기화합니다. |
속성
ContextSessionSecurityToken |
현재 SessionSecurityToken에 대한 활성 HttpContext을 가져옵니다. |
CookieHandler |
세션 쿠키를 읽고 쓰고 삭제하는 데 사용되는 쿠키 처리기를 가져옵니다. |
FederationConfiguration |
현재 모듈에 적용되는 FederationConfiguration 개체를 가져오거나 설정합니다. (다음에서 상속됨 HttpModuleBase) |
IsReferenceMode |
세션 정보(클레임 값 등)가 세션 쿠키에 저장되어야 하는지 여부나 세션 콘텐츠가 서버쪽에 저장되고 쿠키를 사용하여 참조만 저장해야 하는지 여부를 지정하는 값을 가져오거나 설정합니다. |
메서드
이벤트
SessionSecurityTokenCreated |
세션 보안 토큰이 발생합니다. |
SessionSecurityTokenReceived |
쿠키에서 세션 보안 토큰을 읽으면 발생합니다. |
SignedOut |
사용자가 로그아웃한 후에 발생합니다. |
SigningOut |
로그인 세션을 삭제하기 전에 발생합니다. |
SignOutError |
로그아웃 중 오류가 있으면 발생합니다. |
적용 대상
.NET