symfony - 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
解决方案
全面披露,我在 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 打开一个案例。
布兰登
推荐阅读
- wordpress - 在我们用于我的 Wordpress 网站的第三方应用程序中出现“未授权”错误
- javascript - 机会错误是否会影响灯塔分数?
- linux - Yocko - 分区的大小
- java - Trim() 函数与 Spring JPA 类似的查询方法
- sql - 在 PostgreSQL 13(通过客户端会话)上更改“wal_level”没有得到尊重
- react-native - 如何将 svg 图像放在屏幕底部的所有其他组件之上?
- java - 扫描仪对象将不使用文件名。构造函数文件(文件)未定义
- sql - (SQL Oracle) 如何为酒店预订系统连接 3 个表?
- jenkins - Jenkins - 如何为 URL 触发器插件启用调试日志
- flutter - 如何在“data._value_here_.text.title”中使用值