FOSUserBundle et FR3DLdapBundle.
Bonjour,
Je m'arrache les cheveux à cause de l'authentification LDAP sur Symfony2.
Voilà ma configuration :
#config.yml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
# FOSuser : Gestion d'utilisateur
fos_user:
db_driver: orm
firewall_name: main
user_class: Exp\CommunBundle\Entity\Utilisateur
fr3d_ldap:
driver:
host: 192.168.1.1
port: 389
username: moi@societe.fr
password: pass
bindRequiresDn: true
baseDn: OU=SBSUsers,OU=Users,OU=MyBusiness,DC=societe,DC=fr
# useSsl: false
user:
baseDn: OU=SBSUsers,OU=Users,OU=MyBusiness,DC=societe,DC=fr
filter: (&(ObjectClass=Person))
attributes:
- { ldap_attr: samaccountname, user_method: setUsername } # champ login
- { ldap_attr: sn, user_method: setName }
- { ldap_attr: preferredlanguage, user_method: setLanguage }
- { ldap_attr: mail, user_method: setEmail } # setter dans BaseUser |
#security.yml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
security:
encoders:
Exp\CommunBundle\Entity\Utilisateur: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN]
providers:
chain_provider:
chain:
providers: [fos_userbundle, fr3d_ldapbundle]
fr3d_ldapbundle:
id: fr3d_ldap.security.user.provider
fos_userbundle:
id: fos_user.user_manager
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
fr3d_ldap: ~
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
always_use_default_target_path: true
default_target_path: /profile
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } |
Entity\utilisateur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
?php
namespace Exp\CommunBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use FR3D\LdapBundle\Model\LdapUserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* Utilisateur
*
* @ORM\Table(name="utilisateur")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
*/
class Utilisateur extends BaseUser implements LdapUserInterface
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Ldap Object Distinguished Name
* @var string $dn
*/
private $dn;
/**
* @var string
*
* @ORM\Column(name="nomComplet", type="string", length=100, nullable=true)
*/
private $nomComplet;
/**
* @var \DateTime
*
* @ORM\Column(name="dateCreate", type="datetime", nullable=true)
*/
private $createAt;
/**
* @var \DateTime
*
* @ORM\Column(name="dateUpdate", type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @var \DateTime
*
* @ORM\Column(name="dateDelete", type="datetime", nullable=true)
*/
private $deletedAt;
public function __construct()
{
parent::__construct();
if (empty($this->roles)) {
$this->roles[] = 'ROLE_USER';
}
} |
L'authentification avec les utilisateurs enregistré via fos:user:create fonctione
Par contre, j'ai systématiquement le message "Nom d'utilisateur ou mot de passe incorrect" à chaque tentative de connexion sur l'annuaire LDAP.
Est ce que vous voyez une erreur dans ma conf ?
Merci d'avance et bonne soirée,
Gilles