En recherchant les méthodes et les protocoles d'authentification Windows, j'ai décidé de comprendre la différence exacte entre Negotiate, Kerberos et NTLM utilisé dans un fichier exécutable simple avant de l'utiliser avec IIS et l'authentification Web.Authentification de fichiers exécutables Windows
J'ai atteint de bons résultats, MAIS j'ai encore besoin de plus de détails sur le Negotiate et Kerberos.
Je le scénario suivant:
J'ai créé très simples fenêtres C# forme application qui affiche une boîte de message affiche la valeur:
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
Notez que je suis un utilisateur de domaine avec admin privilèges sur ma machine locale, je les résultats suivants:
Quand je lance le fichier exe (double clic) alors que je suis activement connecté au DC, je suis arrivé " Négocier". Lorsque j'exécute le fichier exe (exécuté en tant qu'utilisateur differnet/utilisateur local) alors que je suis connecté au DC, j'ai "NTLM". Lorsque j'ai exécuté le fichier exe en utilisant "Exécuter en tant qu'administrateur" ou "Exécuter en tant qu'utilisateur différent", j'ai obtenu "Kerberos".
Lorsque j'exécute le fichier exe alors que je suis connecté en utilisant un compte local, j'ai "NTLM".
Je comprends que le LSA utilisera NTLM pour les comptes locaux. Aussi je comprends que Active Directory utilise Kerberos pour authentifier les utilisateurs de domaine et les ordinateurs. Ma question est, pourquoi je reçois le Négocier Type d'authentification lorsque j'exécute l'exe en utilisant mon compte soit par (Double-clic), ou "exécuter en tant qu'utilisateur différent" en utilisant mon compte Same?
Mise à jour: J'ai remarqué ce qui suit:
- Si utilisateur local exécute le exe alors il est NTLM
- Si utilisateur de domaine exécuter l'exe alors il est Négociez (Si cet utilisateur est administrateur local) mais est Kerberos (si cet utilisateur n'est pas administrateur local)
- Si domaine admin exécutez l'exe alors il est Kerberos
Je juste une clarification sur ce comportement.
La question est claire. Le module d'authentification utilisé pour authentifier un utilisateur est distinct du protocole utilisé pour authentifier l'utilisateur et chacun est distinct de l'entité qui effectue l'authentification. Il n'y a pas de relation un-à-un (un à un). NTLM et Kerberos (et Negotiate) sont pertinents que lors de l'authentification à un ordinateur distant. L'authentification à un ordinateur distant dans un environnement non-domaine utilisera NTLM et l'authentification à un ordinateur distant dans un domaine utilisera Kerberos ou NTLM. Qu'est-ce que vous essayez de savoir exactement? – conio
Ce n'est pas vrai. Une machine locale utilise également un package d'authentification pour authentifier les informations d'identification de connexion collectées par Winlogon via GINA. Winlogon appelle LsaLogonUser, qui utilise un package d'authentification pour créer la session d'ouverture de session. Le LSA utilise NTLM (Msv1_0.dll) pour rechercher le compte dans la machine locale SAM dans le cas d'une connexion locale; pas d'ordinateur distant nécessaire. – codekaizen
Vous n'êtes même pas proche. Le fait que certaines pages (comme celle que vous avez liée dans votre réponse) décrivent incorrectement MSV1_0 comme "NTLM" ne signifie pas que le protocole NTLM ** ** - celui décrit dans [MS-NLMP] - est utilisé. (La description correcte est [Microsoft Authentication] (http://i.stack.imgur.com/k6rdD.png) [Package v1.0] (http://i.stack.imgur.com/313Y3.png), btw.) Je ne sais pas comment je peux être plus clair sur ce point. Lorsque vous vous authentifiez par rapport au SAM local, personne ne crée de challenge et personne ne crée de réponse à ce challenge sur la base des hachages LM ou NT du mot de passe. – conio