private void RedirecionarLogin(Guid usu_id) { string caminhoRedirecionar = String.Concat(ApplicationWEB._DiretorioVirtual, "Sistema.aspx"); if (GetSistemaID_QueryString > 0) { __SessionWEB.SistemaID_QueryString = GetSistemaID_QueryString; } if (__SessionWEB.SistemaID_QueryString > 0) { List <SYS_Sistema> listaSistemaPermissao = new List <SYS_Sistema>(SYS_SistemaBO.GetSelectBy_usu_id(usu_id)); if (listaSistemaPermissao.Exists(p => p.sis_id == __SessionWEB.SistemaID_QueryString)) { SYS_Sistema sistema = new SYS_Sistema { sis_id = __SessionWEB.SistemaID_QueryString }; SYS_SistemaBO.GetEntity(sistema); if (!sistema.IsNew) { caminhoRedirecionar = sistema.sis_caminho; } } } Response.Redirect(caminhoRedirecionar, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); }
/// <summary> /// Retorna um XmlElement contendo informações do Saml /// </summary> /// <returns></returns> private XmlElement GetElementSAML(bool full) { // Cria elemento SAML XmlElement xmlElementSAML = xml.CreateElement("Saml"); xmlElementSAML.SetAttribute("type", "Identity Provider"); xmlElementSAML.SetAttribute("version", SAMLUtility.VERSION); // Cria elemento IDProvider string statusIDProvider = string.Empty; XmlElement xmlElementIDProvider = xml.CreateElement("IDProvider"); xmlElementSAML.AppendChild(xmlElementIDProvider); try { IDProvider config = IDProvider.GetConfig(); if (config != null) { xmlElementIDProvider.SetAttribute("id", config.id); statusIDProvider = StatusBO.Success; } else { statusIDProvider = "Não foi possível encontrar as configurações."; } } catch (Exception ex) { statusIDProvider = ex.Message; } xmlElementIDProvider.SetAttribute("status", statusIDProvider); if (full) { // Cria elemento Logged string statusLogged = string.Empty; XmlElement xmlElementLogged = xml.CreateElement("Logged"); xmlElementSAML.AppendChild(xmlElementLogged); try { HttpCookie cookie = Context.Request.Cookies["SistemasLogged"]; xmlElementLogged.SetAttribute("count", (cookie == null ? "0" : cookie.Values.AllKeys.Count(p => p != null).ToString())); if (cookie != null) { foreach (String str in cookie.Values.AllKeys.Where(p => p != null)) { XmlElement xmlElement = xml.CreateElement("Application"); xmlElementLogged.AppendChild(xmlElement); xmlElement.SetAttribute("name", cookie.Values[str]); } } statusLogged = StatusBO.Success; } catch (Exception ex) { statusLogged = ex.Message; } xmlElementLogged.SetAttribute("status", statusLogged); // Cria elemento Path XmlElement xmlElementPath = xml.CreateElement("Path"); xmlElementSAML.AppendChild(xmlElementPath); try { IList <Autenticador.Entities.SYS_Sistema> list = SYS_SistemaBO.GetSelectBy_usu_id(__SessionWEB.__UsuarioWEB.Usuario.usu_id); Autenticador.Entities.SYS_Sistema entityCoreSSO = list.Where(p => p.sis_id == ApplicationWEB.SistemaID).First(); list.Remove(entityCoreSSO); foreach (Autenticador.Entities.SYS_Sistema entitySistema in list) { string status = string.Empty; XmlElement xmlElement = xml.CreateElement("Application"); xmlElementPath.AppendChild(xmlElement); xmlElement.SetAttribute("name", entitySistema.sis_nome); xmlElement.SetAttribute("login", entitySistema.sis_caminho); xmlElement.SetAttribute("logout", entitySistema.sis_caminhoLogout); // Validação url de login if (string.IsNullOrEmpty(entitySistema.sis_caminho)) { status += "Url de login inválida."; } else if (entitySistema.sis_caminho.Contains(entityCoreSSO.sis_caminho)) { status += "A url de login contém um valor possivelmente inválido, que pode entrar em loop ao redirecionar."; } // Validação url de logout if (string.IsNullOrEmpty(entitySistema.sis_caminhoLogout)) { status += "Url de logout inválida."; } else if (entitySistema.sis_caminhoLogout.Contains(entityCoreSSO.sis_caminhoLogout)) { status += "A url de logout contém um valor possivelmente inválido, que pode entrar em loop ao redirecionar."; } if (string.IsNullOrEmpty(status)) { status = StatusBO.Success; } xmlElement.SetAttribute("status", status); } } catch (Exception ex) { xmlElementPath.SetAttribute("error", ex.Message); } } return(xmlElementSAML); }