Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Login IMAG BorisMorel/LdapBundle

Estas en el tema de Login IMAG BorisMorel/LdapBundle en el foro de Symfony en Foros del Web. Buenas a todos, soy nuevo por aquí y en el mundillo de Symfony, llevo aproximadamente un mes trasteando con él a ratos y me parece ...
  #1 (permalink)  
Antiguo 22/06/2015, 04:03
Avatar de Jose_GZ  
Fecha de Ingreso: abril-2015
Mensajes: 5
Antigüedad: 9 años
Puntos: 0
Login IMAG BorisMorel/LdapBundle

Buenas a todos, soy nuevo por aquí y en el mundillo de Symfony, llevo aproximadamente un mes trasteando con él a ratos y me parece un muy buen y potente framework. Hasta ahora no me ha dado problemas pero llegado al punto del login estoy un poco atascado, os comento:

Recientemente estoy desarrollando para mi empresa una intranet utilizando Symfony 2.2, en la cual tenemos un AD y pretendo utilizar el login contra éste (como ya existe en la intranet actual) para tener así todo unificado (sesión del SO, mail, intranet..). Actualmente me encuentro en el inicio de su desarrollo y esta corre bajo un XAMPP en local, utilizo Git para versiones.

Como pone en el título del post, me he decantado por utilizar el bundle BorisMorel/LdapBundle: [URL="https://github.com/BorisMorel/LdapBundle"]https://github.com/BorisMorel/LdapBundle[/URL]

He realizado una pequeña prueba con la función nativa de PHP para autenticarse por LDAP con motivo de saber si funciona o si el problema se debe a una mala configuración del XAMPP.
Código:
$ldaprdn  = '****';
$ldappass = '****';

$handle = ldap_connect('***.***.local');
$bind = ldap_bind($handle, $ldaprdn, $ldappass) or die ('Bad cred');
            
echo $bind;
De este modo con los credenciales válidos hace login, por lo que descarto una mala configuración del server.

Los pasos que he seguido son los siguientes:
1. Instalo el bundle, añadiendo al composer:
Código:
"require": {
        "imag/ldap-bundle": "dev-master"
2. Agrego a app/config/routing.yml:
Código:
imag_ldap:
  resource: "@IMAGLdapBundle/Resources/config/routing.yml"
El cual he dejado como viene con la ruta de login:
Código:
login:
  pattern:              /login
  defaults:             { _controller: IMAGLdapBundle:Default:login }
  requirements:
    _method:            GET

login_check:
  pattern:              /login_check

logout:
  pattern:              /logout
3. A continuación dejo el fichero app/config/security.yml del siguiente modo:
Código:
security:
  firewalls:
    restricted_area:
      pattern:          ^/
      anonymous:        ~
      provider:         ldap
      imag_ldap:        ~
      # alternative configuration
      # imag_ldap:
      #   login_path:   /ninja/login
      logout:
        path:           /logout
        target:         /

  providers:
    ldap:
      id: imag_ldap.security.user.provider

  encoders:
    IMAG\LdapBundle\User\LdapUser: plaintext

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

imag_ldap:
  client:
    host: ****.****.local
    port: 389
#    version: 3
#    username: foo # Optional
#    password: bar # Optional
#    network_timeout: 10 # Optional
#    referrals_enabled: true # Optional
#    bind_username_before: true 
    skip_roles: false

  user:
    base_dn: ou=users,dc=****,dc=****
#    base_dn: ou=people,dc=host,dc=foo
#    filter: (&(foo=bar)(ObjectClass=Person)) #Optional
    name_attribute: uid
  role:
    base_dn: ou=group, dc=****, dc=****
#    filter: (ou=group) #Optional
    name_attribute: cn
    user_attribute: member
    user_id: username #[ dn or username ]

  user_class: IMAG\LdapBundle\User\LdapUser
He probado con muchas configuraciones, comentando el user_class, el user_id (+ con dn y username), diferentes versiones, skip_roles, etc. y nada.. Siempre me devuelve un error de credenciales.

Viendo el log me doy cuenta que el nombre del host y puerto están correctos ya que el error que me devuelve es el siguiente:
Código:
[2015-06-22 11:56:34] ldap_connection.ERROR: LDAP returned an error with code 1 : Operations error [] []
[2015-06-22 11:56:34] security.INFO: Authentication request failed: No autentifica [] []
Si pongo mal el host/puerto el error que me da es -1 en lugar de 1 y me dice que no encuentra el servidor.

Tras debuggear un poco lo que me ha dado la espina es que la pantalla de login que trae por defecto el bundle no me funciona del todo bien, como que no envía los credenciales que introduzco.

Agradezco de antemano todas las respuestas, llevo ya días dándole vueltas y no logro hacer que funcione.

Un saludo

Última edición por Jose_GZ; 22/06/2015 a las 04:09

Etiquetas: login
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:56.