Problem z weryfikacją GUID w bazie LDAP (ActiveDirectory).

0

Witam

Jak w temacie walczę z weryfikacją posiadanego guid-u czy istnieje w LDAP. Guid wcześniej został pobrany z AD i zapisany w bazie SQL. Teraz na potrzeby mojej aplikacji chcę posiadany GUID weryfikować w AD czy istnieje. Napisałem fragment kodu który łączy się do AD i sprawdza wystąpienie podanego obiektu (adSearch.Filter = "(&(Name=Jan Kowalski 1))";). W tym wypadku szukam Jana Kowalskiego 1 w atrybucie Name i to działa poprawnie i wiele innych atrybutów np. userPrincipalName itp. Jak tylko sprawdzam GUID dostaję adResults was null. adSearch.Filter = "(&(objectGUID=5c9a13b7-288d-4fdf-856f-e9ccddb5631e))";

        public static string GetGuid(string objectGuid, string objectClass)
        {
            DirectoryEntry adRoot = new DirectoryEntry(ConfigurationManager.AppSettings["LDAPConnection"], ConfigurationManager.AppSettings["LDAPUser"], ConfigurationManager.AppSettings["LDAPPass"]);
            Object adsiObj = adRoot.NativeObject;

            DirectorySearcher adSearch = new DirectorySearcher(adRoot);
            //adSearch.Filter = "(&(objectGUID=" + queryGuid + "))";
            adSearch.Filter = "(&(objectGUID=5c9a13b7-288d-4fdf-856f-e9ccddb5631e))";
            //adSearch.Filter = "(&(Name=Jan Kowalski 1))";

            SearchResult adResults = adSearch.FindOne();
            var adObject = adResults.GetDirectoryEntry();

            return adObject.Guid;
        }

Dzięki za pomoc.

0

guidy to nie stringi, nie możesz sobie tak w ldapie porównywać
musiałbyś przekonewrtować tego stringowego guida na binarnego

System.Guid guid = new System.Guid(twoj_string)
var bytes = guid.ToByteArray();
string binaryGuid = string.empty;
foreach (var b in bytes)
binaryGuid+= string.Format(@"\{0}", b.ToString("X"))

i potem szukac po tym binaryGuid zamiast tym guid.ToString() którym aktualnie się posługujesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1