First, I apologize for this being so long. I don't think I can
explain it adequately any more condensed and I don't currently have
an external blog to post to.
I finally got Kerberos to work for all of the web apps, central
admin, excel services, search, and the BI web parts that display SSAS
and SSRS a couple months ago. I won't lie to you, it was painful.
The structure of our environment is two load balanced Web Front-end
servers hosting the Portal Web Application, MySite Web Application,
and the SSP Admin Web Application. We also have the query service
running on each of these web front-ends. We then have a separate
server that I am calling an application server that hosts Central
Admin, Excel Services, and document conversion. There is also a
separate server that just does the indexing. Our SQL Server is a
cluster with multiple named instances. We have a separate server that
hosts SSAS and SSRS. We are running SSRS in sharepoint Integrated
Mode and are connecting to SSAS through Excel spreadsheets, which get
published to Excel Services.
There were several gotchas along the way but here are some of the
biggest:
1. SSAS uses the instance name for the SPN request whereas SQL
Service uses the port number of the instance.
2. IE (or probably more appropriately .NET) doesn't append the port
number when making an SPN request so all of the HTTP SPNs needed to
be created without the port number or they wouldn't work.
3. The HTTP SPNs not using port numbers caused another issue which I
didn't find documented anywhere. The best practice that is documented
everywhere details out some 15 different service accounts that should
be used when setting up a MOSS environment. One of these is what is
often called the Farm Account that is supplied when you first run the
configuration wizard. This account becomes the identity of the
Central Admin App Pool. Another is the SSP service account that is
requested when setting up a SSP. This account becomes the identity of
the SSP Web Service App Pool that MOSS search, Excel Services, etc.
uses. Typically, neither of these websites use host headers. The SSP
WS App Pool uses ports 56737 and 56738. Central Admin uses whatever
port you tell it to use when you are configuring it. So, if the HTTP
SPNs did use port numbers your SPNs would be, for
example, "HTTP/CentralAdminServer:1234 domain\FarmAccount"
and "HTTP/ExcelServicesServer:56737 domain\SSPServiceAccount" but,
since they don't, they
become "HTTP/CentralAdminServer" "HTTP/ExcelServicesServer". Now if
Central Admin and Excel services (or any of the other SSP services)
run on the same server you have a problem because this is forcing you
to register the same SPN for 2 different accounts, which isn't
allowed. Neither SPN will work in this case. So, what I found I had
to do was use the same account for the Farm Account that Central
Admin uses and for the SSP Service Account. This allowed me to use
one SPN that covered both Central Admin and Excel Services, since I'm
hosting them on the same server currently.
These are the steps that I took. If you aren't worried about Excel
Services, SSAS, and SSRS then several of these won't be necessary.
SPNs:
- MSSQLSvc/SQLServerName:port domain\SQLServiceAccount
- MSSQLSvc/SQLServerFQDN:port domain\SQLServiceAccount
- MSOLAPSvc.3/SSASServerName:InstanceName domain\SSASServiceAccount
- MSOLAPSvc.3/SSASServerFQDN:InstanceName domain\SSASServiceAccount
- HTTP/CentralAdminServerName domain\FarmAccount
- HTTP/CentralAdminServerFQDN domain\FarmAccount
- HTTP/PortalName domain\PortalAppPoolAccount
- HTTP/PortalFQDN domain\PortalAppPoolAccount
- HTTP/MySiteName domain\MySiteAppPoolAccount
- HTTP/MySiteFQDN domain\MySiteAppPoolAccount
- HTTP/SSPSiteName domain\SSPSiteAppPoolAccount
- HTTP/SSPSiteFQDN domain\SSPSiteAppPoolAccount
Granted the following service/computer accounts the "Trust this
user/computer for delegation to any service(Kerberos)" Delegation
right within AD:
- PortalAppPoolAccount
- MySiteAppPoolAccount
- SSPAppPoolAccount
- FarmAccount
- WebFrontEndServer1
- WebFrontEndServer2
- AppServer1
* Once you have proven that everything is working, going back in and
defining exactly what services each should have the right to delegate
to would probably be wise.