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.
52e 1326 ERROR_LOGON_FAILURE Devuelve cuando el nombre de usuario es válido pero la contraseña / credencial no es válida. Evitará que la mayoría de los otros errores se muestren como se indica
http://ldapwiki.com/wiki/Common%20Active%20Directory%20Bind%20Errors
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ó!
data 52e: devuelve cuando el nombre de usuario es válido pero la contraseña / credencial no es válida.
Probablemente necesites algo como
String dn = "cn=" + userName + "," + "CN=Users," + base;
si depura y mira ctx = null, tal vez su nombre de usuario tiene problemas, debe escribir como "ac / administrador" (doble "/") o "administrador @ ac"