2017-04-10 5 views
1

Ich versuche, Benutzer über LDAP (Fenster Active Directory) mit Symfony 3.2 den Service und die Sicherheit gemäß dem documentsSymfony 3.2 LDAP-Authentifizierung Problem

konfiguriert zu authentifizieren Aber ich erhalte die Fehlermeldung:

php.DEBUG: Warning: ldap_bind(): Unable to bind to server: Invalid credentials {"exception":"[object] (Symfony\Component\Debug\Exception\SilencedErrorContext: {\"severity\":2,\"file\":\"/var/www/html/workflow/vendor/symfony/symfony/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php\",\"line\":54})"} []

Viele Änderungen in den Parametern wie das Hinzufügen der Domäne {Benutzername} oder Kopieren der Zeichenfolge cn vollständig aus ldap Suche Softigra.

security.yml:

security: 
    providers: 
     my_ldap: 
      ldap: 
       service: ldap 
       base_dn: dc=example,dc=example 
       search_dn: "cn=user.name,DC=example,DC=example" 
       search_password: PassWord 
       default_roles: ROLE_ADMIN 
       uid_key: sAMAccountName 

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    main: 
     # an`enter code here`onymous: ~`enter code here` 
     http_basic_ldap: 
      service: ldap 
      dn_string: 'uid={username},dc=example,dc=example' 

access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, roles: ROLE_ADMIN } 

service.yml:

services: 
     ldap: 
      class: Symfony\Component\Ldap\LdapClient 
      arguments: 
       - ip # host 
       - portenter code here   # port 
       - 3   # version 
       - false  # SSL 
       - false  # TLS 

native php:

<?php 
$name = '[email protected]'; 
$pass = 'password'; 
$adServer = 'ldap://xxx.xxx.xxx.xxx:1234/'; 

$basedn="OU=Users,OU=Office,OU=xxx,DC=xxx,DC=xxx" 
$filter="(&(!(ou=NoSync))(department=*)(sn=*))"; 

$attributes=array("displayname", "mail", "company", "department", "physicaldeliveryofficename", "memberOf","givenname","sn","manager", 
        "mobile", "ipphone", "telephoneNumber", "facsimiletelephonenumber", "streetaddress", "l", "st","userprincipalname", 
        "postalcode", "c", "title", "samaccountname", "useraccountcontrol"); 

$cnx = ldap_connect($adServer) or die("Could not connect to LDAP server."); 
ldap_bind($cnx, $name, $pass); 

ldap_set_option($cnx, LDAP_OPT_SIZELIMIT,10000); 
ldap_set_option($cnx, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("Could not set ldap protocol");; 
ldap_set_option($cnx, LDAP_OPT_REFERRALS, 0) or die ("Could not set option referrals"); 
ldap_control_paged_result($cnx, 1000) or die ("Could not set option page limit"); 


$pageSize = 900; 
    $total=''; 
    $cookie = ''; 
    $arr_rec=[]; 
    $arr_rec_update=[]; 
    do { 
      $total = $pageSize + $total; 
      ldap_control_paged_result($cnx, $pageSize, true, $cookie); 

      $result = ldap_search($cnx,$basedn,$filter,$attributes); 
      $entries = ldap_get_entries($cnx, $result); 
?> 
+0

durch die Art, wie die Benutzer ich versuche, sie zu authentifizieren erfolgreich authentifiziert werden, wenn ich natives PHP-ldap-Skript verwende. –

+0

Können Sie uns das PHP-Skript zeigen, das Sie mit nativem PHP verwenden? Es kann helfen, das Konfigurationsproblem zu erkennen. – COil

+0

hallo danke für das Angebot der Hilfe –

Antwort

1

1., erklärt der LDAP-Dienst, wie Sie veraltet haben wird, für Symfony 3.2 sollten Sie es erklären Verwenden der LDAP-Klasse:

app/config/services.yml:

services: 
    ldap: 
     class: Symfony\Component\Ldap\Ldap 
     factory: [ 'Symfony\Component\Ldap\Ldap', 'create'] 
     arguments: 
      - ext_ldap 
      - host: ip 
      - port: 1234 
      - version: 3 
      - ssl: false 
      - tls: false 

In Bezug auf das PHP-Skript Sie zur Verfügung gestellt, sollte die Konfiguration wie folgt aussehen:

app/config/security.yml:

security: 
    providers: 
     my_ldap: 
      ldap: 
       service: ldap 
       base_dn: 'OU=Users,OU=Office,OU=xxx,DC=xxx,DC=xxx' 
       search_dn: '[email protected]' 
       search_password: 'password' 
       default_roles: 'ROLE_ADMIN' 

    firewalls: 
     main: 
      pattern: ^/ 
      anonymous: ~ 
      http_basic_ldap: 
       service: ldap 
       dn_string: '{username}' 
       #dn_string: 'domain\{username}' # or try including your domain prefix 
+1

vielen dank "COil", du hast mir den Tag gerettet –

+0

Gern geschehen, ich habe damit sehr viel Zeit gekämpft! Freut mich zu hören, dass es Ihnen geholfen hat, einige zu retten. ;) – COil

+0

in der Tat, wenn es um LDAP und Active Directory kommt, ist es ein bisschen Kampf. aber es ist klar, dass Sie ein Experte sind. Danke noch einmal. –

Verwandte Themen