protected void Page_Load(object sender, EventArgs e) { #region Trace // Write a trace message if (Trace.IsEnabled) { if (HttpContext.Current.User != null) { Trace.Write("HttpContext.Current.User", HttpContext.Current.User.ToString()); Trace.Write("HttpContext.Current.User.Identity", HttpContext.Current.User.Identity.ToString()); if (HttpContext.Current.User.Identity is FormsIdentity) { Trace.Write("HttpContext.Current.User.Identity.IsAuthenticated", HttpContext.Current.User.Identity.IsAuthenticated.ToString()); if (HttpContext.Current.User.Identity.IsAuthenticated) { FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity; Trace.Write("FormsIdentity.Ticket.Name", id.Ticket.Name); Trace.Write("FormsIdentity.Ticket.IssueDate", id.Ticket.IssueDate.ToString()); } } } else { Trace.Write("HttpContext.Current.User", "NULL"); } } #endregion Trace try { // Verifica autenticação if (UserIsAuthenticated()) { if ((!String.IsNullOrEmpty(Request[HttpBindingConstants.SAMLRequest])) && (!String.IsNullOrEmpty(Request[HttpBindingConstants.RelayState]))) { // Recupera Request SAMLRequest = new SAMLAuthnRequest(); string request = HttpUtility.UrlDecode(Request[HttpBindingConstants.SAMLRequest]); SAMLRequest.UnPackRequest(request.Replace(" ", "+")); // Criação e configuração do Response SAMLResponse = new ResponseType(); CreateSAMLResponse(); // Armazena dados do sistema emissor do Request // em Cookie de sistemas autenticados AddSAMLCookie(); } else { throw new ValidationException("Não foi possível atender a solicitação, requisição inválida."); } } else //Autenticar com SAML no CoreSSO { if (Request.QueryString.AllKeys.Contains("RelayState") && !String.IsNullOrWhiteSpace(Request.QueryString["RelayState"].ToString()) && Request.QueryString["RelayState"].ToString().Split('?').Count() > 1 && Request.QueryString["RelayState"].ToString().Contains("RedirectUrlSAML") ) { string redirectUrlSAML = Request.QueryString["RelayState"].ToString().Split('?')[1]; Response.Redirect("~/Login.ashx?" + redirectUrlSAML, false); } else { throw new ValidationException("Não foi possível atender a solicitação, configuração da RedirectUrlSAML inválida."); } } } catch (ValidationException ex) { __SessionWEB.PostMessages = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); Response.Redirect("~/Sistema.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); __SessionWEB.PostMessages = UtilBO.GetErroMessage("Não foi possível atender a solicitação.", UtilBO.TipoMensagem.Erro); Response.Redirect("~/Sistema.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } }
public new void ProcessRequest(HttpContext context) { #region Trace // Write a trace message if (Trace.IsEnabled) { if (context.User != null) { Trace.Write("context.User", context.User.ToString()); Trace.Write("context.User.Identity", context.User.Identity.ToString()); if (context.User.Identity is FormsIdentity) { Trace.Write("context.User.Identity.IsAuthenticated", context.User.Identity.IsAuthenticated.ToString()); if (context.User.Identity.IsAuthenticated) { FormsIdentity id = (FormsIdentity)context.User.Identity; Trace.Write("FormsIdentity.Ticket.Name", id.Ticket.Name); Trace.Write("FormsIdentity.Ticket.IssueDate", id.Ticket.IssueDate.ToString()); } } } else { Trace.Write("context.User", "NULL"); } } #endregion Trace try { //// Verifica autenticação if (UserIsAuthenticated()) { if ((!String.IsNullOrEmpty(context.Request[HttpBindingConstants.SAMLRequest])) && (!String.IsNullOrEmpty(context.Request[HttpBindingConstants.RelayState]))) { // Recupera Request SAMLRequest = new SAMLAuthnRequest(); string request = HttpUtility.UrlDecode(context.Request[HttpBindingConstants.SAMLRequest]); SAMLRequest.UnPackRequest(request.Replace(" ", "+")); // Criação e configuração do Response SAMLResponse = new ResponseType(); CreateSAMLResponse(context); // Armazena dados do sistema emissor do Request // em Cookie de sistemas autenticados AddSAMLCookie(context); } else { throw new ValidationException("Não foi possível atender a solicitação, requisição inválida."); } } else { throw new ValidationException("Não foi possível atender a solicitação, o usuário não tem permissão de acesso ao sistema."); } } catch (ValidationException ex) { retorno.Mensagem = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); UtilBO.MessageJSON(this.Context.Response.Output, retorno); HttpContext.Current.ApplicationInstance.CompleteRequest(); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); retorno.Mensagem = UtilBO.GetErroMessage("Não foi possível atender a solicitação.", UtilBO.TipoMensagem.Erro); UtilBO.MessageJSON(this.Context.Response.Output, retorno); HttpContext.Current.ApplicationInstance.CompleteRequest(); } }