Question

J'utilise LDAP Spring (1.3.1) pour parler à ADAM et Active Directory.

Lorsque je tente de quelqu'un authentifient à l'aide je reçois des erreurs de retour ldapTemplate.authenticate () via la fonction de rappel d'erreur, mais il donne une exception très générique AuthenticationException et je ne peux pas extraire ce qui est exactement le problème:

  • compte désactivé
  • Mot de passe expiré
  • doit changer le mot de passe lors de la connexion suivante
  • compte a expiré
  • etc

Tout ce que je reviens un detailMessage que je suppose est ce que AD renvoie. Quelque chose comme:

  

org.springframework.ldap.AuthenticationException:   [LDAP: code d'erreur 49 - 8009030C:   LdapErr: DSID-0C0903A9, commentaire:   AcceptSecurityContext erreur, les données 773,   v1db0

Je peux voir les données 773, ce qui signifie que l'utilisateur doit changer le mot de passe à la prochaine connexion. Je ne veux pas analyser manuellement. Y a-t-il des « adaptateurs » Je ne suis pas au courant?

quelqu'un Fut-il jamais eu ce problème?

Merci beaucoup!

Était-ce utile?

La solution

Ce lien comment liste des codes d'erreur ldap carte à JNDI Des exceptions. En regardant le code source ldap, il semble que le printemps cartes chaque exception JNDI à son exception LDAP personnalisé (LdapUtils.convertLdapException())

Maintenant, 773 semble specfic à Active Directory. D'où cela doit être manipulé par l'utilisateur explicitement, le cas échéant. Ce lien énumère un tas d'erreurs Active Directory. ldap Spring fournirait ce texte dans ses détails d'erreur, laissant à l'utilisateur de les utiliser comme approprié.

Autres conseils

si votre fin dans le code PasswordPolicyAwareContextSource.getContext ou dans le code de ressort similaire, Spring ne gère pas très bien (bug).
Lorsque le compte est arrivé à expiration une exception est levée. la classe ci-dessus attire cette exception puis, ce qui est la clé, il appelle
      PasswordPolicyResponseControl ctrl = PasswordPolicyControlExtractor.extractControl (CTX); Le printemps appelle ensuite ctrl.isLocked () mais ne vérifie pas pour l'une des autres conditions. Vous devez remplacer le code de printemps, et vous pouvez vérifier ctrl.isExpired (), ctrl.isChangeAfterReset (), et un tas d'autres apporteurs d'information sont disponibles à ce moment-là

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top