Ricercando i metodi ei protocolli di autenticazione di Windows, ho deciso di comprendere la differenza esatta tra negoziazione, Kerberos e NTLM utilizzati in un file eseguibile semplice prima di utilizzarlo con IIS e l'autenticazione Web.Autenticazione file eseguibile di Windows
Ho raggiunto buoni risultati, ma ho ancora bisogno di ulteriori dettagli sul negoziato e sul Kerberos.
Ho il seguente scenario:
ho creato molto semplici # Windows C moduli di domanda che mostra una finestra di messaggio viene visualizzato il valore per:
System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
notare che io sono un utente di dominio con Admin privilegi sulla mia macchina locale, che hanno i seguenti risultati:
quando ho eseguito il file exe (doppio clic) mentre sto attivamente collegato al DC, ho ottenuto " Negoziare".
Quando eseguo il file exe (eseguito come utente differnet/utilizzando l'utente locale) mentre sono attivamente connesso alla DC, ho ottenuto "NTLM".
Quando eseguo il file exe utilizzando "Esegui come amministratore" o "Esegui come utente diverso" ho "Kerberos".
Quando eseguo il file exe mentre sono localmente connesso utilizzando l'account locale, ho ottenuto "NTLM".
Capisco che la LSA utilizzerà NTLM per gli account locali. Comprendo inoltre che Active Directory utilizza Kerberos per autenticare utenti e computer del dominio.
La mia domanda è: perché sto ottenendo il Negoziare Tipo di autenticazione quando ho eseguito l'exe utilizzando il mio conto sia con (doppio clic), o "Esecuzione come altro utente" utilizzando il mio stesso account?
Update: ho notato quanto segue:
- Se utente locale è in esecuzione il file exe, allora è NTLM
- Se l'utente dominio eseguire il file EXE, allora è Negoziare (Se tale utente è l'amministratore locale) ma è Kerberos (se tale utente non è l'amministratore locale)
- Se amministratore dominio esegui l'exe, quindi è Kerberos
Ho solo un chiarimento su questo comportamento.
La domanda non è chiaro. Il pacchetto di autenticazione utilizzato per autenticare un utente è distinto dal protocollo utilizzato per autenticare l'utente e ciascuno è distinto dall'entità che esegue l'autenticazione. Non esiste una relazione one-to-one (-to-one). NTLM e Kerberos (e Negozia) sono rilevanti solo quando si esegue l'autenticazione su un computer remoto. L'autenticazione su un computer remoto in un ambiente non di dominio utilizzerà NTLM e l'autenticazione su un computer remoto in un dominio utilizzerà Kerberos o NTLM. Che cosa stai cercando di scoprire esattamente? – conio
Questo non è vero. Una macchina locale utilizza anche un pacchetto di autenticazione per autenticare le credenziali di accesso raccolte da Winlogon tramite GINA. Winlogon chiama LsaLogonUser, che utilizza un pacchetto di autenticazione per creare la sessione di accesso. LSA utilizza NTLM (Msv1_0.dll) per cercare l'account nel computer locale SAM nel caso di un accesso locale; nessun computer remoto necessario. – codekaizen
Non sei nemmeno vicino. Il fatto che alcune pagine (come quella che hai collegato nella tua risposta) descrivono erroneamente MSV1_0 come "NTLM" non significa che sia in uso il protocollo NTLM ** ** - quello descritto in [MS-NLMP]. (La descrizione corretta è [Autenticazione Microsoft] (http://i.stack.imgur.com/k6rdD.png) [Pacchetto v1.0] (http://i.stack.imgur.com/313Y3.png), btw.) Non so come posso essere più chiaro su questo punto. Quando esegui l'autenticazione con il SAM locale, nessuno crea una sfida e nessuno crea una risposta a tale sfida in base agli hash LM o NT della password. – conio