2015-07-14 23 views
16

LDAP: il codice di errore 49-80.090.308: LdapErr: DSID-0C0903A9, commentare: errore di AcceptSecurityContext, 52e i dati, v1db1LDAP: il codice di errore 49-80.090.308: LdapErr: DSID-0C0903A9, commentare: errore di AcceptSecurityContext, 52e dati, v1db1

So che il codice "52e" è quando il nome utente è valido, ma la password non è valida. Sto usando lo stesso nome utente e la stessa password nel mio studio di apache, sono riuscito a stabilire la connessione con successo su LDAP.

Ecco il mio codice Java

String userName = "*******"; 
    String password = "********"; 
    String base ="DC=PSLTESTDOMAIN,DC=LOCAL"; 
    String dn = "cn=" + userName + "," + base; 
    Hashtable env = new Hashtable(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); 
    env.put(Context.PROVIDER_URL, "ldap://******"); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    env.put(Context.SECURITY_PRINCIPAL, dn); 
    env.put(Context.SECURITY_CREDENTIALS, password); 
    LDAPAuthenticationService ldap = new LDAPAuthenticationService(); 
    // LdapContext ctx; 
    DirContext ctx = null; 
    try { 
     ctx = new InitialDirContext(env); 

Il mio errore è su questa linea: ctx = new InitialDirContext(env);

Non so che cosa esattamente sta causando questo errore.

risposta

11

dati 52e - Returns when username is valid but password/credential is invalid.

Probabilmente bisogno di qualcosa come

String dn = "cn=" + userName + "," + "CN=Users," + base; 
+0

si dovrebbe verificare un modo migliore per trovare utenti: https://bitbucket.org/jwilleke/examples/src/dba1d74d172f9a3f13fc375f6d17370b6da91adf/Examples-JNDI/src/com/willeke/samples/ldap/jndi/BasicAdminSearchBind.java? at = master – jwilleke

7

Per me il problema risolto quando ho creato la sezione principale in questo modo:

env.put(Context.SECURITY_PRINCIPAL, [email protected]); 
+0

Dove devo inserire questa riga di codice? – shubham12511

+0

@ sbmc7 Si imposta nell'ambiente HashTable che si passa durante l'istanziazione di javax.naming.ldap.InitialLdapContext i.e., contesto = new InitialLdapContext (env, null); Dove env è una HashTable. – Vishal

0

LDAP sta cercando di autenticarsi con dC, quando l'invio di una transazione a un altro server DB. Questa autenticazione non riesce perché l'utente ha modificato la password di recente, sebbene questa transazione sia stata generata utilizzando le credenziali precedenti. Questa autenticazione manterrà il fallimento fino a ... a meno che non si cambi lo stato della transazione in Completo o Annulla, nel qual caso LDAP interromperà l'invio di tali transazioni.

2

Ho riscontrato un problema simile quando si utilizza AD su CAS, ovvero errore 52e. Nel mio caso l'applicazione accetta il nome completo quando è in forma di CN = invece del nome utente effettivo.

Ad esempio, se si ha un utente il cui nome completo è Ross Butler e il suo nome utente di login è rbutler --potete normalmente mettere qualcosa come, CN = rbutler, ou = utenti, dc = dominio, dc = com ma il nostro fallito ogni volta. Cambiando ciò in cn = Ross Butler, ou = Users, dc = domain, dc = com è passato !!