Estoy tratando de configurar sesiones deslizantes en WIF y necesito manejar SessionSecurityTokenReceived.¿Cómo manejo el evento SessionSecurityTokenReceived en Global.asax?
Estoy seguro de que estoy haciendo algo tonto aquí ... pero VS2010 sigue diciéndome que There is no applicable variable or member
en el lugar ilustrado a continuación. ¿Alguien puede señalarme en la dirección correcta? He buscado alto y bajo muestras reales de cómo definir el manejo de este evento, pero no puedo encontrar uno solo.
Global.asax
protected void Application_Start()
{
FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenReceived
+= SessionAuthenticationModule_SessionSecurityTokenReceived;
// ^^^ There is no applicable variable or member
}
void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
{
DateTime now = DateTime.UtcNow;
DateTime validFrom = e.SessionToken.ValidFrom;
DateTime validTo = e.SessionToken.ValidTo;
if ((now < validTo) &&
(now > validFrom.AddMinutes((validTo.Minute - validFrom.Minute)/2))
)
{
SessionAuthenticationModule sam = sender as SessionAuthenticationModule;
e.SessionToken = sam.CreateSessionSecurityToken(
e.SessionToken.ClaimsPrincipal,
e.SessionToken.Context,
now,
now.AddMinutes(2),
e.SessionToken.IsPersistent);
e.ReissueCookie = true;
}
else
{
//todo: WSFederationHelper.Instance.PassiveSignOutWhenExpired(e.SessionToken, this.Request.Url);
// this code from: http://stackoverflow.com/questions/5821351/how-to-set-sliding-expiration-in-my-mvc-app-that-uses-sts-wif-for-authenticati
var sessionAuthenticationModule = (SessionAuthenticationModule)sender;
sessionAuthenticationModule.DeleteSessionTokenCookie();
e.Cancel = true;
}
}
¡Fácil y funciona como un encanto! ¿Cómo puedo saber la diferencia entre los eventos que necesitan cableado y los que no – LamonteCristo