OVH Cloud OVH Cloud

NetUserChangePassword

9 réponses
Avatar
Oriane
Bonjour,

j'utilise la fonction Win32 NetUserChangePassword afin de permettre aux =
utilisateurs de changer de mot de passe, dans le cadre d'une application =
de bridage de poste XP. Cela marche impec avec un domaine NT4 Serveur.

Maintenant j'ai port=E9 mon programme C++ pour qu'il fonctionne sous AD, =
et l=E0 quel que soit le mot de passe rentr=E9 lorsque cette fonction =
est appel=E9e, j'ai le droit =E0 une erreur NERR_PasswordTooShort, ce =
qui veut dire en fait que le password est trop petit ou trop long, ou =
pas assez complexe, que sais-je... J'ai la GPO par d=E9faut sur le =
domaine, et je peux d'ailleurs changer les mots de passe directement sur =
le contr=F4leur AD, sans pb...

Donc je ne vois pas d'o=F9 vient ce pb.

Si qqn avait une id=E9e ?????

Merci

9 réponses

Avatar
Thierry MILLE [MVP]
"Oriane" a écrit dans le message de news:

Bonjour,

j'utilise la fonction Win32 NetUserChangePassword afin de permettre aux
utilisateurs de changer de mot de passe, dans le cadre d'une application
de bridage de poste XP. Cela marche impec avec un domaine NT4 Serveur.

Maintenant j'ai porté mon programme C++ pour qu'il fonctionne sous AD, et
là quel que soit le mot de passe rentré lorsque cette fonction est
appelée,
j'ai le droit à une erreur NERR_PasswordTooShort, ce qui veut dire en fait
que le password est trop petit ou trop long, ou pas assez complexe, que
sais-je... J'ai la GPO par défaut sur le domaine, et je peux d'ailleurs
changer les mots de passe directement sur le contrôleur AD, sans pb...

Donc je ne vois pas d'où vient ce pb.


Par défaut, sur un domaine Windows 2003 les exigences de complexité,
d'unicité (24 mots de passe) et de longueur sont activées. Essayez
ou Seattle1
comme mot de passe.

Avez vous consulté cette fiche sur le site MSDN ?
http://windowssdk.msdn.microsoft.com/en-us/library/ms707226.aspx

Si ce n'est pas indiscret : que fais l'application de bridage de poste ?
Avez vous essayé le SCT de Microsoft ?
http://www.microsoft.com/sharedaccess

Personnellement, je ne changerais pas mon mot de passe Windows (AD) via une
application tierce (sauf sur un réseau de test).

Cordialement

--
Thierry MILLE
www.my-vista.com

Avatar
Oriane
Bonjour et merci de votre réponse,

"Thierry MILLE [MVP]" a écrit dans le message de news: exDrG%
"Oriane" a écrit dans le message de news:

Bonjour,

j'utilise la fonction Win32 NetUserChangePassword afin de permettre aux
utilisateurs de changer de mot de passe, dans le cadre d'une application
de bridage de poste XP. Cela marche impec avec un domaine NT4 Serveur.

[snip] Donc je ne vois pas d'où vient ce pb.



Par défaut, sur un domaine Windows 2003 les exigences de complexité,
d'unicité (24 mots de passe) et de longueur sont activées. Essayez
ou Seattle1
comme mot de passe.
Aucun mot de passe ne convient.


Avez vous consulté cette fiche sur le site MSDN ?
http://windowssdk.msdn.microsoft.com/en-us/library/ms707226.aspx
Oui mais je n'y vois pas de réponse à ma question. Peut être n'ai-je pas lu attentivement !


Si ce n'est pas indiscret : que fais l'application de bridage de poste ?
Elle définit un environnement "adapté" au niveau "hiérarchique" de l'utilisateur, chez mon client: bureau, menu, lancement d'applications (dés)inhibés...


Avez vous essayé le SCT de Microsoft ?
http://www.microsoft.com/sharedaccess
Mon client, qui n'est pas très Microsoft, avait un cahier des charges très précis et orienté, en outre, il s'agissait de faire évoluer une vieille application qui customise la GINA, en gardant les mêmes techniques.


Personnellement, je ne changerais pas mon mot de passe Windows (AD) via une
application tierce (sauf sur un réseau de test).
Et pourtant, on va le refaire...et ca marche déjà depuis longtemps !


Cordialement
De même.



Avatar
Thierry MILLE [MVP]
"Oriane" a écrit dans le message de news:
%
Bonjour,

Avez vous consulté cette fiche sur le site MSDN ?
http://windowssdk.msdn.microsoft.com/en-us/library/ms707226.aspx
Oui mais je n'y vois pas de réponse à ma question. Peut être n'ai-je pas

