Jason Viers
2007-08-01 21:44:17 UTC
I'm having some problems with Kerberos authentication from an ISAPI
Extension in an Active Directory domain.
Background:
-----------------------------------
I have two machines, A and B in a test domain. A is the domain
controller, both are Win2003.
Active Directory is all set up, I have a Virtual Directory on IIS on A
that has anonymous disabled and allows "Integrated Windows
Authentication", and I can fetch it from B with IE and Kerberos
authentication operates successfully, as viewed by a packet sniffer.
All is well.
ISAPI & WinHttp:
--------------------------
I've written an ISAPI Extension that uses WinHttp to fetch a remote URL,
and it's set to use "Negotiate" authentication in hopes that it will
propagate the Kerberos authentication. I've created a SPN for HTTP/B,
and I've set "trust this computer for delegation" on B.
If I perform a web request from A to the IIS Extension on B (which will
then attempt to fetch the VDir on A), I can see the browser performing
Kerberos authentication to B's ISAPI Extension, and then B performing
NTLM authentication to A's VDir, which fails. All the information in
the NTLM request seem to be ok (user/domain/etc).
I'm not sure why B isn't trying to use Kerberos authentication when the
request is coming from A. Is there some additional permission necessary
beyond "Trust this machine for delegation"?
Jason
P.S. I noticed if I perform the request on *B* to B's extension, then
the WinHttp request to A performs kerberos authentication, but the
server returns my favorite cryptic kerberos error, "Message Stream
Modified". Still no idea on how to resolve it though.
Extension in an Active Directory domain.
Background:
-----------------------------------
I have two machines, A and B in a test domain. A is the domain
controller, both are Win2003.
Active Directory is all set up, I have a Virtual Directory on IIS on A
that has anonymous disabled and allows "Integrated Windows
Authentication", and I can fetch it from B with IE and Kerberos
authentication operates successfully, as viewed by a packet sniffer.
All is well.
ISAPI & WinHttp:
--------------------------
I've written an ISAPI Extension that uses WinHttp to fetch a remote URL,
and it's set to use "Negotiate" authentication in hopes that it will
propagate the Kerberos authentication. I've created a SPN for HTTP/B,
and I've set "trust this computer for delegation" on B.
If I perform a web request from A to the IIS Extension on B (which will
then attempt to fetch the VDir on A), I can see the browser performing
Kerberos authentication to B's ISAPI Extension, and then B performing
NTLM authentication to A's VDir, which fails. All the information in
the NTLM request seem to be ok (user/domain/etc).
I'm not sure why B isn't trying to use Kerberos authentication when the
request is coming from A. Is there some additional permission necessary
beyond "Trust this machine for delegation"?
Jason
P.S. I noticed if I perform the request on *B* to B's extension, then
the WinHttp request to A performs kerberos authentication, but the
server returns my favorite cryptic kerberos error, "Message Stream
Modified". Still no idea on how to resolve it though.