v3839 v2580 v1db1 v1772 ldaperr error dsid data comment code acceptsecuritycontext 52e 0c09042f 0c09042a 0c090404 0c090400 authentication ldap

authentication - v2580 - LDAP: código de error 49-80090308: LdapErr: DSID-0C0903A9, comentario: error AcceptSecurityContext, datos 52e, v1db1



ldaperr dsid 0c09042f comment acceptsecuritycontext error data 52e v2580 (10)

LDAP: código de error 49 - 80090308: LdapErr: DSID-0C0903A9, comentario: error AcceptSecurityContext, datos 52e, v1db1

Sé que el código "52e" es cuando el nombre de usuario es válido, pero la contraseña no es válida. Estoy usando el mismo nombre de usuario y contraseña en mi estudio de apache, pude establecer la conexión con éxito a LDAP.

Aquí está mi código 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);

Mi error está en esta línea : ctx = new InitialDirContext(env);

No sé exactamente qué está causando este error.



Cuando utiliza Context.SECURITY_AUTHENTICATION como "simple", debe proporcionar el valor del atributo userPrincipalName (usuario @ dominio_base).


En mi caso, tengo que usar algo como @ para iniciar sesión correctamente.

sample_user @ sample_domain


LDAP está intentando autenticarse con AD cuando envía una transacción a otro servidor DB. Esta autenticación falla porque el usuario ha cambiado recientemente su contraseña, aunque esta transacción se generó utilizando las credenciales anteriores. Esta autenticación seguirá fallando hasta ... a menos que cambie el estado de la transacción a Completo o Cancelar, en cuyo caso LDAP dejará de enviar estas transacciones.


Para mí, el problema se resolvió cuando configuré la sección principal de esta manera:

env.put(Context.SECURITY_PRINCIPAL, userId@domainWithoutProtocolAndPortNo);


Para mí, el problema se resuelve agregando un nombre de dominio en el nombre de usuario de la siguiente manera:

string userName="yourUserName"; string password="passowrd"; string hostName="LdapServerHostName"; string domain="yourDomain"; System.DirectoryServices.AuthenticationTypes option = System.DirectoryServices.AuthenticationTypes.SecureSocketsLayer; string userNameWithDomain = string.Format("{0}@{1}",userName , domain); DirectoryEntry directoryOU = new DirectoryEntry("LDAP://" + hostName, userNameWithDomain, password, option);


Para mí, el problema se resuelve cambiando envs como este:

env.put("LDAP_BASEDN", base) env.put(Context.SECURITY_PRINCIPAL,"user@domain")


Tuve un problema similar al usar AD en CAS, es decir, error 52e. En mi caso, la aplicación acepta el nombre completo cuando está en forma de CN = en lugar del nombre de usuario real.

Por ejemplo, si tuviera un usuario cuyo nombre completo es Ross Butler y su nombre de usuario de inicio de sesión es rbutler, normalmente pondría algo como, cn = rbutler, ou = Usuarios, dc = dominio, dc = com pero el nuestro fallaba cada vez. Al cambiar esto a cn = Ross Butler, ou = Usuarios, dc = dominio, dc = com ¡pasó!



si depura y mira ctx = null, tal vez su nombre de usuario tiene problemas, debe escribir como "ac / administrador" (doble "/") o "administrador @ ac"