Получить имя объекта, разрешив его GUID через LDAP в ActiveDirecotry в Java - PullRequest
0 голосов
/ 10 ноября 2019

В журнале, сгенерированном nxlog, есть GUID устройства принтера с этим форматом:

119d0d80-699d-4e81-8e4e-5477e22ac1b3

Я хотел бы получить имя устройства, разрешив его GUID через LDAP. Однако ближайшее поле, с которым я столкнулся, - это objectGUID в ответе ldapsearch , который, по-видимому, является Base64 закодированным значением:

objectGUID:: fuAW6fefLke30d46TDTUWA==


Areэти два вышеуказанных GUID относительно никак? (Другими словами, я должен искать первый GUID среди objectGUID полей в AD после преобразования формата?

Как я могу получить имя объекта с помощью LDAP запроса в Java?

Невозможно было добиться этого с помощью метода getAttribute() и кода ниже:

        //Create the initial directory context
        LdapContext ctx = new InitialLdapContext(env,null);

        //Bind directly using the string form of the GUID
        String strGUID = "<GUID="+guid+">";

        //Specify the attributes to return
        String returnedAtts[]={"distinguishedName"};

        Attributes attr = ctx.getAttributes(strGUID,returnedAtts);

        //print out the retrieved attributes
        if(attr!=null)
            distinguishedName = attr.get("distinguishedName").get().toString();
        System.out.println("distinguishedName: " + distinguishedName);

        ctx.close();

, и я получил NameNotFoundException:

javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0310021B, problem 2001 (NO_OBJECT), data 0, best match of:
    ''

Формат имени (<GUID="+guid+">) правильно? (Я не вижу никаких признаков использования этого формата в ответном ответе ldapsearch)

1 Ответ

1 голос
/ 12 ноября 2019

ObjectGuid , используемый в Microsoft Active Directory, немного странно по сравнению с обязательными GUID.

Вам приходится сталкиваться с несколькими аспектами, включая Порядковый номер

Я нашел ссылку на некоторый Java-код .

...