/// <summary> /// Action performed during logout. /// </summary> /// <param name="handler">The handler.</param> /// <param name="context">The context.</param> /// <param name="IdPInitiated">During IdP initiated logout some actions such as redirecting should not be performed</param> public void LogoutAction(AbstractEndpointHandler handler, HttpContext context, bool IdPInitiated) { if (!IdPInitiated) { 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, 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 SignOn. /// </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 SignOnAction(AbstractEndpointHandler handler, HttpContext context, Saml20Assertion assertion) { var idpKey = _stateService.Get <string>(Saml20SignonHandler.IdpLoginSessionKey); var signOnHandler = handler as Saml20SignonHandler; if (signOnHandler == null) { throw new ArgumentException("Endpoint handler must be of type Saml20SignonHandler.", "handler"); } var identityProvider = signOnHandler.RetrieveIDPConfiguration(idpKey); if (identityProvider.CommonDomainCookie != null) { var values = identityProvider.CommonDomainCookie.AllKeys; var idpEndpoint = values.FirstOrDefault(x => x == IDPCookieWriterEndPoint); if (idpEndpoint == null) { throw new Saml20Exception(@"Please specify """ + IDPCookieWriterEndPoint + @""" in CommonDomainCookie element."); } var localReturnPoint = values.FirstOrDefault(x => x == LocalReturnUrl); if (localReturnPoint == null) { throw new Saml20Exception(@"Please specify """ + LocalReturnUrl + @""" in CommonDomainCookie element."); } context.Response.Redirect(idpEndpoint + "?" + TargetResource + "=" + localReturnPoint); } 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) { handler.DoRedirect(context); }