lu attentivement !


Est ce que l'utilisateur change son mot de passe ? ou s'agit-il d'une
réinitialisation de mot de passe (l'utilisateur doit-il saisir son ancien
mot de passe ?)
L'utilisateur ne dispose que de droits utilisateurs ?

Je pensais à cet extrait :
Remarks
If you are programming for Active Directory, you may be able to call certain
Active Directory Service Interface (ADSI) methods to achieve the same
functionality you can achieve by calling the network management user
functions. For more information, see IADsUser and IADsComputer.
[...]

dans la fiche
http://windowssdk.msdn.microsoft.com/en-us/library/ms707209.aspx, je suppose
que vous avez vu cela :
In some cases, the process that calls the NetUserChangePassword function
must also have the SE_CHANGE_NOTIFY_NAME privilege enabled; otherwise,
NetUserChangePassword fails and GetLastError returns ERROR_ACCESS_DENIED.
This privilege is not required for the LocalSystem account or for accounts
that are members of the administrators group. By default,
SE_CHANGE_NOTIFY_NAME is enabled for all users, but some administrators may
disable the privilege for everyone. For more information about account
privileges, see Privileges and Authorization Constants.

(je suppose que vous avez essayé de compliler le petit bout de code fourni :
est ce qu'il fonctionne dans votre domaine AD ?).

Si ce n'est pas indiscret : que fais l'application de bridage de poste ?
Elle définit un environnement "adapté" au niveau "hiérarchique" de

l'utilisateur, chez mon client: bureau, menu, lancement d'applications
(dés)inhibés...


Vous ne pouvez pas le faire par des GPO ? Cela serait peut être plus intégré
et surtout évolutif, non ?

Avez vous essayé le SCT de Microsoft ?
http://www.microsoft.com/sharedaccess
Mon client, qui n'est pas très Microsoft, avait un cahier des charges très

précis et orienté, en outre, il s'agissait de faire évoluer une vieille
application qui customise la GINA, en gardant les mêmes techniques.
passons ...


Personnellement, je ne changerais pas mon mot de passe Windows (AD) via
une
application tierce (sauf sur un réseau de test).
Et pourtant, on va le refaire...et ca marche déjà depuis longtemps !



En matière de sécurité, l'utilisateur n'a pas moyen de vérifier ce qui est
fait lors du traitement de son mot de passe (fakegina.dll par exemple). Côté
sécurité des systèmes : la validation des entrées utilisateurs doit être
réalisée afin d'éviter tout dépassement de tampon.

Cordialement

--
Thierry MILLE
www.my-vista.com


Avatar
Thierry MILLE [MVP]
"Oriane" a écrit dans le message de news:
%
Bonjour et merci de votre réponse,
j'utilise la fonction Win32 NetUserChangePassword afin de permettre aux
utilisateurs de changer de mot de passe, dans le cadre d'une application
de bridage de poste XP. Cela marche impec avec un domaine NT4 Serveur.



Essayez plutôt ceci :
http://windowssdk.msdn.microsoft.com/en-us/library/ms680188.aspx

Cordialement

--
Thierry MILLE
www.my-vista.com


Avatar
Gilles LAURENT
"Oriane" a écrit dans le message de
news:
| Bonjour,

Bonsoir,

| Maintenant j'ai porté mon programme C++ pour qu'il fonctionne sous
| AD, et là quel que soit le mot de passe rentré lorsque cette fonction
| est appelée, j'ai le droit à une erreur NERR_PasswordTooShort, ce qui
| veut dire en fait que le password est trop petit ou trop long, ou pas
| assez complexe, que sais-je... J'ai la GPO par défaut sur le domaine,
| et je peux d'ailleurs changer les mots de passe directement sur le
| contrôleur AD, sans pb...

Cela ressemble à une chaine unicode mal formatée. Vous compilez en
Unicode (#define unicode) ou alors convertissez les chaines de
caractères ansi en unicode ? Pouvez-vous poster les lignes de code
utilisées ?

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Oriane
Bonjour Gilles,
"Gilles LAURENT" a écrit dans le message de news:
"Oriane" a écrit dans le message de
news:
| Bonjour,

Bonsoir,

Cela ressemble à une chaine unicode mal formatée. Vous compilez en
Unicode (#define unicode) ou alors convertissez les chaines de
caractères ansi en unicode ? Pouvez-vous poster les lignes de code
utilisées ?
Je répète que ce programme marche sous NT4 Serveur. Donc c'est de l'Unicode. Le code n'apportera pas gd chose.


Merci de votre réponse.

Oriane

Avatar
Oriane
"Thierry MILLE [MVP]" a écrit dans le message de news:
"Oriane" a écrit dans le message de news:
%
Bonjour,

Avez vous consulté cette fiche sur le site MSDN ?
http://windowssdk.msdn.microsoft.com/en-us/library/ms707226.aspx
Oui mais je n'y vois pas de réponse à ma question. Peut être n'ai-je pas

lu attentivement !


Est ce que l'utilisateur change son mot de passe ? ou s'agit-il d'une
réinitialisation de mot de passe (l'utilisateur doit-il saisir son ancien
mot de passe ?)
Réinitialisation.

L'utilisateur ne dispose que de droits utilisateurs ?

Je pensais à cet extrait :
Remarks
If you are programming for Active Directory, you may be able to call certain
Active Directory Service Interface (ADSI) methods to achieve the same
functionality you can achieve by calling the network management user
functions. For more information, see IADsUser and IADsComputer.
[...]
Oui j'ai lu cela moi aussi, et puis j'ai pensé que l'utilisateur avait dans tous les cas le droit de changer son propre mot de passe. Mais le mieux est effectivement de s'en assurer...

dans la fiche
http://windowssdk.msdn.microsoft.com/en-us/library/ms707209.aspx, je suppose
que vous avez vu cela :
In some cases, the process that calls the NetUserChangePassword function
must also have the SE_CHANGE_NOTIFY_NAME privilege enabled; otherwise,
NetUserChangePassword fails and GetLastError returns ERROR_ACCESS_DENIED.
This privilege is not required for the LocalSystem account or for accounts
that are members of the administrators group. By default,
SE_CHANGE_NOTIFY_NAME is enabled for all users, but some administrators may
disable the privilege for everyone. For more information about account
privileges, see Privileges and Authorization Constants.

(je suppose que vous avez essayé de compliler le petit bout de code fourni :
est ce qu'il fonctionne dans votre domaine AD ?).
Je vais essayer.


Si ce n'est pas indiscret : que fais l'application de bridage de poste ?
Elle définit un environnement "adapté" au niveau "hiérarchique" de

l'utilisateur, chez mon client: bureau, menu, lancement d'applications
(dés)inhibés...


Vous ne pouvez pas le faire par des GPO ? Cela serait peut être plus intégré
et surtout évolutif, non ?
Oui mais mon client ne l'est pas, lui...


En matière de sécurité, l'utilisateur n'a pas moyen de vérifier ce qui est
fait lors du traitement de son mot de passe (fakegina.dll par exemple). Côté
sécurité des systèmes : la validation des entrées utilisateurs doit être
réalisée afin d'éviter tout dépassement de tampon.
Oui bien sûr, ce n'est pas sécurisé, ce n'est pas dans les normes, etc. Mais il y a ce qu'on appelle "le principe de réalité". Le client paie et même si j'ai un devoir de conseil, il a le droit de faire la sourde oreille...Il a un budget, des utilisateurs qui n'aiment pas quand ca change... et la suite vous la connaissez surement.


Merci encore de vos conseils.

Oriane



Avatar
Gilles LAURENT
"Oriane" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| Maintenant j'ai porté mon programme C++ pour qu'il fonctionne sous
| AD, et là quel que soit le mot de passe rentré lorsque cette fonction
| est appelée, j'ai le droit à une erreur NERR_PasswordTooShort, ce qui
| veut dire en fait que le password est trop petit ou trop long, ou pas
| assez complexe, que sais-je... J'ai la GPO par défaut sur le domaine,
| et je peux d'ailleurs changer les mots de passe directement sur le
| contrôleur AD, sans pb...

Je reproduis ce comportement lorsque j'active la stratégie du domaine
"Durée de vie minimale du mot de passe". Avec ce paramètre de stratégie
actif, même si le nouveau mot de passe est conforme aux exigences de
complexité, l'appel à l'API NetUserChangePassword échoue avec le code
d'erreur NERR_PasswordTooShort (2245).

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Oriane
"Gilles LAURENT" a écrit dans le message de news: OZj%
"Oriane" a écrit dans le message de
news:
| Bonjour,

Bonjour,

Je reproduis ce comportement lorsque j'active la stratégie du domaine
"Durée de vie minimale du mot de passe". Avec ce paramètre de stratégie
actif, même si le nouveau mot de passe est conforme aux exigences de
complexité, l'appel à l'API NetUserChangePassword échoue avec le code
d'erreur NERR_PasswordTooShort (2245).
Bingo, c'était bien ca. Encore fallait-il le trouver !


Merci

Oriane