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();
        }
    }
示例#2
0
        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();
            }
        }