За последние 24 часа нас посетили 22770 программистов и 1263 робота. Сейчас ищут 755 программистов ...

LDAP, AD и сертификаты. А также ошибка #-1

Тема в разделе "Прочее", создана пользователем laska.g1995, 26 дек 2020.

Метки:
  1. laska.g1995

    laska.g1995 Новичок

    С нами с:
    26 дек 2020
    Сообщения:
    1
    Симпатии:
    0
    Привет! Есть кто, кто работал с AD и ldap?

    Суть задачи: нужно с AD, используя ldap, тянуть данные о пользователе.
    Проблема: 99% решений в сети сводятся к TLS_REQCERT=never, но в моем случае, использованные сертификата обязательно. Сертификат есть. Но оно не работает.

    А теперь еще детальнее:
    В общем в компании решили, все права пользователей хранить в AD. Он и до того использовался, но теперь это коснулось нашего проекта. От админов получила урезанный доступ к серверу а также сертификат (*.pem).
    Дальше я попробовала запустить тестовый код, обычный с примеров в сети. И как не старайся, оно нормально не работает. Самое смешное то, что все это иногда таки работает. Трижды может вернуть ошибку #-1 (при том, что в документации номера ошибок начинаются с 0!), потом несколько раз подтянуть данные о пользователи, и так по кругу.

    Пример кода:
    PHP:
    1. putenv("LDAPCACERT=" . '/storage/www/.secret/ldap/ca.pem');
    2. //putenv("LDAPCACERT=" . '/storage/www/.secret/ldap/ca-ssl.pem');
    3.  
    4. $Email          = 'user.mail@mail.com';
    5. $LDAPConnection = ldap_connect("ldaps://ldap.software.com", 636);
    6. if (ldap_bind($LDAPConnection, 'ad-google-user@g5mail.com', 'pass_123456789'))
    7. {
    8.   $RK = ldap_search($LDAPConnection, 'OU=SOFT Domain,dc=software,dc=com', "(mail={$Email})");
    9.   $Results = ldap_get_entries($LDAPConnection, $RK);
    10.   print_r($Results);
    11.   echo "\n";
    12.   ldap_close($LDAPConnection);
    13. }
    14. else
    15.   echo "Error #" . ldap_errno($LDAPConnection) . ": " . ldap_error($LDAPConnection);
    16.  
    17. die();