private string AuthenticateUser(string username, string password, ref SearchResultEntry results) { string errorMessage = string.Empty; CertificateErrorMessage = string.Empty; IsServerCertificateReceived = false; System.DirectoryServices.Protocols.LdapConnection ldapConnection = null; try { // Create the new LDAP connection LdapDirectoryIdentifier ldi = new LdapDirectoryIdentifier(Convert.ToString(CoreData.SnmpcToolkit.LdapServerIPAddress), 636); ldapConnection = new System.DirectoryServices.Protocols.LdapConnection(ldi); ldapConnection.AuthType = AuthType.Basic; ldapConnection.SessionOptions.SecureSocketLayer = true; ldapConnection.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallback); NetworkCredential nc = new NetworkCredential("CN=" + username + "," + CoreData.SnmpcToolkit.LdapDistinguishedName, password); X509Certificate clientCertificate = CertificateHelper.FetchWindowsClientCertificate(); if (clientCertificate != null) { ldapConnection.ClientCertificates.Add(clientCertificate); } ldapConnection.Timeout = new TimeSpan(0, 0, 20); ldapConnection.Bind(nc); // Searching for role associated with the logged in user. SearchRequest request = new SearchRequest(CoreData.SnmpcToolkit.LdapDistinguishedName, "(sAMAccountName=" + username + ")", System.DirectoryServices.Protocols.SearchScope.Subtree); SearchResponse response = (SearchResponse)ldapConnection.SendRequest(request); if (response.Entries.Count == 1) { results = response.Entries[0]; } } catch (Exception ex) { errorMessage = ex.Message; } return errorMessage; }