Je voudrais utiliser le modèle d'authentification Windows pour l'authentification des utilisateurs qui utilisent mon C# 3.5 application WinForms:System.Security.Principal.WindowsIdentity et WinForms authentification
- L'utilisateur qui a ouvert une session sur Windows est automatiquement connecté dans ma demande.
- Si l'utilisateur souhaite se connecter explicitement, son nom d'utilisateur et son mot de passe doivent être vérifiés par Windows ou, mieux encore, demandés par Windows avec une boîte de dialogue Windows standard. Le résultat devrait être un autre objet
WindowsIdentity
.
Le premier était très facile à résoudre depuis longtemps: j'ai lu le
WindowsIdentity identity = WindowsIdentity.GetCurrent();
Juste pour vous assurer, je vérifie la
if (identity.IsAuthenticated) { ... }
Pour le deuxième cas, j'ai trouvé des appels d'API dans d'autres SO Q & A, mais je suis assez sûr il doit y avoir un moyen géré pour cela, ai-je tort?
En outre je me demande si mon approche pour 1. est sauver et approprié. Merci pour vos commentaires!
Mise à jour: Selon Ivan, je dois utiliser l'approche P/Invoke. C'est fondamentalement correct, mais j'ai encore besoin d'un moyen de récupérer un objet WindowsIdentity
pour cet utilisateur, dont la propriété IsAuthenticated
est définie sur true. L'appel P/Invoke en lui-même ne renvoie pas un tel objet. Comment cela peut-il être fait?
Je ne sais pas pourquoi vous voulez faire la 2ème chose. Voulez-vous que l'utilisateur s'exécute en tant qu'utilisateur différent de celui auquel il est connecté? – giltanis
@giltanis: Oui, je voulais que l'utilisateur puisse s'authentifier par nom d'utilisateur et mot de passe s'il veut utiliser un compte différent de celui actuellement connecté à Windows. – chiccodoro