Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Qt Linux авторизация в AD



  • Добрый день, все время писал на Qt под Windows.
    Но возникла задача перенести код на Linux (Ubuntu).
    Установил фреймвок под Ubuntu , но пришлось отключить функцию авторизации в AD.
    На Windows использовал библиотеку Winldap32.dll и соответствующий код из примера.
    Для линукса рыл целый день и ничего удобоваримого не нашел.
    Набрел на следующую ссылку [url]https://stackoverflow.com/questions/6789605/ldap-queries-in-qt[/url], скачал исходники данного проекта,
    но как прикрутить его к коду не пойму. Буду благодарен за любую помощь.

    На Windows все работало просто, если рабочая станция авторизована в AD то библиотека пробовала авторизоваться в AD (указывад имя сервера или ip) и если все ок то пользователь заходил в проект Qt.

    Рабочая станция под Ubuntu авторизована в этом же AD с помощью kerberos, билет получен. Как из приложения Qt проверить что машина авторизована в AD ? Имя пользователя получаю из системы, или хотябы провести проверку logi/pass в AD ?



  • Ну вот вроде чтото заработало, может кому понадобиться, опишу алгоритм действий. Рабочая станция с Ubuntu 18.04, установлен Qt 5.12.1 GCC 64bit.

    Качаем с указанной этой ссылке http://www.openldap.org/software/download/ OpenLDAP-2.4.47.zip (или tar), распаковываем любую папку в домашнем каталоге.

    Устанавливаем в системе следующие пакеты libldap-2.4-2 , libldap-common , libldap2-dev

    $ sudo apt-get install libldap-2.4-2 libldap-common libldap2-dev

    Мне еще понадобилось установить пакет libsasl2-dev

    $sudo apt-get install libsasl2-dev

    Переходим в папку с распакованным OpenLDAP-2.4.47 и далее идем в contrib/ldapc++

    $cd ~/Download/openldap-2.4.47/contrib/ldapc++/

    Далее запускаем :

    $ ./configure
    $ sudo make
    $ sudo make install

    Библиотеки и заголовочные фалы установились в /usl/local/lib и /usl/local/include

    В файл проекта добавил INCLUDEPATH += /usl/local/include и LIBS += -L/usr/local/lib -lldapcpp

    примеры из папки /contrib/ldapc++/examples/ собрались и заработали, сейчас нужно покурить доки чтобы разобраться как с этим работать и попробовать авторизоваться в AD.

    Спасибо за помощь.



  • В stackoverflow же написали - libldap использовать. В Qt нет поддержки LDAP



  • @Konstantin-Tokarev said in Qt Linux авторизация в AD:

    В stackoverflow же написали - libldap использовать. В Qt нет поддержки LDAP

    Приношу извинения за неявно выраженную мысль. Просто сейчас активно допиливаю
    первоочередные задачи проекта и абсолютно нет времени разбираться с libldap ( как его прикрутить)
    , позже конечно разберусь, просто может у кого есть готовое решение, был бы признателен.



  • Если используется системная бибилотека и система сборки у вас qmake, то хватит LIBS += -lldap в проекте



  • @Konstantin-Tokarev said in Qt Linux авторизация в AD:

    Если используется системная бибилотека и система сборки у вас qmake, то хватит LIBS += -lldap в проекте.
    Конечно спасибо за совет, но если бы все было так просто. Насколько я понимаю ( извините не особенно не силен в Linux) для того чтобы использовать lldap нужно вначале установить OpenLDAP в свою систему, для получения доступа к его библиотекам и заголовочным файлам. Как развернуть OpenLDAP - информации море, но вазникает вопрос а зачем мне сервер LDAP, можно ли обойтись без него чтобы не ставить лишних пакетов. Каков вообще порядок действий. Я так понимаю примерно такой :

    1. Ставим на рабочей станции (где стоит Qt) пакет OpenLDAP (сервер обязательно ставить ?).
    2. После того как пакет установлен в системе в проекте достаточно прописать LIBS += -lldap и можно пользоваться функциями клиента OpenLDAP ?
    3. Для работы приложения на других машинах достаточно вместе с приложением положить в каталог библиотеки OpenLDAP (или статически собрать) и все будет работать без установки OpenLDAP на другой рабочей станции ?

    прошу не судить строго, если вопросы дилетантские....



  • Если собирать приложение со своей собственной libldap, тогда надо путь к библиотеке и заголовкам указывать, что-то вроде этого должно получиться

    INCLUDEPATH += openldap/include
    LIBS += -Lopenldap/lib -lldap
    

    Конкретные пути зависят от того, где по факту будут находится заголовки и библиотека относительно файла проекта



  • @Konstantin-Tokarev said in Qt Linux авторизация в AD:

    Если собирать приложение со своей собственной libldap, тогда надо путь к библиотеке и заголовкам указывать, что-то вроде этого должно получиться

    INCLUDEPATH += openldap/include
    LIBS += -Lopenldap/lib -lldap
    

    Конкретные пути зависят от того, где по факту будут находится заголовки и библиотека относительно файла проекта

    Да вот сегодня с утра примерно так и попробовал ( просто заголовочные файлы из Openldap-2.4.47 скопировал в свою тестовую папку проекта, но как говорится что то пошло не так и не получилось. Будет время конечно еще буду пробовать но жаль что нет готового алгоритма и решения как правильно действовать.



  • Ну вот вроде чтото заработало, может кому понадобиться, опишу алгоритм действий. Рабочая станция с Ubuntu 18.04, установлен Qt 5.12.1 GCC 64bit.

    Качаем с указанной этой ссылке http://www.openldap.org/software/download/ OpenLDAP-2.4.47.zip (или tar), распаковываем любую папку в домашнем каталоге.

    Устанавливаем в системе следующие пакеты libldap-2.4-2 , libldap-common , libldap2-dev

    $ sudo apt-get install libldap-2.4-2 libldap-common libldap2-dev

    Мне еще понадобилось установить пакет libsasl2-dev

    $sudo apt-get install libsasl2-dev

    Переходим в папку с распакованным OpenLDAP-2.4.47 и далее идем в contrib/ldapc++

    $cd ~/Download/openldap-2.4.47/contrib/ldapc++/

    Далее запускаем :

    $ ./configure
    $ sudo make
    $ sudo make install

    Библиотеки и заголовочные фалы установились в /usl/local/lib и /usl/local/include

    В файл проекта добавил INCLUDEPATH += /usl/local/include и LIBS += -L/usr/local/lib -lldapcpp

    примеры из папки /contrib/ldapc++/examples/ собрались и заработали, сейчас нужно покурить доки чтобы разобраться как с этим работать и попробовать авторизоваться в AD.

    Спасибо за помощь.


Log in to reply