/// <summary> /// Test AD connectivity /// </summary> /// <param name="user">User</param> private static void TestAD(UserInfo user) { LdapAuthentication adAuth = null; try { // Connection au LDAP pour vérifier le compte user adAuth = new LdapAuthentication(user.GetMessages()); // Check adAuth.Test(); // We are good here // Let's disconnect } finally { // On va fermer proprement la connexion // au serveur LDAP if (adAuth != null) { try { adAuth.Disconnect(); } catch (Exception) { } // On ignore cette erreur } } }
/// <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 } } }