web-dev-qa-db-fra.com

LDAP: code d'erreur 49 - 80090308: LdapErr: DSID-0C0903A9, commentaire: erreur AcceptSecurityContext, données 52e, v1db1

LDAP: code d'erreur 49 - 80090308: LdapErr: DSID-0C0903A9, commentaire: erreur AcceptSecurityContext, données 52e, v1db1

Je sais que le code "52e" correspond à la validité du nom d'utilisateur, mais le mot de passe est invalide. J'utilise le même nom d'utilisateur et le même mot de passe dans mon studio Apache. J'ai pu établir la connexion avec LDAP avec succès.

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 ce qui cause exactement cette erreur.

47
anusha vannela

data 52e - Retourne lorsque le nom d'utilisateur est valide mais que le mot de passe/identifiant est invalide.

Vous avez probablement besoin de quelque chose comme

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

Pour moi, le problème a été résolu lorsque j'ai défini la section principale comme suit:

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

52e 1326 ERROR_LOGON_FAILURE Renvoie lorsque le nom d'utilisateur est valide mais que le mot de passe/identifiant est invalide. Empêche la plupart des autres erreurs de s'afficher comme indiqué.

http://ldapwiki.com/wiki/Common%20Active%20Directory%20Bind%20Errors

13
brcaak

Lorsque vous utilisez Context.SECURITY_AUTHENTICATION en tant que "simple", vous devez fournir la valeur de l'attribut userPrincipalName (user @ domain_base).

7
Moe

J'ai eu un problème similaire lors de l'utilisation de AD sur CAS, erreur 52e. Dans mon cas, l'application accepte le nom complet sous la forme CN = au lieu du nom d'utilisateur actuel.

Par exemple, si vous avez un utilisateur dont le nom complet est Ross Butler et son nom d'utilisateur de connexion est rbutler - vous devez normalement mettre quelque chose comme, cn = rbutler, ou = Users, dc = domaine, dc = com, mais le nôtre échoue à chaque fois. En changeant cela en cn = Ross Butler, ou = Utilisateurs, dc = domaine, dc = com, il est passé !!

4
Count

Dans mon cas, je dois utiliser quelque chose comme @ pour réussir la connexion.

sample_user @ sample_domain

3
Linh Nguyen

Pour moi, le problème est résolu en ajoutant le nom de domaine au nom d'utilisateur comme suit:

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);
2
Mahsh Nikam

si vous déboguez et regardez ctx = null, peut-être que votre nom d'utilisateur a un problème, vous devriez écrire comme "ac\administrateur" (double "\") ou "administrateur @ ac"

2
HaoSi

LDAP tente de s'authentifier auprès de AD lors de l'envoi d'une transaction à une autre base de données de serveur. Cette authentification échoue car l'utilisateur a récemment changé son mot de passe, bien que cette transaction ait été générée à l'aide des informations d'identification précédentes. Cette authentification continuera d'échouer jusqu'à ... sauf si vous modifiez le statut de la transaction sur Terminé ou sur Annuler, auquel cas LDAP cessera d'envoyer ces transactions.

1
Ebrahim

Pour moi, le problème est résolu en changeant les envs comme ceci:

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