2016-07-28 118 views
0

我正在開發一個使用Symfony 3.1的應用程序,並且在Ldap身份驗證中遇到問題。下面的代碼:Symfony 3.1 Ldap身份驗證不起作用

services.yml

ldap: 
    class: 'Symfony\Component\Ldap\LdapClient' 
    arguments: 
     - server.test.br # host 
     - 389   # port 
     - 3   # version 
     - false  # SSL 
     - false  # TLS 

security.yml

security: 
providers: 
    chain_provider: 
     chain: 
      providers: [my_ldap] 
    my_ldap: 
     ldap: 
      service: ldap 
      base_dn: dc=test,dc=br 
      search_dn: cn=s00027,ou=Contas Administrativas de Sistemas,ou=Departamento de Tecnologia,dc=test,dc=br 
      search_password: pass 
      default_roles: ROLE_USER 
      uid_key: sAMAccountName 
      filter: '({uid_key}={username})' 

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

    admin: 
     anonymous: true 
     pattern: ^/ 
     form_login_ldap: 
      provider: chain_provider 
      service: ldap 
      dn_string: 'sAMAccountName={username}' 
      check_path: /login_check 
      login_path: /login 
     logout: 
      path: /logout 
      target:/

    default: 
     form_login_ldap: 
      provider: chain_provider 
      service: ldap 
      dn_string: "uid={username},DC=test,DC=br" 
      check_path: /login_check 
      login_path: /login 

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

SecurityController.php

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

    $authenticationUtils = $this->get('security.authentication_utils'); 

    $error = $authenticationUtils->getLastAuthenticationError(); 

    $lastUsername = $authenticationUtils->getLastUsername(); 

    return $this->render(
        'AppBundle:Security:login.html.twig', array(
       // last username entered by the user 
       'last_username' => $lastUsername, 
       'error' => $error, 
        ) 
    ); 
} 

我試圖盡我所能,並在日誌中沒有收到錯誤,只有關於LdapClient類的消息被棄用。

任何人都可以幫助我嗎?請。

+0

你是否檢查過'var/logs/dev.log'並試圖通過將'app_dev.php'附加到你的URL來使用DEV環境?調試網址可能會顯示更多信息。 –

+0

是的!我已經搜索了所有的symfony 3.1和ldap的Stackoverflow教程,但沒有成功。但是,謝謝你試圖幫助! – fabionvs

+0

這是AD還是OpenLDAP?從'sAMAccountName'的外觀使用我會猜測AD?如果將'dn_string:'sAMAccountName = {username}''改爲'dn_string:'{username}'' – ChadSikorra

回答

1

Hello Symfony 3開發者!

我解決了使用LdapToolsBundle

我認爲這個問題是不使用保護雖然是Symfony的3.1的問題。但是,使用LdapTools解決了我的問題,並且使用起來非常簡單。 謝謝!