AD-autentisering använder två huvudprotokoll: Kerberos och NTLM
NTLM
Certifieringsprocessen är följande:
- Klienten genererar en NTLM-hash lokalt, och värdet är hashvärdet för användarens lösenord.
- Klienten skickar användarnamnet till applikationsservern.
- Applikationsservern genererar ett slumpmässigt värde för klienten, vilket vanligtvis kallas nonce eller utmaning.
- klienten krypterar noncen med NTLM-hash och skickar den till applikationsservern.
- Efter att ha mottagit den skickar applikationsservern den till AD-servern tillsammans med användarnamnet och nonce.
- AD genererar en NTLM-hash baserad på användarens lösenord, krypterar noncen och jämför sedan klientens meddelande.
- Om värdena är desamma går autentiseringen igenom, och om de är olika misslyckas autentiseringen.
Kerberos
Nyckeltermer:
- KDC: Key Distribution Center, som erbjuder två tjänster: Authentication Service (AS) och Ticket-granting Service (TGS). Domänen genererar ett domänkonto kallat krbtgt för KDC, och TGT använder lösenordet för kryptering och dekryptering. När en domänanvändare får åtkomst för första gången vill de att AS ska autentiseras, och efter att ha skickat dem begär AS:en att TGS ska tillhandahålla ett ärende (TGT) till domänanvändaren.
- SPN: Tjänstehuvudnamn。 Utöver användarkonton har AD-konton även tjänstekonton. Applikationen kommer också att ha ett tjänstekonto kopplat till sig, vilket gör det möjligt för applikationen att få tillgång till serverresurser, såsom Exchange, SQL, IIS, etc. SPN är en tjänst som används för att koppla tjänsten, som aktiveras av applikationen, till tjänstekontot i AD.
Certifieringsprocess:
1. När en domänanvändare loggar in skickas en AS-förfrågan (AS_REQ) till DC:n, som innehåller en krypterad tidsstämpel krypterad med användarens lösenordshash och användarnamn.
2. Efter att ha mottagit begäran använder DC användarens användarnamns- och lösenordshash för att dekryptera den. DC:n svarar på ett AS-svar (AS_REP) till klienten, vilket inkluderar en sessionsnyckel och en TGT (Ticket Granting Ticket). Sessionsnyckeln krypteras med användarens lösenordshash. TGT innehåller gruppmedlemskap, domän, tidsstämpel, klient-IP och sessionsnyckel. TGT är också krypterat, krypterat med KDC-tjänstekontots lösenord, och klienten kan inte dekryptera det. (TGT är giltigt i 10 timmar som standard, och uppdateringar som sker efter det kräver inte att användaren anger lösenordet igen)
3. När en användare begär en resurs i domänen skickas en Ticket Granting Service Request (TGS_REQ), inklusive användarnamn, tidsstämpel, TGT och SPN. Tidsstämplar och användarnamn krypteras med en sessionsnyckel.
4. Efter att ha mottagit förfrågan avgör KDC först om det finns ett SPN i förfrågan, dekrypterar sedan TGT, extraherar sessionsnyckeln och tidsstämpeln i TGT, och använder sessionsnyckeln i TGT för att dekryptera det krypterade användarnamnet och tidsstämpeln. Utför flera kontroller:
(1) Tidsstämpeln som dekrypteras av TGT måste vara giltig. (Om en reprisattack sker är tidsstämpeln ogiltig.) )
(2) Om användarnamnet i TGT är förenligt med användarnamnet i förfrågan.
(3) Om IP-adressen i TGT är densamma som IP-adressen i förfrågan.
Kontrollen svarar på klientens Ticket Granting ServiceReply(TGS_REP), som innehåller den auktoriserade åtkomsten till SPN, den nya sessionsnyckeln som används för åtkomst mellan klienten och SPN, samt den nya Service Ticket-servicebiljetten (inklusive den nya sessionsnyckeln, användarnamnet och användargruppen). Både den auktoriserade SPN-enheten och sessionsnyckeln som får åtkomst till SPN:n är krypterade med sessionsnyckeln i TGT. Serviceticket är krypterat med lösenordet till motsvarande SPN-tjänstekonto.
1. Efter ovanstående process har användaren erhållit sessionsnyckeln och tjänsteticket som rör applikationstjänsten. Användaren skickar en applikationsförfrågan (AP_REQ) till applikationstjänsten, som innehåller användarnamnet och tidsstämpeln, och krypteras med en sessionsnyckel.
2. Applikationstjänsten använder tjänstekontots lösenordshash för att dekryptera tjänsteärendet och extrahera användare, användargrupp och sessionsnyckel. Dekryptera användarnamnet och tidsstämpeln i AP_REQ med den dekrypterade sessionsnyckeln. AP_REQ Om så är fallet accepteras förfrågan och applikationstjänsten tilldelar behörigheter baserat på användargruppsinformationen i tjänsteärendet, och sedan kan användaren komma åt den begärda tjänsten.
Ursprunglig adress:Inloggningen med hyperlänken är synlig.
|