2011-05-31 26 views
5

Estoy intentando autenticar a mi usuario a través del servidor corporativo de Active Directory. No puedo configurarlo correctamente, sé que LDAP funciona. Tengo un MediaWiki configurado y que funciona para autenticarse en el servidor de Active Directory .Autenticación LDAP de Django a través de Active Directory 2008

sistema:

Active Directory 2008 
    Django (1, 3, 0, 'final', 0) 
    django-auth-ldap 1.0.9 

Aquí está mi configuración en settings.py

from django_auth_ldap.config import LDAPSearch 
    import logging 

    # makes sure this works in Active Directory 
    ldap.set_option(ldap.OPT_REFERRALS, 0) 

    LDAP_SERVER_URI = 'ldap://ad.exemple.com' 
    AUTH_LDAP_BIND_DN = 'my_user' 
    AUTH_LDAP_BIND_PASSWORD = 'my_pass' 
    AUTH_LDAP_USER_SEARCH = LDAPSearch('dc=exemple,dc=com', ldap.SCOPE_SUBTREE, '(SAMAccountName=%(user)s)') 

    # Populate the Django user from the LDAP directory. 
    AUTH_LDAP_USER_ATTR_MAP = { 
      "first_name": "givenName", 
      "last_name": "sn", 
      "email": "mail" 
    } 

    # This is the default, but I like to be explicit. 
    AUTH_LDAP_ALWAYS_UPDATE_USER = True 

    AUTHENTICATION_BACKENDS = (
      'django_auth_ldap.backend.LDAPBackend', 
      'django.contrib.auth.backends.ModelBackend', 
    ) 

También probé el modo SSL mediante la adición de la nueva URI

LDAP_SERVER_URI = 'ldaps://ad.exemple.com:636' 

he utilizado la principal Usuario de grupo para buscar No necesito ningún grupo en particular que quiera autenticar.

El mensaje de error que devuelve el error:

WARNING 2011-05-31 16:50:19,429 backend 3968 140632428340992 Caught LDAPError while authenticating my_user: INVALID_CREDENTIALS({'info': '80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 525, v1772', 'desc': 'Invalid credentials'},) 
    [31/May/2011 16:50:19] "POST /admin/ HTTP/1.1" 200 9648 

Al ver este error y buscar el error LDAP DSID-0C0903AA encontré que yo debería tratar de establecer el nombre de usuario como esto

[email protected] 

No funcionó, devuelve el error:

ERROR 2011-05-31 16:55:38,947 config 6505 139868662060800 search_s('dc=ubilium,dc=loc', 2, '(SAMAccountName=my_user)') raised OPERATIONS_ERROR({'info': '000004DC: LdapErr: DSID-0C0906DD, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1772', 'desc': 'Operations error'},) 
    DEBUG 2011-05-31 16:55:38,947 backend 6505 139868662060800 Authentication failed for my_user 

¿Alguien tiene alguna pista ho ¿para que se conecte?

Respuesta

1

El primer error que está recibiendo es LDAP 49 con un subcódigo de 525 que significa Usuario no encontrado. Es decir. Su DN de enlace no es correcto.

su segundo intento, utilizando el formato userPrincipalName fallará, ya que su configuración dice: AUTH_LDAP_USER_SEARCH = LDAPSearch('dc=exemple,dc=com', ldap.SCOPE_SUBTREE, '(SAMAccountName=%(user)s)')

Por lo tanto usted está tratando de utilizar la aprobada en nombre del usuario en el filtro de: (SAMAccountName=%(user)s)

Me pregunto si ¿Es un extra s en cada extremo? Es decir. ¿Sería (SAMAccountName=%(user)) más correcto?

Lo que hace es decir, para la variable $ (usuario), encontrar el objeto en AD cuyo atributo sAMAccountName coincide con ese valor, y luego usar ese DN devuelto como el DN del enlace. Pero no obtiene un DN correcto y, por lo tanto, el error LDAP 49 - 525.

Cuestiones relacionadas