Ejemplo n.º 1
0
        /// <summary>
        /// Verifica se a Session do usuário está nula,
        /// se estiver verifica o FormsIdentity e carrega a Session
        /// </summary>
        private void GetFormsIdentityLoadSession()
        {
            try
            {
                if (HttpContext.Current.User.Identity.IsAuthenticated)
                {
                    var usuarioCore = SignHelper.ObterUsuarioDoClaimsIdentity();
                    LoadSession(usuarioCore);
                    var grupo = SignHelper.ObterGrupoDoUsuarioDoClaimsIdentity();
                    if (grupo != null)
                    {
                        __SessionWEB.__UsuarioWEB.Grupo = grupo;
                    }

                    LoadSessionSistema();
                }
            }
            catch (Exception ex)
            {
                ApplicationWEB._GravaErro(ex);
            }
        }
Ejemplo n.º 2
0
        private void Entrar()
        {
            try
            {
                // Carrega os dados do usuário necessário para o login
                SYS_Usuario entityUsuario = new SYS_Usuario
                {
                    ent_id = new Guid(this.entidade)
                    ,
                    usu_login = this.login
                    ,
                    usu_senha = this.senha
                };

                // Checa as credenciais do usuário
                LoginStatus status   = SYS_UsuarioBO.LoginWEB(entityUsuario);
                var         mensagem = "";

                switch (status)
                {
                case LoginStatus.Erro:
                {
                    ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Erro ao tentar entrar no sistema.", entityUsuario.usu_login);
                    mensagem         = "Erro ao tentar entrar no sistema.";
                    retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Erro);
                    UtilBO.MessageJSON(this.Context.Response.Output, retorno);
                    break;
                }

                case LoginStatus.Bloqueado:
                {
                    ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Usuário bloqueado.", entityUsuario.usu_login);
                    mensagem         = "Usuário bloqueado.";
                    retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta);
                    UtilBO.MessageJSON(this.Context.Response.Output, retorno);
                    break;
                }

                case LoginStatus.NaoEncontrado:
                {
                    ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Usuário não encontrado.", entityUsuario.usu_login);
                    mensagem         = "Usuário e/ou senha inválidos.";
                    retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta);

                    UtilBO.MessageJSON(this.Context.Response.Output, retorno);
                    break;
                }

                case LoginStatus.SenhaInvalida:
                {
                    ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Senha inválida.", entityUsuario.usu_login);
                    mensagem         = "Usuário e/ou senha inválidos.";
                    retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta);
                    UtilBO.MessageJSON(this.Context.Response.Output, retorno);
                    break;
                }

                case LoginStatus.Expirado:
                {
                    ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Senha expirada.", entityUsuario.usu_login);
                    mensagem         = "Senha expirada.";
                    retorno.Mensagem = MensagemDeRetorno(mensagem, UtilBO.TipoMensagem.Alerta);
                    UtilBO.MessageJSON(this.Context.Response.Output, retorno);
                    break;
                }

                case LoginStatus.Sucesso:
                {
                    // Configura usuário na Session
                    LoadSession(entityUsuario);
                    ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Login, "Login efetuado com sucesso.");

                    if (!string.IsNullOrEmpty(this.urlSistema))
                    {
                        //Chama o Login.ashx do site cliente.
                        this.Context.Response.Redirect(this.urlSistema, false);
                        HttpContext.Current.ApplicationInstance.CompleteRequest();
                    }
                    else
                    {
                        retorno.Mensagem = MensagemDeRetorno("sucesso", UtilBO.TipoMensagem.Alerta);
                        UtilBO.MessageJSON(this.Context.Response.Output, retorno);
                    }

                    break;
                }
                }
            }
            catch (Exception ex)
            {
                ApplicationWEB._GravaErro(ex);
                retorno.Mensagem = UtilBO.GetErroMessage("Erro ao tentar entrar no sistema.", UtilBO.TipoMensagem.Erro);
                UtilBO.MessageJSON(this.Context.Response.Output, retorno);
            }
        }
