Je rencontre un pb depuis deux jours sur une petite appli que je suis entrain de coder sur la validation des username/password,
Alors que resumé, j'ai un login WPF Window qui en s'ouvrant le bureau, la barre de tache et le task manager se cachent et ne sont plus accessible.
L'utilisateur doit donc mettre ses identifiants pour les récupérer, mon problème est que le test des identifiants me retour toujours true peut import ce que je met, et je l'ai fais de deux manières différentes comme suite :
En utilisant "PrincipalContext" ce code est dans la méthode click de mon bouton login
string username = txtUsername.Text;
string password = txtPassword.Password;
using (PrincipalContext context = new PrincipalContext(ContextType.Machine))
{
bool isValid = context.ValidateCredentials(username, password);
if (isValid)
{
lblMessage.Content = "Valid username and password";
}
else
{
lblMessage.Content = "Invalid username or password";
}
}
Et en utilisant le "LogonUser"
[DllImport("Advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);
ce code est dans la méthode click de mon bouton login
On peut considère mon appli comme une alternative au window lock screen, sauf qu'avec la façon que je l'ai fais j'écris rien sur le regedit et tout, on va dire c'est la manière "Douce".... il se peut du coup que ça soit parce que mon windows est déjà LoggedIn quand je lance l'appli qu'il me renvoi tout le temps un "TRUE" à la validation des identifiants... c'est la seule piste que j'ai et si elle s'avere vrai je laissera probablement tombé l'idée...
Si quelqu'un à des pistes ou une meilleure façon de faire, je serais toute ouïe..
Quand vous essayez d’accéder à vos mots de passe enregistrer sur Google à partir de votre Google Chrome, il vous demande d’entrer le mot de passe Windows, même si vous êtes déjà connecté avec votre compte administrateur.
Oui, pour afficher des informations sensibles et personnelles à un compte, pas planquer une bare ou un gestionnaire des tâches.
Et vous n'imaginez pas le nombre de circonvolutions (process externe, token migitation, etc...) que ce machin a demandé pour ne plus être un énorme trou de sécurité (enfin, pour en réduire la taille).
Vous voulez prendre la main sur le login/password de l'OS, utilisez la méthode recommandée : GINA dll.
Comme vous faites une authentification locale sur une machine qui accepte le compte "Guest", vous avez droit à un "True".
J'ai pu régler mon problème en utilisant la meme approche que le gars qui pose la question càd en vérifiant si le username exist, avant de valider les identiafiants.
Ci-dessous les bouts de code pour ceux qui auraient le meme pb
CrendtialsValidator.cs : qui prends comme arguments deux string username et password
public class CredentialsValidator
{
public static bool AreValid(string username, string password) {
string machineName = Environment.MachineName;
DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + machineName)
using (var user = localMachine.Children.Find(username, "user"))
{
using (var context = new PrincipalContext(ContextType.Machine))
{
return context.ValidateCredentials(username, password);
}
}
}
}
Et la Methode de mon bouton qui utilise la class CrendtialsValidator.cs
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
[C#][WPF] Login form avec les Identifiants Windows
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Patience ensures victory ! - Ali Ibn Abi Taleb
Patience ensures victory ! - Ali Ibn Abi Taleb
Patience ensures victory ! - Ali Ibn Abi Taleb