Thursday, December 28, 2006 9:29 PM
Jorge
NTLM and Kerberos authentication explained the easy way
Kerberos authentication is always used when:
- Both endpoints are at least W2K or higher
AND - In case of a trust, Kerberos is supported
Kerberos is supported within an AD forest and between AD forests when a forest trust is used.
In all other cases NTLM authentication is used.
Let's say you have the following layout:
- Domain A
- Multiple DCs
- Clients and servers
- Domain B
- Multiple DCs
- Clients and servers
- Domain A trusts Domain B and vice versa
If NTLM is used the order of authentication is:
- CLIENT-DOMAIN_A wants to access MEMBERSRV-DOMAIN_B
- CLIENT-DOMAIN_A connects to MEMBERSRV-DOMAIN_B
- MEMBERSRV-DOMAIN_B connects to a DC in DOMAIN_B and asks do you know: CLIENT-DOMAIN_A
- The DC in DOMAIN_B says NO, but I do trust DOMAIN_A. Let me check.
- A DC in DOMAIN_B connects to a DC in DOMAIN_A and asks do you know: CLIENT-DOMAIN_A
- The DC in DOMAIN_A says: yes, it's OK
- The DC in DOMAIN_B sets up an access token for domain B for CLIENT-DOMAIN_A.
- CLIENT-DOMAIN_A accesses MEMBERSRV-DOMAIN_B
If KERBEROS is used the order of authentication is:
- CLIENT-DOMAIN_A wants to access MEMBERSRV-DOMAIN_B
- CLIENT-DOMAIN_A connects to a DC in DOMAIN_A and asks for a ticket to access MEMBERSRV-DOMAIN_B
- The DC in DOMAIN_A says: let me check, just a sec.
- The DC in DOMAIN_A says: that server does not exist within the domain or the forest. However I do have a trust with DOMAIN_B. Go to a DC in DOMAIN_B
- CLIENT-DOMAIN_A connects to a DC in DOMAIN_B and asks for a ticket to access MEMBERSRV-DOMAIN_B
- The DC in DOMAIN_B says: let me check, just a sec.
- The DC in DOMAIN_B says: here's your ticket and access token. have fun
- CLIENT-DOMAIN_A accesses MEMBERSRV-DOMAIN_B
More information can be found in the following MS articles:
Cheers,
Jorge
------------------------------------------------------------------------------------------------
* This posting is provided "AS IS" with no warranties and confers no rights!
* Always test before implementing!
------------------------------------------------------------------------------------------------