/// <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); } }
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); } }
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(); } }
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); } }