Symfony 3.4 ldap身份验证问题

Symfony 3.4 ldap身份验证问题,symfony,ldap,symfony-3.4,Symfony,Ldap,Symfony 3.4,我正在尝试使用Symfony 3.4通过ldap(Windows active directory)对用户进行身份验证,我使用 请帮帮我 但我得到了一个错误: php.DEBUG:警告:ldap\u bind():无法绑定到服务器:无效凭据{“异常”:“[object](Symfony\Component\DEBUG\exception\silenederrorcontext:{\“severity\”:2,\“file\”:\“C:\\OSPanel\\domains\\warcsymfony

我正在尝试使用Symfony 3.4通过ldap(Windows active directory)对用户进行身份验证,我使用

请帮帮我

但我得到了一个错误:

php.DEBUG:警告:ldap\u bind():无法绑定到服务器:无效凭据{“异常”:“[object](Symfony\Component\DEBUG\exception\silenederrorcontext:{\“severity\”:2,\“file\”:\“C:\\OSPanel\\domains\\warcsymfony\\vendor\\Symfony\\Symfony\\src\\Symfony\\Component\\ldap\\Adapter\\ExtLdap\\Connection.php\”,“line\:53,\“trace\:[{\”文件\“:\“C:\\OSPanel\\domains\\warcsymfony\\vendor\\symfony\\symfony\\src\\symfony\\Component\\Ldap\\Ldap.php\”,\“line\”:38,\“function\”:“bind\”,\“class\”:\“symfony\\Component\\Ldap\\Adapter\\ExtLdap\\Connection\”,\“type\”:“->”,“count\”:1}[] [2018-03-14 10:27:03]security.INFO:身份验证请求失败。{“异常”:“[object](Symfony\Component\security\Core\exception\BadCredentialsException(代码:0):错误凭据。位于C:\OSPanel\domains\warcsymfony\vendor\symfony\symfony\src\symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php:71,symfony\Component\Security\Core\Exception\usernamennotfoundexception(代码:0):用户\“testusername\”找不到。位于C:\OSPanel\domains\warcsymfony\vendor\symfony\src\symfony\Component\Security\Core\User\LdapUserProvider.php:75,symfony\Component\Ldap\Exception\ConnectionException(代码:0):位于C:\OSPanel\domains\warcsymfony\vendor\symfony\vendor\symfony\symfony\src\symfony\Component\Ldap\Adapter\ExtLdap\Connection.php:54)“的凭据无效[] [2018-03-14 10:27:03]security.DEBUG:身份验证失败,重定向已触发。{“失败路径”:“登录”}[]

我试图改变参数,但没有成功

security.yml

security:

  providers:
    my_ldap:
        ldap:
            service: Symfony\Component\Ldap\Ldap
            base_dn: DC=example,DC=com
            search_dn: 'OU=all-users-accounts,DC=example,DC=com'
            search_password: password
            default_roles: ROLE_USER
            uid_key: sAMAccountName
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        anonymous: ~
        form_login_ldap:
            login_path: login
            check_path: login
            service: Symfony\Component\Ldap\Ldap
            dn_string: 'sAMAccountName={username},DC=example,DC=com'

service.yml
services:
    Symfony\Component\Ldap\Ldap:
        arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
    Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
        arguments:
            -   host: **.**.**.**
                port: 389
                encryption: 'none'
                options:
                    protocol_version: 3
                    referrals: false
安全控制器

 /**
 * @Route("/login", name="login")
 */
public function loginAction(Request $request, AuthenticationUtils $authenticationUtils){

    $error  = $authenticationUtils->getLastAuthenticationError();

    $username = $authenticationUtils->getLastUsername();

    return $this->render('security/login.html.twig', array(
        'last_username' => $username,
        'error' => $error
        ));
}

我想你的错误是搜索dn、搜索密码和查询字符串

my_ldap:
      ldap:
          service: Symfony\Component\Ldap\Ldap
          base_dn: "DC=example,DC=lv"
          #remmber this is ldap user with read only permisions
          #could be also just username search_dn:"bind"
          search_dn: "CN=bind bind,CN=Users,DC=example,DC=lv"
          search_password: "bind user password"
          uid_key: sAMAccountName
在表单示例中,我使用了查询字符串-它检查SamaccountName是否为SystemGroup的成员

form_login_ldap:
                provider:  my_ldap
                login_path: login_route
                check_path: login_check_form
                service: Symfony\Component\Ldap\Ldap
                dn_string: 'DC=example,DC=lv'
                query_string: '(&(sAMAccountName={username})(memberof=CN=SystemGroup,OU=Groups,OU=xxx_users,DC=example,DC=lv))'
只需使用ldap\u搜索测试您的查询\u字符串

我认为是您的搜索不正确,这一行:

search_dn: 'OU=all-users-accounts,DC=example,DC=com'
它需要是有权浏览Active Directory的管理员的dn。您可以使用来浏览Active Directory并解决此问题


我的文章对此进行了概述。请注意,您需要进行大量调试才能使其正常工作,但一旦您使其正常工作,就很容易了。

,DC=example,DC=example“搜索中的最后一个DC\u dn行应该是DC=com@Agris它不起作用,我做的一切都是对的。search\u dn line只是一个例子。我只需要ldap\u bind(),我不需要阅读用户信息,只需检查用户名和密码。我测试了没有symfony ldap组件的本机代码,它可以工作。symfony ldap组件需要一个可以阅读广告的管理员帐户。我无法打开你的链接:链接对我来说很好!只需在本文中直接单击它即可。