コード例 #1
0
ファイル: Rules.cs プロジェクト: ydamas/falcon-orchestrator
 private void LdapQuery()
 {
     try
     {
         LdapUtil     util = new LdapUtil(config.LDAP_SERVER, config.LDAP_USERNAME, config.LDAP_PASSWORD);
         UserManager  mgr  = new UserManager(util, model.Data.UserName);
         UserMetaData user = mgr.GetMetaData();
         model.Data.AccountModel                    = new AccountModel();
         model.Data.AccountModel.City               = user.City;
         model.Data.AccountModel.Country            = user.Country;
         model.Data.AccountModel.Department         = user.Department;
         model.Data.AccountModel.EmailAddress       = user.EmailAddress;
         model.Data.AccountModel.FirstName          = user.FirstName;
         model.Data.AccountModel.JobTitle           = user.JobTitle;
         model.Data.AccountModel.LastLogon          = user.LastLogon;
         model.Data.AccountModel.LastName           = user.LastName;
         model.Data.AccountModel.Manager            = user.Manager;
         model.Data.AccountModel.PhoneNumber        = user.PhoneNumber;
         model.Data.AccountModel.StateProvince      = user.StateProvince;
         model.Data.AccountModel.StreetAddress      = user.StreetAddress;
         model.Data.AccountModel.OrganizationalUnit = user.OrganizationalUnit;
         model.Data.AccountModel.Groups             = user.Groups;
     }
     catch (System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException e)
     {
         log.Warn("Account " + model.Data.UserName + " not found", e);
     }
     catch (System.DirectoryServices.DirectoryServicesCOMException e)
     {
         log.Fatal("An error occured while performing a lookup against Active Directory", e);
         Environment.Exit(1);
     }
 }
コード例 #2
0
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(env.ContentRootPath)
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                          .AddEnvironmentVariables();

            Configuration = builder.Build();
            LdapUtil.Register(Configuration);
        }
コード例 #3
0
 private void CheckADObjectExists(TaxonomyViewModel model)
 {
     if (model.TypeId == 3 || model.TypeId == 4)
     {
         AppConfiguration config = new AppConfiguration(System.Configuration.ConfigurationManager.AppSettings["CryptoKey"]);
         LdapUtil         ldap   = new LdapUtil(config.LDAP_SERVER, config.LDAP_USERNAME, config.LDAP_PASSWORD);
         Boolean          exists = ldap.CheckIfDNExists(model.Value);
         if (!exists)
         {
             throw new NotSupportedException(model.Value + " does not exist in Active Directory database");
         }
     }
 }
コード例 #4
0
 public ActionResult Containment(string username, Boolean pwdReset, Boolean disableAccount)
 {
     try
     {
         AppConfiguration config = new AppConfiguration(System.Configuration.ConfigurationManager.AppSettings["CryptoKey"]);
         LdapUtil         util   = new LdapUtil(config.LDAP_SERVER, config.LDAP_USERNAME, config.LDAP_PASSWORD);
         UserManager      user   = new UserManager(util, username);
         if (pwdReset)
         {
             user.EnforcePasswordReset();
         }
         if (disableAccount)
         {
             user.DisableAccount(config.LDAP_DESCRIPTION);
         }
         Response.StatusCode = 200;
         return(new EmptyResult());
     }
     catch (Exception e)
     {
         Response.StatusCode = 500;
         return(Content(e.Message));
     }
 }
