- Changed thread subject * - The issue isn't specific to WCF.
We have some web content that is setup in virtual directories using integrated windows authentication. The virtual directories are running under application pools that are using a custom identity (custom user account). The problem is that NTLM authentication works however Kerberos authentication does not. This is the same configuration that worked under IIS 6 but we need to migrate to IIS 7 and Kerberos authentication isn't working.
Here's some more information about my environment:
Virtual Directory Authentication Settings:
- Everything disabled except for Windows Authentication
- Enable kernel-mode authentication: enabled
App Pool Settings:
- Managed Pipeline Mode: Classic
- Identity: Custom local user
Web.config Settings:
- authentication mode = "Windows"
- system.serviceModel/bindings/basicHttpBinding/binding/security/mode = TransportCredentialOnly
- system.serviceModel/bindings/basicHttpBinding/binding/security/transport/clientCredentailType = Windows
- serviceHostingEnvironment/aspNetCompatibilityEnabled = true
Virtual Directory Permissions:
- Custom local groups: We add domain users to the local groups for access to the service
OS settings:
- IIS 7
- Windows Server 2008 x64 standard SP2
Here is the analysis I get from fiddler comparing IIS 6 to IIS 7. Kerberos authentication is working fine in IIS 6 with a app pool running with a custom identity.
Reference (IIS 6) (Works):
Fiddler:
(Using domain\user)
Request 1 (no auth)
No Proxy-Authorization Header is present.
No Authorization Header is present.
Response 1 (401) (challenge)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Request 2 (Kerberos ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Response 2 (401) (Kerberos reply)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
Request 3 (Kerberos ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Response 3 (401) (Kerberos reply)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
Request 4 (Kerberos ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Response 4 (200) (Kerberos Reply)
WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
<data>
And the transaction completes and the browser displays the page.
(IIS 7) (Doesn't Work):
Fiddler:
(Using domain\user)
Request 1 (no auth)
No Proxy-Authorization Header is present.
No Authorization Header is present.
Response 1 (401) ( Negotiate)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Request 2 (Kerberos ticket)
Authorization Header (Negotiate) appears to contain a Kerberos ticket:
<data>
Response 2 (401) (Negotiate)
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Notice that IIS 7 isn't accepting my kerberos ticket in the response 2.Any idea why not? Do I need to reconfigure some stuff in IIS 7 to get Kerberos authentication to work?