LDAP: error code 49-80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1
LDAP: error code 49-80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1
je sais que le code" 52e " est quand le nom d'utilisateur est valide, mais le mot de passe n'est pas valide. J'utilise le même nom d'utilisateur et mot de passe dans mon studio apache, j'ai pu établir la connexion avec succès avec LDAP.
Voici mon code 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);
Mon erreur est sur cette ligne: ctx = new InitialDirContext(env);
Je ne sais pas exactement ce qui cause cette erreur.
7 réponses
données 52e - retourne lorsque le nom d'utilisateur est valide mais que le mot de passe/justificatif d'identité n'est pas valide.
Vous avez probablement besoin de quelque chose comme
String dn = "cn=" + userName + "," + "CN=Users," + base;
pour moi, le problème a été résolu lorsque j'ai placé la section principale comme ceci:
env.put(Context.SECURITY_PRINCIPAL, userId@domainWithoutProtocolAndPortNo);
52e 1326 ERROR_LOGON_FAILURE retourne lorsque le nom d'utilisateur est valide mais que le mot de passe/justificatif d'identité est invalide. Empêchera la plupart des autres erreurs d'être affichées comme noté.
http://ldapwiki.com/wiki/Common%20Active%20Directory%20Bind%20Errors
j'ai eu un problème similaire en utilisant AD sur CAS , c.-à-d. erreur 52e, dans mon cas application accepte le nom complet quand sous la forme de CN= au lieu du nom d'utilisateur réel.
par exemple, si vous aviez un utilisateur dont le nom complet est Ross Butler et dont le nom d'utilisateur de connexion est rbutler --vous mettriez normalement quelque chose comme,cn=rbutler,ou=Users,dc=domain, dc=com mais le nôtre a échoué à chaque fois. En changeant ceci en cn = Ross Butler,ou=Users,dc=domain, dc=com it passed!!
LDAP essaie de s'authentifier avec la publicité lors de l'envoi d'une transaction à un autre serveur DB. Cette authentification échoue parce que l'Utilisateur a récemment changé son mot de passe, bien que cette transaction ait été générée à l'aide des justificatifs d'identité précédents. Cette authentification continuera d'échouer jusqu'à ce que ... à moins que vous ne changiez le statut de la transaction pour compléter ou Annuler, dans ce cas, LDAP cessera d'envoyer ces transactions.
Dans mon cas je dois utiliser quelque chose comme @ pour réussir la connexion.
sample_user@sample_domain
lorsque vous utilisez le contexte.SECURITY_AUTHENTICATION en tant que" simple", vous devez fournir la valeur de l'attribut userPrincipalName (user@domain_base).