Example #1
0
        /// <summary>
        /// Connexion à l'active Directory
        /// pour vérifier le compte utilisateur
        /// et reourner la liste des groupes auxquels
        /// cet dernier
        /// </summary>
        private void ConnectToLDAP()
        {
            LdapAuthentication adAuth = null;

            try
            {
                // Connection au LDAP pour vérifier le compte user
                adAuth = new LdapAuthentication(GetMessages());
                if (!adAuth.UserExists(GetLogin(), GetPassword()))
                {
                    // Le compte est introuvable
                    // ou le login/mot de passe est erroné
                    if (GetPassword() == null)
                    {
                        throw new Exception(GetMessages().GetString("LDAPUnknownUser", GetLogin(), true));
                    }
                    else
                    {
                        throw new Exception(GetMessages().GetString("LDAPUnknownUserOrWrongPassword", GetLogin(), true));
                    }
                }
                // On a trouvé l'utilisation sur le serveur LDAP
                // On récupère son nom
                this.DisplayName = adAuth.GetDisplayName();

                if (GetRequiredRigth() != UserInfo.RightNA)
                {
                    // We need to check against a specific AD group for this application
                    // First, let's extract all group
                    Hashtable LDAPGroups = adAuth.GetGroups();

                    this.DisplayACardInLookupTool    = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanDisplayACardInLookupTool"]);
                    this.ProcessALookupInLookupTool  = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanProcessALookupInLookupTool"]);
                    this.ProcessAResverseLookup      = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanProcessAResverseLookup"]);
                    this.CreateATransactionalCard    = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanCreateATransactionalCard"]);
                    this.CreateAProfilCard           = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanCreateAProfilCard"]);
                    this.UpdateTokenAfterKeyRotation = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanUpdateTokenAfterKeyRotation"]);
                    this.IsARobot      = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["IsARobot"]);
                    this.EncryptCard   = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanEncryptCard"]);
                    this.EncryptFOCard = LDAPGroups.ContainsValue(ConfigurationManager.AppSettings["CanEncryptFOCard"]);
                }
            }
            catch (Exception e)
            {
                // Erreur lors de la connexion au serveur LDAP
                throw new Exception(GetMessages().GetString("LDAPConnectionError", GetLogin(), e.Message, true));
            }
            finally
            {
                // On va fermer proprement la connexion
                // au serveur LDAP
                if (adAuth != null)
                {
                    try
                    {
                        adAuth.Disconnect();
                    }
                    catch (Exception) { } // On ignore cette erreur
                }
            }
        }