Je lance avec Active Directory, essayant de me laisser changer un mot de passe. J'ai trouvé des tonnes d'informations utiles, mais j'obtiens toujours une erreur persistante.
Certains code: p> donc, je reçois cela comme une erreur d'exécution: p> va essayer de définir le mot de passe sur [B @ 6DD1627E avec : ModifyRequest (dn = 'cn = testeur DUDE, OU = LAB, OU = ORG, OU = FOURNISSEUR, DC = EXEMPLE, DC = NET', MODS = {Remplacer UNICODEPWD}) P> Échec de la LDAPException: LDAPException (résultatcode = 53 (réveil à exécuter), errorormageage = '0000001F: SVCERR: DSID-031A11E5, Problème 5003 (Will_Not_perform), Données 0
', diagnosticMessage =' 0000001F: SVCERR: DSID-031A11E5, Problème 5003 (Will_Not_perform), Données 0
') p> Donc, parmi les choses que je connais peut causer cette erreur: p> Je l'ai essayé à la fois avec et sans les citations supplémentaires autour du mot de passe. p> La source d'informations la plus utile ADUNFAR était la suivante: p> http://www.dirmgr.com/blog /2010/8/26/lapap-passwordword-change-in-active-directory.html p> Mais j'ai épuisé toutes les suggestions là-bas (et beaucoup d'autres endroits). P> J'ai également essayé plusieurs autres choses, y compris la définition du mot de passe pour un autre utilisateur valide qui a été ajouté manuellement. (Celui-ci a été ajouté via le SDK également.) P> D'autres opérations fonctionnent bien. J'ai supprimé le code non pertinent mais j'ai pu rechercher, imprimer des attributs, ajouter et supprimer un utilisateur sans problème; Mais cette demande de modification échoue. Si je définis le ModifyRequest pour modifier un autre attribut, tel que le courrier électronique associé, cela fonctionne également bien. P> p>
4 Réponses :
mon hypothèse est Essayez d'utiliser la version de MofifyRequest qui prend des objets "unicodepwd:" + '"' + newpass + '"' code> est contourner votre codage (comme
chaîne code> doit être converti en octets à nouveau et je Pari, il n'utilise pas le bon codage).
modification code>, puis utilisez le constructeur qui prend la valeur des attributs comme octets em>.
val newPass = "\"Jfi8ZH8#k\"".getBytes("UTF-16LE")
// note the dquotes inside the string
val mod = new Modification(ModificationType.REPLACE, "unicodePwd", newPass)
Il s'avère qu'il doit être codé UTF-16le, puis converti en base64. Val NewVass = javax.xml.bind.dataTypeconverter.printbase64binary (('"" + "JFI 8ZH8 # K" +' "'). GetByte S (" utf-16le ")) Postera cela comme une réponse quand capable.
Il s'avère qu'il doit être codé UTF-16le, puis converti en base64.
val newPass = javax.xml.bind.DatatypeConverter.printBase64Binary(('"'+"Jfi8ZH8#k"+'"').getBytes("UTF-16LE"))
Devis de: http://support.microsoft.com/kb/269190 P>
Pour modifier cet attribut, le client doit avoir une connexion SSL (Secure Socket de 128 bits) sur le serveur. P> blockquote>
Donc, même si tout le reste a l'air bien, vous pouvez toujours obtenir un
svcerr: dsid-03190f4c, problème 5003 (Will_Not_perform) code> Si la connexion est jugée non sécurisée. P> Manquant de droits d'administrateur h2>
une demande de modification peut échouer si vous essayez de faire un
remplacer code> sans droits insuffisants. P>
dn: CN=johndoe,OU=Users,DC=example,DC=com changetype: modify delete: unicodePwd unicodePwd:: base64(utf16le(quoted(old password))) - add: unicodePwd unicodePwd:: base64(utf16le(quoted(new password))) -
J'ai également trébuché sur cette question. J'utilise novell.directory.ldap.nettandard code> bibliothèque pour C #. La question dans mon cas était que le mot de passe doit être cité. Ce code a fonctionné pour moi: