Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Multiples proveedores de usuario de login, LDAP y entidad

8 de noviembre de 2017

Hola.

Estoy empezando con una aplicacion con Symfony 3.3.10 que necesita loguearse de tres distintos proveedores. Necesito que el login se ha desde una base de datos y que vaya también contra el LDAP. Con la base de datos ya esta funcionando pero con la LDAP no.

security.yml

security:
    providers:
        chain_provider:
          chain: 
            providers: [user_db, crm_db, my_ldap]
        user_db:
            entity: 
              class:  AppBundle:User
              property: username
        crm_db:
            entity: 
              class:  AppBundle:Crm
              property: username
        my_ldap:
            ldap:
              service: Symfony\Component\Ldap\Ldap
              base_dn: dc=mondragon,dc=edu
              search_dn: cn=bind-user,ou=Kudeaketa,dc=example,dc=edu
              search_password: password
              default_roles: ROLE_USER
              uid_key: sAMAccountName
              #filter: "(sAMAccountName=$username)"

    firewalls:
        default:
            anonymous: ~
            provider: chain_provider
            form_login:
                login_path: /login
                check_path: /login_check
                #dn_string: '{username}'
                # field names for the username and password fields:
                username_parameter: _username
                password_parameter: _password
 
            form_login_ldap:
                login_path: /login
                check_path: /login_check
                service: Symfony\Component\Ldap\Ldap
                dn_string: 'sAMAccountName={username},dc=example,dc=edu'
                username_parameter: _username
                password_parameter: _password
 
            logout:
                path:   /logout
                target: /login
 
    encoders:
        AppBundle\Entity\Crm: plaintext
        AppBundle\Entity\User: plaintext
        #Symfony\Component\Security\Core\User\User: bcrypt

    access_control:
          - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
          - { path: ^/$, roles: IS_AUTHENTICATED_FULLY }
 
    role_hierarchy:
        ROLE_ADMIN:   [ROLE_USER]

Me da el ERROR, No encoder has been configured for account "Symfony\Component\Security\Core\User\User". Con lo que entiendo que tengo que añadirle la encoder pero al añadirle yo no se como esta encriptada las contraseñas de las LDAP y no melas compara bien.

services.yml

Symfony\Component\Ldap\Ldap:
            arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
    Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
            arguments:
                -   host: XXX.XX.XX.XX
                    #port: 
                    encryption: none
                    options:
                        protocol_version: 3
                        referrals: false