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();
    }
Example #2
0
        /// <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);
        }