Symfony 5 LDAP-аутентификация JumpCloud - PullRequest
0 голосов
/ 01 апреля 2020

Я просто пытаюсь настроить аутентификацию LDAP с помощью сервиса JumpCloud. JumpCloud является публичным c сервером LDAP с веб-администрированием. Для подключения к LDAP я использую встроенный модуль и следую этому руководству: http://symfony.com/doc/current/security/ldap.html

Кажется, что система успешно подключится к LDAP, но не сможет аутентифицировать пользователей.

Выходной заголовок: Выходной заголовок

Вот мои настройки:

config / services.yaml

Symfony\Component\Ldap\Ldap:
    arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']

Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
    arguments:
        -   host: ldap.jumpcloud.com
            port: 636
            encryption: ssl
            options:
                protocol_version: 3
                referrals: false

config / packages / security.yaml

providers:
     my_ldap:
        ldap:
            service: Symfony\Component\Ldap\Ldap
            base_dn: ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com
            default_roles: ROLE_USER
            uid_key: uid
            extra_fields: ['mail']
            filter: ({uid_key}={username})
firewalls:
    main:
        anonymous: false
        http_basic_ldap:
            service: Symfony\Component\Ldap\Ldap
            dn_string: 'uid=LDAP_ADMIN_USERNAME,ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com'
            search_password: 'LDAP_ADMIN_PASS'

Проверка соединения вручную:

$dn = "uid=LDAP_ADMIN_USERNAME,ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com";
$password = "LDAP_ADMIN_PASS";

$ldap = Ldap::create('ext_ldap', ['connection_string' => 'ldaps://ldap.jumpcloud.com:636']);

$ldap->bind($dn, $password);

$query = $ldap->query('ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com', '(objectClass=inetOrgPerson)');
$results = $query->execute();

Этот код вернул верный вывод:

array (size=3)
0 => object(Symfony\Component\Ldap\Entry)[5504]
       private 'dn' => string 'uid=janakdom,ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com' (length=68)
       private 'attributes' => ..
1 => object(Symfony\Component\Ldap\Entry)[5093]
       private 'dn' => string 'uid=ldapservice,ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com' (length=71)
       private 'attributes' => ...
2 => object(Symfony\Component\Ldap\Entry)[4926]
       private 'dn' => string 'uid=test,ou=Users,o=MY_ORG_ID,dc=jumpcloud,dc=com' (length=64)
       private 'attributes' => ...

Совершенно не знаю, где может быть проблема. Я перепробовал все, что со мной произошло. Я также использую официальную документацию JumpCloud

Я бы попросил вас о помощи.

Большое спасибо DJ

1 Ответ

0 голосов
/ 03 апреля 2020

Полное раскрытие, я работаю в JumpCloud, поддерживаю последние пару лет и работаю техническим редактором. Несколько изменений в вашей конфигурации могут помочь:

1) В разделе «поставщики> my_ldap> ldap:» нет «search_dn», который должен быть службой LDAP Bind DN, созданной в JumpCloud, и появляется быть настроенным в «security> firewalls> main> http_basic_ldap:» на приведенном выше снимке экрана как «uid = LDAP_ADMIN_USERNAME, ou = users, o =, dc = jumpcloud, dc = com '.

2) «security> firewalls> main> http_basic_ldap:», «dn_string» используется для создания полного DN привязки LDAP аутентифицируемого пользователя. В соответствии с примером в документации это должно быть установлено с правильным синтаксисом для подстановки значений, как отмечено ниже.

'uid = {username}, ou = users, o =, dc = jumpcloud, dc = com'

Надеюсь, это поможет - если нет, я бы определенно предложил открыть дело с support@jumpcloud.com.

Брэндон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...