<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Michel's blog - Kerberos</title>
    <link>http://blog.baladisoftware.net/</link>
    <description>baladisoftware.net</description>
    <language>en-us</language>
    <copyright>Michel Baladi</copyright>
    <lastBuildDate>Thu, 18 Feb 2010 19:55:59 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>michel@baladisoftware.net</managingEditor>
    <webMaster>michel@baladisoftware.net</webMaster>
    <item>
      <trackback:ping>http://blog.baladisoftware.net/Trackback.aspx?guid=fa4f78f9-0dd8-4f56-87e6-55b486e203ef</trackback:ping>
      <pingback:server>http://blog.baladisoftware.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.baladisoftware.net/PermaLink,guid,fa4f78f9-0dd8-4f56-87e6-55b486e203ef.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://blog.baladisoftware.net/CommentView,guid,fa4f78f9-0dd8-4f56-87e6-55b486e203ef.aspx</wfw:comment>
      <wfw:commentRss>http://blog.baladisoftware.net/SyndicationService.asmx/GetEntryCommentsRss?guid=fa4f78f9-0dd8-4f56-87e6-55b486e203ef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have seen a bunch of articles and blog posts about how to register an SPN to get
Kerberos to work for IIS web sites and WCF services (hosted in IIS or self-hosted).
I have noticed that many of them are inacurate when describing the service classes
and mixes up HOST and HTTP. 
</p>
        <p>
Here’s my take on the difference and which one to use when Kerberos is used together
with load balancing (NLB, Citrix NetScaler, F5 BigIP etc): 
</p>
        <p>
          <b>Load balancing IIS where IE is the client</b>
        </p>
        <ul>
          <li>
HOST service class is registered for the machine account (i.e. “Network Service”)</li>
          <li>
HTTP service class is an alias for the HOST service class (i.e. it’s also registered
to the machine account)</li>
          <li>
Browsers such as IE use the HTTP service class for Windows authentication (SPNEGO
to get Kerberos or NTLM). Note that it uses HTTP service class for both the HTTP and
HTTPS protocols.</li>
          <li>
When load balancing the web servers, the browser will go to the VIP of the load balancer
and the load balancer will forward the request to one IIS server where the application
pool runs under a domain account (not the machine account so we can have the same
account on all IIS nodes). Therefore we must register the HTTP service class to the
account (not the HOST service class as mentioned in some articles).</li>
        </ul>
        <p>
          <b>Load balancing WCF services (hosted in IIS or “self-hosted”) on an application
server and using WCF on the client side</b>
          <br />
WCF’s app.config file on the client side contains the expected identity of the server
(i.e. servicePrincipalName=”HOST/VIP-FQDN”, servicePrincipalName=”HTTP/VIP-FQDN” or
even servicePrincipalName=”DonaldDuck/VIP-FQDN”). Whatever the client specifies as
the expected SPN, must be registered on the domain (using the SetSpn tool) for the
account that runs the service (application pool identity when hosted in IIS and service
account when hosted in a Windows Service). 
</p>
        <img width="0" height="0" src="http://blog.baladisoftware.net/aggbug.ashx?id=fa4f78f9-0dd8-4f56-87e6-55b486e203ef" />
      </body>
      <title>The difference between HOST and HTTP service classes when registering a SPN</title>
      <guid isPermaLink="false">http://blog.baladisoftware.net/PermaLink,guid,fa4f78f9-0dd8-4f56-87e6-55b486e203ef.aspx</guid>
      <link>http://blog.baladisoftware.net/PermaLink,guid,fa4f78f9-0dd8-4f56-87e6-55b486e203ef.aspx</link>
      <pubDate>Thu, 18 Feb 2010 19:55:59 GMT</pubDate>
      <description>&lt;p&gt;
I have seen a bunch of articles and blog posts about how to register an SPN to get
Kerberos to work for IIS web sites and WCF services (hosted in IIS or self-hosted).
I have noticed that many of them are inacurate when describing the service classes
and mixes up HOST and HTTP. 
&lt;/p&gt;
&lt;p&gt;
Here’s my take on the difference and which one to use when Kerberos is used together
with load balancing (NLB, Citrix NetScaler, F5 BigIP etc): 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Load balancing IIS where IE is the client&lt;/b&gt; 
&lt;ul&gt;
&lt;li&gt;
HOST service class is registered for the machine account (i.e. “Network Service”)&lt;/li&gt;
&lt;li&gt;
HTTP service class is an alias for the HOST service class (i.e. it’s also registered
to the machine account)&lt;/li&gt;
&lt;li&gt;
Browsers such as IE use the HTTP service class for Windows authentication (SPNEGO
to get Kerberos or NTLM). Note that it uses HTTP service class for both the HTTP and
HTTPS protocols.&lt;/li&gt;
&lt;li&gt;
When load balancing the web servers, the browser will go to the VIP of the load balancer
and the load balancer will forward the request to one IIS server where the application
pool runs under a domain account (not the machine account so we can have the same
account on all IIS nodes). Therefore we must register the HTTP service class to the
account (not the HOST service class as mentioned in some articles).&lt;/li&gt;
&lt;/ul&gt;
&gt;
&lt;p&gt;
&lt;b&gt;Load balancing WCF services (hosted in IIS or “self-hosted”) on an application
server and using WCF on the client side&lt;/b&gt;
&lt;br&gt;
WCF’s app.config file on the client side contains the expected identity of the server
(i.e. servicePrincipalName=”HOST/VIP-FQDN”, servicePrincipalName=”HTTP/VIP-FQDN” or
even servicePrincipalName=”DonaldDuck/VIP-FQDN”). Whatever the client specifies as
the expected SPN, must be registered on the domain (using the SetSpn tool) for the
account that runs the service (application pool identity when hosted in IIS and service
account when hosted in a Windows Service). 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.baladisoftware.net/aggbug.ashx?id=fa4f78f9-0dd8-4f56-87e6-55b486e203ef" /&gt;</description>
      <comments>http://blog.baladisoftware.net/CommentView,guid,fa4f78f9-0dd8-4f56-87e6-55b486e203ef.aspx</comments>
      <category>Kerberos</category>
    </item>
  </channel>
</rss>