1

我将 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 

我已经完成了安装文档中的所有内容

配置.yml

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 }

安全.yml

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: ~

我不知道如何使这项工作。

4

1 回答 1

1

在尝试使我们的内部辅助工具与公司域身份验证一起使用时,我们面临着同样的问题。

我们必须执行以下操作才能使其正常工作:

尽管 fr3d 文档说这仅适用于 OpenLDAP,但我们尝试在驱动程序设置下以以下形式设置特殊的身份验证帐户用户名(而不是 AuthAccount@dns.example.com,是的,我们的公司 LDAP 是 Microsoft AD):

配置.yml

    fr3d_ldap:
        司机:
            主机:dns.example.com
            端口:389
            用户名:CN=AuthAccount,OU=Pseudo Accounts,OU=Managed Objects,DC=example,DC=com
            密码:yourPassw0rd
            bindRequiresDn: 真

请注意,根本没有baseDn(已经在用户名中设置,否则进一步过滤将无法正常工作)。

之后问题就消失了,唯一剩下的就是正确设置用户设置:

        用户:
            baseDn:OU=托管对象,DC=example,DC=com
            过滤器:(&(sAMAccountName=%s))

还有一些与属性等有关的工作,但是通过上述设置,LDAP 身份验证本身开始正常工作,我们能够使用域凭据登录到我们的工具。

于 2017-01-09T08:12:59.860 回答