我正在使用FR3DLdapBundle和FOSUserBundle。
Symfony 2.5.6
FOSUserBundle~2.0@dev
FR3DLdapBundle~2.0@dev
$ldapManager = $this->get('fr3d_ldap.ldap_manager');
print_r($ldapManager->findUserByUsername('nhoang@ldap.example.com'));
但是我发现了一个错误。
Binding requires username in DN form
CRITICAL - Uncaught PHP Exception FR3D\LdapBundle\Driver\LdapDriverException: "An error occur with the search operation." at myproj\vendor\fr3d\ldap-bundle\FR3D\LdapBundle\Driver\ZendLdapDriver.php line 55
我已经完成了安装文档中的所有内容
fr3d_ldap:
driver:
host: ldap.example.com
port: 389
username: ldapadmin@ldap.example.com
password: password
bindRequiresDn: true
baseDn: dc=ldap,dc=example,dc=com
accountFilterFormat: (&(uid=%s)) # Optional. sprintf format %s will be the username
user:
baseDn: dc=ldap,dc=example,dc=com
filter: (&(ObjectClass=Person))
attributes:
- { ldap_attr: uid, user_method: setUsername }
providers:
chain_provider:
chain:
providers: [fos_userbundle, fr3d_ldapbundle]
fr3d_ldapbundle:
id: fr3d_ldap.security.user.provider
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
admin:
pattern: /admin/(.*)
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: _admin_login
check_path: _admin_login_check
default_target_path: /admin
logout:
path: _admin_logout
target: _admin_login
anonymous: true
main:
pattern: ^/
fr3d_ldap: ~
form_login:
provider: chain_provider
csrf_provider: form.csrf_provider
default_target_path: /profile
logout: true
anonymous: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
anonymous: ~
我不知道如何做这项工作。
答案 0 :(得分:1)
我们在尝试使用内部辅助工具处理公司域身份验证时遇到了同样的问题。
我们必须执行以下操作才能使其发挥作用:
尽管fr3d文档说这仅适用于OpenLDAP,但我们尝试在驱动程序设置下使用以下格式设置特殊身份验证帐户用户名(而不是AuthAccount@dns.example.com,是的,我们的公司LDAP是Microsoft AD):
fr3d_ldap: driver: host: dns.example.com port: 389 username: CN=AuthAccount,OU=Pseudo Accounts,OU=Managed Objects,DC=example,DC=com password: yourPassw0rd bindRequiresDn: true
请注意,根本没有 baseDn (已在用户名中设置,否则进一步过滤将无效)。
之后问题就消失了,唯一剩下的就是正确设置用户设置:
user: baseDn: OU=Managed Objects,DC=example,DC=com filter: (&(sAMAccountName=%s))
还有一些与属性等有关的工作,但是通过上述设置,LDAP auth本身开始工作正常,我们可以使用域凭据登录我们的工具。