Ejemplo n.º 3
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();
            }
        }
Ejemplo n.º 4
0
        public new void ProcessRequest(HttpContext context)
        {
            try
            {
                // ***** REQUEST *****
                if (!String.IsNullOrEmpty(context.Request[HttpBindingConstants.SAMLRequest]))
                {
                    // Recupera LogoutRequest
                    StringBuilder result = new StringBuilder();

                    byte[]       encoded      = Convert.FromBase64String(HttpUtility.UrlDecode(context.Request[HttpBindingConstants.SAMLRequest]).Replace(" ", "+"));
                    MemoryStream memoryStream = new MemoryStream(encoded);
                    using (DeflateStream stream = new DeflateStream(memoryStream, CompressionMode.Decompress))
                    {
                        StreamReader reader = new StreamReader(new BufferedStream(stream), Encoding.GetEncoding("iso-8859-1"));
                        reader.Peek();
                        result.Append(reader.ReadToEnd());
                        stream.Close();
                    }
                    SAMLRequest = SAMLUtility.DeserializeFromXmlString <LogoutRequestType>(result.ToString());

                    AtribuirSessionSisIDLogout(((NameIDType)SAMLRequest.Item).Value);

                    // Criação e configuração LogoutResponse
                    SAMLResponse = new ResponseType();
                    CreateSAMLResponse();
                }
                // ***** RESPONSE *****
                else if (!String.IsNullOrEmpty(context.Request[HttpBindingConstants.SAMLResponse]))
                {
                    throw new NotImplementedException();
                }
                else
                {
                    AtribuirSessionSisIDLogout(String.Concat(ApplicationWEB._DiretorioVirtual, "Logout.ashx"));

                    __SessionWEB.SistemasRequestLogout++;

                    //Se existir link de retorno na primeira vez, significa que o sistema que iniciou o processo de logout
                    //enviou na queryString o endereço que deve ser redirecionado após terminar todo o processo.
                    if (!String.IsNullOrEmpty(context.Request["SistemaUrlLogout"]) && __SessionWEB.SistemasRequestLogout == 1)
                    {
                        __SessionWEB.SistemaUrlLogout_QueryString = context.Request["SistemaUrlLogout"];
                    }

                    // Verifica se existe sistemas autenticados em Cookie para realizar logout
                    HttpCookie cookie = context.Request.Cookies["SistemasLogged"];
                    if (cookie != null &&
                        cookie.Values.AllKeys.Count(p => p != null) > 0)
                    {
                        SYS_Sistema entitySistema = SYS_SistemaBO.GetEntity(new SYS_Sistema {
                            sis_id = Convert.ToInt32(cookie.Values.AllKeys.First())
                        });
                        HttpContext.Current.Response.Redirect(entitySistema.sis_caminhoLogout, false);
                        HttpContext.Current.ApplicationInstance.CompleteRequest();
                    }
                    else
                    {
                        HttpCookie cookieBH = context.Request.Cookies["BH"];
                        if (cookieBH != null &&
                            !String.IsNullOrEmpty(IdentitySettingsConfig.IDSSettings.LogoutUrlAVA))
                        {
                            HttpContext.Current.Response.Redirect(IdentitySettingsConfig.IDSSettings.LogoutUrlAVA, false);
                            HttpContext.Current.ApplicationInstance.CompleteRequest();
                        }
                        else
                        {
                            RedirecionarParaLogoutIdentityServer(context);
                        }
                    }
                }
            }
            catch (ValidationException ex)
            {
                ApplicationWEB._GravaErro(ex);
                //ErrorMessage(ex.Message);
                RedirecionarParaLogoutIdentityServer(context);
            }
            catch (Exception ex)
            {
                ApplicationWEB._GravaErro(ex);
                //ErrorMessage("Não foi possível atender a solicitação.");
                RedirecionarParaLogoutIdentityServer(context);
            }
        }