Ci sono due modi per autenticare un utente che utilizza Django Auth LDAPDjango Auth LDAP - Bind diretta usando sAMAccountName
- Ricerca/Bind e
- diretto Bind.
Il primo implica la connessione al server LDAP in modo anonimo o con un account fisso e la ricerca del nome distinto dell'utente che esegue l'autenticazione. Quindi possiamo tentare di legare di nuovo con la password dell'utente.
Il secondo metodo consiste nel derivare il DN dell'utente dal suo nome utente e tentare di eseguire il binding direttamente dall'utente.
Desidero essere in grado di eseguire un binding diretto utilizzando l'id utente (sAMAccountName) e la password dell'utente che sta tentando di accedere all'applicazione. Per favore fatemi sapere se c'è un modo per raggiungere questo obiettivo? Al momento, non riesco a farlo funzionare a causa del problema spiegato di seguito.
Nel mio caso, il DN di utenti in LDAP è del seguente formato
**'CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'**
Questo si traduce in pratica a 'CN = Nome Cognome, OU = Utenti, UO = Centrale, OU = US, DC = cliente, DC = corp'
questo sono io impedire l'utilizzo diretto Bind come sAMAccountName dell'utente è sjones e questo è il parametro che corrisponde al nome utente (% utente) e non posso capire un modo per inquadrare una corretta AUTH_LDAP_USER_DN_TEMPLAT E per ricavare il DN dell'utente utilizzando.
A causa del problema di cui sopra spiegato, io sto usando Ricerca/Bind per ora, ma questo mi richiede di avere una credenziale utente fisso da specificare in auth_ldap_bind_dn e AUTH_LDAP_BIND_PASSWORD.
Ecco il mio attuale settings.py configurazione
AUTH_LDAP_SERVER_URI = "ldap://10.5.120.161:389"
AUTH_LDAP_BIND_DN='CN=Steven Jones,OU=Users,OU=Central,OU=US,DC=client,DC=corp'
AUTH_LDAP_BIND_PASSWORD='fga.1234'
#AUTH_LDAP_USER_DN_TEMPLATE = 'CN=%(user)s,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp'
AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
LDAPSearch("OU=Users, OU=Central,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"),
LDAPSearch("OU=Users,OU=Regional,OU=Locales,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)"),
)
AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn","email":"mail"}
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("CN=GG_BusinessApp_US,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp",ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)")
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
AUTH_LDAP_REQUIRE_GROUP = 'CN=GG_BusinessApp_US,OU=Appl Groups,OU=Central,OU=US,DC=client,DC=corp'
In attesa di qualche indicazione dalle persone meravigliose qui.
Grazie @amethystdragon Sembra che questo risolva il mio problema. Darò una prova a breve. – Guddu