/// <summary> /// Action performed during login. /// </summary> /// <param name="handler">The handler initiating the call.</param> /// <param name="context">The current http context.</param> /// <param name="assertion">The saml assertion of the currently logged in user.</param> public void LoginAction(AbstractEndpointHandler handler, SamlHttpContext context, Saml20Assertion assertion) { string idpKey = Saml20PrincipalCache.GetSaml20AssertionLite().Issuer; Saml20SignonHandler h = (Saml20SignonHandler)handler; IDPEndPoint ep = h.RetrieveIDPConfiguration(idpKey); if (ep.CDC.ExtraSettings != null) { List <KeyValue> values = ep.CDC.ExtraSettings.KeyValues; KeyValue idpEndpoint = values.Find(delegate(KeyValue kv) { return(kv.Key == IDPCookieWriterEndPoint); }); if (idpEndpoint == null) { throw new Saml20Exception(@"Please specify """ + IDPCookieWriterEndPoint + @""" in Settings element."); } KeyValue localReturnPoint = values.Find(delegate(KeyValue kv) { return(kv.Key == LocalReturnUrl); }); if (localReturnPoint == null) { throw new Saml20Exception(@"Please specify """ + LocalReturnUrl + @""" in Settings element."); } string url = idpEndpoint.Value + "?" + TargetResource + "=" + localReturnPoint.Value; context.Response.Redirect(url); } else { handler.DoRedirect(context); } }
/// <summary> /// Action performed during login. /// </summary> /// <param name="handler">The handler initiating the call.</param> /// <param name="context">The current http context.</param> /// <param name="assertion">The saml assertion of the currently logged in user.</param> public void LoginAction(AbstractEndpointHandler handler, HttpContext context, Saml20Assertion assertion) { Saml20SignonHandler signonhandler = (Saml20SignonHandler)handler; IPrincipal prince = Saml20Identity.InitSaml20Identity(assertion, signonhandler.RetrieveIDPConfiguration((string)context.Session[Saml20AbstractEndpointHandler.IDPTempSessionKey])); Saml20PrincipalCache.AddPrincipal(prince); FormsAuthentication.SetAuthCookie(prince.Identity.Name, false); }