2009-04-10 5 views
1

J'ai une application ASP.Net (sur Win2K) qui utilise l'authentification et l'emprunt d'identité Windows. Nous utilisons le code suivant pour changer le mot de passe:ChangePassword sur un objet utilisateur ne verrouille pas le compte en cas d'échec

Dim objDE As DirectoryEntry 
'... 
objDE.Invoke("ChangePassword", txtOldPassword, txtNewPassword) 

Ce code fonctionne très bien, sauf qu'il ne verrouille pas le compte s'il y avait plusieurs tentatives infructueuses. Est-il possible de faire ce code pour verrouiller le compte si des mots de passe incorrects ont été fournis plusieurs fois (comme spécifié dans une stratégie). Je ne peux pas élever les privilèges des utilisateurs, car cela peut rendre le système moins sécurisé.

Répondre

1

Je ne sais pas si un utilisateur général aurait les autorisations pour verrouiller directement son propre compte. Cependant, une méthode pour faire ce serait:

objDE.InvokeSet("IsAccountLocked", true) 

Pour une grande ressource sur .NET sur Active Directory s'il vous plaît voir this article.

Mes applications pour le lien ci-dessus étant en C#, si vous avez besoin d'un bon convertisseur essayez this one.

+0

Malheureusement, nous ne pouvons pas utiliser cette solution car cela nécessiterait l'élévation des privilèges de l'utilisateur, ce qui n'est pas acceptable pour nous. –

+1

Ne pouvez-vous pas créer un compte de service pour effectuer une authentification? Ce compte ne doit pas être capable de se connecter de manière interactive. Un autre problème avec l'utilisation des informations d'identification des utilisateurs pour se connecter est qu'il est toujours possible même si leur compte est désactivé! Comme un hack, bien que je déteste le mentionner, vous pouvez toujours verrouiller leur compte en essayant de se connecter plusieurs fois avec un mot de passe incorrect. – codemonkeh

+0

Le hack que vous avez suggéré est en fait une bonne idée. Je pensais dans le même sens. –

Questions connexes