This is something that I've never really been able to answer as well as I like: What is the real advantage of using Kerberos authentication in IIS instead of NTLM?
I've seen a lot of people really struggle to get it set up (myself included) and I haven't been able to come up with a good reason for using it. There must be some pretty significant advantages though, otherwise it wouldn't be worth all the trouble to set it up, right?
From a Windows perspective only:
NTLM
MaxConcurrentAPI
,AuthPersistSingleRequest
(false), faster DCs.) (Self-referential bonus.)lmcompatibilitylevel
)Kerberos
works with currently domain-joined clients only
might be able to traverse a proxy, but see DC point above: you still need to be on the same network as an active DC, as does the server.
ticket is long-lived (10h) meaning less DC communication during ticket lifetime - and to emphasise: this could save thousands to millions of requests per client over that lifetime - (
AuthPersistNonNTLM
is still a thing; Kerberos PAC validation used to be a thing)requires a single round-trip to authenticate, but the authentication payload size is relatively large (commonly 6-16K) (401, {(encoded) token size} 200)
can be used with ("please always use Constrained") delegation to enable double-hop scenarios, i.e. Windows authentication of the connecting user to the next service
UserA
to access IIS, and for IIS to impersonate that same Windows user account when it accesses a different SQL Server computer. This is "delegation of authentication".is currently the primary security package for Negotiate authentication
requires registration of SPNs, which can be tricky. Rules that help.
requires use of a name as the target, not an IP address
reasons Kerb might fail:
KRB_ERR_AP_MODIFIED
)While we're at it:
Basic
LogonType
to be configured to accomplish this (think the default changed to network cleartext between 2000 and 2003, but might be misremembering)To sum up:
Kerb can be tricky to set up, but there are loads of guides (my one) out there that try to simplify the process, and the tools have improved vastly from 2003 to 2008 (
SetSPN
can search for duplicates, which is the most common breaking issue; useSETSPN -S
anytime you see guidance to use -A, and life will be happier).Constrained delegation is worth the cost of admission.
From the Microsoft Application Verifier, which detects common developer mistakes. One of those mistakes is the use of NTLM:
Another approach would be to set authentication to
negotiate
and use both rather than one instead of the other.You should add a very important point:
Kerberos has been standard and open protocol in Unix over 20 years whereas NTLM is a purely proprietary solution from Microsoft and only known to Microsoft.
Kerberos is required if you need to impersonate the user to access resources that are not on the iis server.