首页 > 解决方案 > Symfony 5 LDAP JumpCloud 身份验证

问题描述

我只是想使用 JumpCloud 服务配置 LDAP 身份验证。JumpCloud 是具有 Web 管理功能的公共 LDAP 服务器。对于连接到 LDAP,我使用内置模块并遵循本教程:http ://symfony.com/doc/current/security/ldap.html

系统似乎将成功连接到 LDAP,但无法验证用户身份。

输出头: 输出头

这是我的设置:

配置/服务.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

配置/包/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

标签: symfonyauthenticationldapcloud

解决方案


全面披露,我在 JumpCloud 工作,在过去几年提供支持,现在以技术编辑的身份工作。对您的配置进行一些更改可能会有所帮助:

1) 在“providers > my_ldap > ldap:”下,没有“search_dn”,它需要是 JumpCloud 中创建的服务 LDAP Bind DN,并且似乎已在“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”用于构造被认证用户的FUll LDAP Bind DN。根据文档中的示例,这需要使用正确的值替换语法进行设置,如下所述。

'uid={用户名},ou=users,o=,dc=jumpcloud,dc=com'

希望这会有所帮助——如果没有,我肯定会建议通过 support@jumpcloud.com 打开一个案例。

布兰登


推荐阅读