コード例 #5
0
        /// <summary>
        /// Realiza a sincroniza��o das senhas alteradas no Autenticador com o AD.
        /// </summary>
        /// <param name="userAD">Objeto de conex�o com o Active Directory (AD).</param>
        /// <param name="dominio">Dom�nio do Active Directory (AD).</param>
        /// <param name="organizationalUnitsPath">Caminho de Organizational Units onde os usu�rios s�o criados no Active Directory (AD).</param>
        /// <param name="log">Dados do usu�rio.</param>
        /// <returns></returns>
        public static bool SincronizaSenhaAlteradaAutenticador(LdapUsers userAD, string dominio, string organizationalUnitsPath, sLOG_UsuarioAD log, string descricao)
        {
            bool processou = false;

            if (!LdapUtil.Exists(dominio))
            {
                throw new ValidationException("Dom�nio n�o foi encontrado.");
            }

            if (!LdapUtil.ExistsOrganizationalUnitPath(dominio, organizationalUnitsPath))
            {
                throw new ValidationException("Caminho de Organizational Units n�o foi encontrado.");
            }

            switch (log.usuarioAD.usa_acao)
            {
            case (short)LOG_UsuarioAD.eAcao.IncluirUsuario:
            {
                if (userAD.UserExists(log.usuario.usu_login))
                {
                    throw new ArgumentException("Usu�rio j� existe.");
                }

                processou = userAD.CreateUser(organizationalUnitsPath, log.pessoa.pes_nome, log.usuario.usu_email, log.usuario.usu_login, log.dadosUsuario.senha, descricao);
                if (log.usuario.usu_situacao == (byte)SYS_UsuarioBO.eSituacao.Senha_Expirada)
                {
                    processou &= userAD.SetExpirePassword(log.usuario.usu_login, true);
                }
            }
            break;

            case (short)LOG_UsuarioAD.eAcao.AlterarSenha:
            {
                if (!userAD.UserExists(log.usuario.usu_login))
                {
                    throw new ArgumentException("Usu�rio n�o encontrado.");
                }


                processou  = userAD.SetExpirePassword(log.usuario.usu_login, false);
                processou &= userAD.SetPassword(log.usuario.usu_login, log.dadosUsuario.senha);

                if (log.usuario.usu_situacao == (byte)SYS_UsuarioBO.eSituacao.Senha_Expirada)
                {
                    processou &= userAD.SetExpirePassword(log.usuario.usu_login, true);
                }
            }
            break;

            case (short)LOG_UsuarioAD.eAcao.ExcluirUsuario:
            {
                if (!userAD.UserExists(log.usuario.usu_login))
                {
                    throw new ArgumentException("Usu�rio n�o encontrado.");
                }

                processou = userAD.DeleteUser(log.usuario.usu_login);
            }
            break;

            default:
                throw new ValidationException("Opera��o inv�lida.");
            }

            return(processou);
        }
コード例 #6
0
        /// <summary>
        /// Processa os hist�ricos de altera��o de senha e realiza a sincroniza��o entre o Autenticador e AD.
        /// </summary>
        /// <param name="ltLogUsuarioAD">Lista de hist�rico de altera��o de senha.</param>
        /// <returns></returns>
        public static bool ProcessaLogUsuarioAD(List <sLOG_UsuarioAD> ltLogUsuarioAD)
        {
            try
            {
                string dominio = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppDominioAD");
                string organizationalUnitPath = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppOrganizationalUnitPath");
                string descricao = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppUserDescriptionAD");

                LdapUsers userAD = new LdapUsers(LdapUtil.CheckPath(dominio));

                foreach (sLOG_UsuarioAD log in ltLogUsuarioAD)
                {
                    try
                    {
                        bool processou = false;

                        if (log.usuarioAD.usa_origemAcao == (short)LOG_UsuarioAD.eOrigem.Autenticador)
                        {
                            processou = SincronizaSenhaAlteradaAutenticador(userAD, dominio, organizationalUnitPath, log, descricao);
                        }
                        else
                        {
                            processou = SincronizaSenhaAlteradaAD(log);
                        }

                        if (processou)
                        {
                            LOG_UsuarioAD usuarioAD = log.usuarioAD;
                            usuarioAD.usa_status         = (short)LOG_UsuarioAD.eStatus.Processado;
                            usuarioAD.usa_dataProcessado = DateTime.Now;
                            LOG_UsuarioADBO.Save(usuarioAD);
                        }
                        else
                        {
                            LOG_UsuarioAD usuarioAD = log.usuarioAD;
                            usuarioAD.usa_status         = (short)LOG_UsuarioAD.eStatus.Falha;
                            usuarioAD.usa_dataProcessado = DateTime.Now;
                            LOG_UsuarioADBO.Save(usuarioAD);

                            LOG_UsuarioADErro erro = new LOG_UsuarioADErro
                            {
                                usa_id = log.usuarioAD.usa_id
                                ,
                                use_descricaoErro = "O log de altera��o de senha n�o foi processado."
                            };
                            LOG_UsuarioADErroBO.Save(erro);
                        }
                    }
                    catch (Exception ex)
                    {
                        LOG_UsuarioAD usuarioAD = log.usuarioAD;
                        usuarioAD.usa_status         = (byte)LOG_UsuarioAD.eStatus.Falha;
                        usuarioAD.usa_dataProcessado = DateTime.Now;
                        LOG_UsuarioADBO.Save(usuarioAD);

                        LOG_UsuarioADErro erro = new LOG_UsuarioADErro
                        {
                            usa_id = log.usuarioAD.usa_id
                            ,
                            use_descricaoErro = ex.Message
                        };
                        LOG_UsuarioADErroBO.Save(erro);

                        UtilBO.GravarErro(ex);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                ltLogUsuarioAD.ForEach(p =>
                {
                    LOG_UsuarioAD entityUsuarioAD = p.usuarioAD;
                    entityUsuarioAD.usa_status    = (short)LOG_UsuarioAD.eStatus.Pendente;
                    LOG_UsuarioADBO.Save(entityUsuarioAD);
                });

                throw ex;
            }
        }