Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come utilizzare SPN durante la configurazione di applicazioni Web ospitate su Internet Information Services

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 929650
Sommario
In questo articolo vengono descritti i nomi principali di servizio (SPN). In questo articolo viene inoltre descritto come utilizzare SPN quando si configurano le applicazioni Web ospitate in Microsoft Internet Information Services (IIS). In questo articolo viene inoltre descritto il processo di negoziazione dell'autenticazione integrata di Windows. Negozia protezione intestazione consente ai client selezionare tra l'autenticazione Kerberos e l'autenticazione NTLM.

Inoltre, in questo articolo vengono descritti scenari comuni che richiedono un SPN attivare l'autenticazione Kerberos. L'ultima sezione vengono descritte le situazioni in cui l'autenticazione Kerberos potrebbe non riuscire. L'ultima sezione fornisce inoltre procedure di risoluzione dei problemi.
INTRODUZIONE
Importante Negli argomenti discussi in questo articolo si applicano a Internet Information Services (IIS) 6.0. Negli argomenti si applicano anche a IIS 7.0 e 7.5 se l'autenticazione della modalità kernel è disabilitato impostando su false l' impostazione di configurazione useKernelMode.
In questo articolo viene descritto come utilizzare i nomi principali di servizio (SPN) durante la configurazione di applicazioni Web ospitate su IIS.IIS passa l'intestazione di protezione Negotiate quando viene utilizzata l'autenticazione integrata di Windows per autenticare le richieste del client. Negozia protezione intestazione consente ai client selezionare tra l'autenticazione Kerberos e l'autenticazione NTLM. Il processo di negoziazione seleziona l'autenticazione Kerberos, a meno che una delle seguenti condizioni è vera:
  • Uno dei sistemi coinvolti nell'autenticazione non è possibile utilizzare l'autenticazione Kerberos.
  • L'applicazione chiamante non fornisce informazioni sufficienti per l'utilizzo dell'autenticazione Kerberos.
Per attivare il processo di negoziazione selezionare il protocollo Kerberos per l'autenticazione di rete, l'applicazione client necessario fornire un SPN, un nome principale utente (UPN) o un nome di account NetBIOS come il nome di destinazione. Se l'applicazione client non fornisce un nome di destinazione, il processo di negoziazione non è possibile utilizzare il protocollo Kerberos. Se il processo di negoziazione non è possibile utilizzare il protocollo Kerberos, il processo di negoziazione consente di selezionare il protocollo NTLM.
Informazioni

Concetti

Definizione di un SPN

Un SPN è il nome mediante il quale un client identifica in modo univoco un'istanza di un servizio. Se è possibile installare più istanze di un servizio sui computer in un insieme di strutture, ogni istanza del servizio deve avere il proprio SPN. Un'istanza del servizio particolare può avere più SPN se esistono più nomi che i client possono utilizzare per l'autenticazione. Ad esempio, un SPN include sempre il nome del computer host in cui è in esecuzione l'istanza del servizio. Di conseguenza, un'istanza del servizio può registrare un SPN per ogni nome o l'alias dell'host relativo.

La classe del servizio HTTP

La classe del servizio HTTP è diverso dal protocollo HTTP. Il protocollo HTTP e il protocollo HTTPS utilizzare la classe del servizio HTTP. La classe di servizio è la stringa che identifica la classe generale del servizio. I nomi delle classi di servizio noto includono "www" per un servizio Web e "ldap" per un servizio di elenchi in linea. In genere, il nome della classe di servizio può essere qualsiasi stringa che è univoco per la classe di servizio. Si tenga presente che la sintassi SPN utilizza un carattere barra (/) per separare gli elementi. Di conseguenza, il carattere barra (/) non può essere presente in un nome di classe di servizio.

Classe del servizio HTTP e il servizio HOST

Il servizio HOST rappresenta il computer host. Il protocollo Kerberos utilizza HOST SPN per accedere al computer host. Il protocollo Kerberos utilizza la chiave a lungo termine sul computer host per creare un ticket di servizio.

La classe del servizio HTTP è uno dei servizi incorporati che agiscono come un alias di HOST SPN. HOST SPN viene mappato all'account del computer host. Di conseguenza, quando si utilizza la classe del servizio HTTP predefinito, il protocollo Kerberos utilizza l'account del computer per l'account di servizio per richiedere un ticket di servizio.

Scenari comuni

In questa sezione vengono descritti scenari che potrebbero richiedere un SPN. Inoltre, in questa sezione viene illustrato come determinare il SPN per impostare per ogni scenario. In questi scenari vengono utilizzati i seguenti termini:
IIS6server1Nome host del computer che esegue IIS
miodominioIl dominio a cui appartiene il computer IIS6server1
appPool1L'account utente nel dominio miodominio viene utilizzato per l'identità del pool di applicazioni
appPool2L'account utente nel dominio miodominio viene utilizzato per l'identità del pool di applicazioni secondo
www.test.comLa prima intestazione host per un sito Web
www.test2.comL'intestazione host secondo per un sito Web
www.test3.comIl terzo intestazione host per un sito Web
www.myIIScluster.comIl nome di dominio completo di un cluster di computer che eseguono IIS
www.myEXCHcluster.comIl nome di dominio completo di un cluster di computer che eseguono Microsoft Exchange su IIS

Lo strumento Setspn.exe

Lo strumento Setspn.exe consente di leggere, modificare ed eliminare le proprietà di directory SPN per un account di servizio Active Directory. SPN vengono utilizzati per individuare un nome principale di destinazione per l'esecuzione di un servizio. Lo strumento SetSpn.exe consente inoltre di visualizzare il SPN corrente, reimpostazione predefinito SPN dell'account e aggiungere o eliminare SPN supplementari.

Per ottenere lo strumento Setspn.exe per Microsoft Windows Server 2003, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
970536Aggiornamento per lo strumento Setspn.exe supporto per Windows Server 2003

Scenario 1: Accedere a un'applicazione IIS quando è stato modificato l'identità del pool di applicazioni

Quando un'applicazione IIS viene eseguito con un account utente di dominio anziché con l'account di servizio di rete predefinito, è necessario impostare il nome SPN per il servizio HTTP con l'account di dominio. In questo scenario, è possibile accedere all'applicazione di IIS utilizzando il nome NetBIOS del server che esegue IIS o il nome FQDN del server che esegue IIS.

Per accedere all'applicazione di IIS utilizzando il nome NetBIOS, utilizzare il comando riportato di seguito, dove NETBIOS_NAME_OF_IIS_SERVER è il nome NetBIOS del server che esegue IIS:
Setspn – s HTTP / NETBIOS_NAME_OF_IIS_SERVER domain\username
Il comando analoghe, ad esempio, il comando riportato di seguito:
Setspn – s HTTP/iis6server1 mydomain\appPool1
Per accedere all'applicazione di IIS utilizzando il nome completo dominio (FQDN), utilizzare il comando riportato di seguito, dove FQDN_OF_IIS_SERVER è il nome FQDN del server che esegue IIS:
Setspn – s HTTP / FQDN_OF_IIS_SERVER domain\username
Il comando analoghe, ad esempio, il comando riportato di seguito:
Setspn – s HTTP/iis6server1.mydomain.com mydomain\appPool1

Scenario 2: Accedere a un'applicazione Web utilizzando un'intestazione host

Quando si accede a un'applicazione Web utilizzando un'intestazione host, è necessario impostare un SPN per il servizio HTTP.

Quando si esegue l'applicazione Web con un account predefinito, ad esempio l'account del servizio di rete, l'account di servizio locale o l'account di sistema locale, è possibile utilizzare il comando riportato di seguito:
Setspn –A HTTP / HOST_HEADER NETBIOS_NAME_OF_IIS_SERVER
In questo comando HOST_HEADER è l'intestazione host che si digita in una finestra del browser per accedere all'applicazione e NETBIOS_NAME_OF_IIS_SERVER è il nome NetBIOS del server che esegue IIS.

Ad esempio, il comando per l'applicazione potrebbe essere simile al comando riportato di seguito:
Setspn –A HTTP/www.test.com iis6server1
Se si esegue l'applicazione con un account di dominio, è possibile utilizzare il comando riportato di seguito:
Setspn –A HTTP / HOSTHEADER_OR_DNS_ALIAS domain\username
In questo comando HOSTHEADER_OR_DNS_ALIAS è l'intestazione host o l'alias DNS che consente di accedere all'applicazione Web.

Il comando per l'applicazione, ad esempio, potrebbe essere analogo uno dei seguenti comandi:
  • Setspn –A HTTP/www.test.com mydomain\appPool1
  • Setspn –A HTTP/www.test3.com mydomain\appPool2

Scenario 3: Accedere a un'applicazione IIS in un ambiente cluster o a carico bilanciato

Quando si esegue IIS in un ambiente cluster o in un ambiente a carico bilanciato, accedere alle applicazioni utilizzando il nome del cluster anziché utilizzando un nome di nodo. In questo scenario include bilanciamento del carico di rete. Nella tecnologia cluster un nodo si riferisce a un computer è un membro del cluster. Per utilizzare Kerberos come protocollo di autenticazione in questo scenario, l'identità del pool di applicazioni su ciascun nodo IIS deve essere configurato per utilizzare lo stesso account utente del dominio. Per configurare ogni nodo IIS per utilizzare lo stesso account utente del dominio, utilizzare il comando riportato di seguito:
Setspn –A HTTP / CLUSTER_NAME dominio\nomeutente
Ad esempio, potrebbe essere simile al comando uno dei seguenti comandi:
  • Setspn –A HTTP/www.myIISCluster.com mydomain\appPool1
  • Setspn –A HTTP/www.myEXCHCluster.com mydomain\appPool2

Scenario 4: Utilizzare SQL Server per accedere a un'applicazione

il SPN nel server back-end potrebbe essere necessario verificare se l'applicazione IIS Web richiede l'accesso a un computer back-end che esegue SQL Server. L'applicazione Web potrebbe non funzionare correttamente se il SPN necessari non sono configurati correttamente.

Se il computer back-end che esegue SQL Server è in esecuzione con l'account sistema locale, il MSSQLSvc / numero di porta FQDN_OF_SQL_SERVER:port deve essere disponibile per il nome computer. Utilizzare il comando riportato di seguito per determinare il SPN per il computer che esegue SQL Server:
Setspn – l SQL_SERVER_COMPUTER_NAME
Utilizzare il comando seguente per impostare il nome SPN per il nome del computer che esegue SQL Server:
Setspn –A MSSQLSvc / FQDN_OF_SQLSERVER:port SQLSERVER_COMPUTER_NAME
Se il computer back-end che esegue SQL Server è in esecuzione con un account di dominio, il MSSQLSvc / numero di porta FQDN_OF_SQL_SERVER:port deve essere disponibile per l'account di dominio. Utilizzare il comando riportato di seguito per determinare il SPN per l'account di dominio:
Setspn – l dominio\nomeutente
Per impostare il nome principale di servizio per il nome del computer che esegue SQL Server, utilizzare uno dei seguenti comandi:
  • Setspn –A MSSQLSvc / FQDN_OF_SQLSERVER:portFQDN_OF_SQLSERVER
  • Setspn –A MSSQLSvc / FQDN_OF_SQLSERVER:portdomain\username

Lo script di supporto SPN

È possibile utilizzare lo script di esempio riportato di seguito per trovare il SPN per un'applicazione IIS. È inoltre possibile utilizzare questo script per trovare il SPN duplicati. Per utilizzare questo script, attenersi alla seguente procedura:
  1. Fare clic sul pulsante Start, scegliere Esegui, digitare Notepad e quindi fare clic su OK.
  2. In the Notepad file, paste the following script:
    Dim argSPN, argUser, argComputer, spnToSearch, objCategory, strFilter, searchCategory, domainInputFunction Help()Dim strMessagestrMessage = strMessage & "Usage:" & chr(13)strMessage = strMessage & "For accurate results run this script from the IIS server or a member server in the same domain as IIS server." & chr(13)strMessage = strMessage & "Check the article's failure scenarios and make sure no duplicate SPNs exist." & chr(13)strMessage = strMessage & "cscript spnHelper.vbs /f:spn /spn:HTTP/www.test.com /user:mydomain\apppool1" & chr(13)strMessage = strMessage & "cscript spnHelper.vbs /f:spn /spn:HTTP/www.test.com /computer:iis6server1" & chr(13)strMessage = strMessage & "cscript spnHelper.vbs /f:user /user:mydomain\apppool1" & chr(13)strMessage = strMessage & "cscript spnHelper.vbs /f:computer /computer:iis6server1" & chr(13)strMessage = strMessage & "cscript spnHelper.vbs /f:duplicatespn /spn:HTTP/www.test.com" & chr(13)strMessage = strMessage & "cscript spnHelper.vbs /f:requiredspn" & chr(13)	MsgBox strMessage,,"SPN Helper"	WScript.QuitEnd FunctionFunction setArguments()	argSPN = lcase(WScript.Arguments.Named("spn"))	argUser =  lcase(WScript.Arguments.Named("user"))	argComputer = lcase(WScript.Arguments.Named("computer"))	searchCategory = lcase(WScript.Arguments.Named("f"))	if instr(argUser,"\")>0 then		domainInput = ",DC=" & split(argUser,"\")(0)		argUser = split(argUser,"\")(1)	end ifEnd FunctionFunction resetValues()	spnToSearch = ""	objCategory = ""	strFilter = ""End FunctionFunction getGCPath()	Dim tempGCPath, objGC, tempGC, tempStr	Set objGC = GetObject("GC:")	for each tempGC in objGC		tempGCPath = tempGC.ADsPath	next	if tempGCPath <> "" then		getGCPath = tempGCPath	else		WScript.Echo "Unable to find active directory"		WScript.Quit	end if	For tempCounter=0 to UBound(split(lcase(split(getGCPath,"//")(1)),"."))		If tempCounter = UBound(split(lcase(split(getGCPath,"//")(1)),".")) Then tempSeperator="" else tempSeperator = ","		tempStr = tempStr & "DC=" & split(lcase(split(getGCPath,"//")(1)),".")(tempCounter) & tempSeperator	Next	getGCPath = tempGCPath & "/" & tempStrEnd FunctionFunction getSPNClass()	Dim tempSPNClass	If trim(argSPN)="" Then getSPNClass = "*": Exit Function	If instr(argSPN,"/")=0 Then getSPNClass = "*": Exit Function	If instr(split(argSPN,"/")(0),"*")>0 Then getSPNClass = "*": Exit Function	getSPNClass = split(argSPN,"/")(0)End FunctionFunction isSPNInputValid(spnIN)	isSPNInputValid = ""	If instr(spnIN,"/")=0 Then Exit Function	If instr(spnIN,"*")>0 Then Exit Function	isSPNInputValid = spnINEnd FunctionFunction Main()	Dim paramSPN	paramSPN = ""	call  resetValues()	call setArguments()	Select Case searchCategory		Case "spn"			if (argUser = "" and argComputer = "") or (argUser <> "" and argComputer <> "") then WScript.Echo "You must use /spn along with /computer or /user": WScript.Quit			if argSPN = "" then argSPN = "*"			spnToSearch = "(servicePrincipalName=" & argSPN & ")"			if argUser <> "" then objCategory = "(objectCategory=person)(sAMAccountName=" & argUser & ")"			if argComputer <> "" then 				objCategory = "(objectCategory=computer)(cn=" & argComputer & ")"			End If			strFilter = "(&" & spnToSearch & objCategory & ")"		Case "duplicatespn"			If isSPNInputValid(argSPN)="" Then WScript.Echo "Invalid SPN input. Please verify and try again.": WScript.Quit			spnToSearch = "(servicePrincipalName=" & argSPN & ")"			strFilter = spnToSearch			paramSPN = argSPN		Case "requiredspn"			call showRequiredSPNs("IIS")			WScript.Quit		Case "computer"			objCategory = "(&(objectCategory=computer)(cn=" & argComputer & "))"			strFilter = objCategory		Case "user"			objCategory = "(&(objectCategory=person)(sAMAccountName=" & argUser & "))"			strFilter = objCategory		Case else			call Help()			WScript.Quit	End Select	call getSPNs(paramSPN)End FunctionFunction getPingResult(hostName,errorMessage)'On Error Resume NextgetPingResult = ""	If instr(hostName,".")=0 Then		Dim tempGCPath, objGC, tempGC		Set objGC = GetObject("GC:")		for each tempGC in objGC			tempGCPath = tempGC.ADsPath		next		if tempGCPath <> "" then			gcPath = tempGCPath		else			WScript.Echo "Unable to find active directory"			WScript.Quit		end if		Set adConn = CreateObject("ADODB.Connection")		Set adCmd = CReateObject("ADODB.Command")		adConn.Provider = "ADsDSOObject"		adConn.Open "ADs Provider"		Set adCmd.ActiveConnection = adConn		adQuery = "<" + gcPath + ">;" & "(&(objectCategory=computer)(cn=" & hostName & "))" & ";dnsHostName;subtree"		'WScript.Echo adQuery		'WScript.Quit		adCmd.CommandText = adQuery		Set adRecordSet = adCmd.Execute		if adRecordSet.RecordCount>0 Then 			If IsNull(adRecordSet.Fields("dnsHostName"))=0 Then 				getPingResult = adRecordSet.Fields("dnsHostName") 				hostName = getPingResult 			Else 				getPingResult = hostName			End If		else 			errorMessage = "Could not find " & hostname & " in the active directory"		end if		Exit Function	End If	getPingResult = hostNameExit Function'If Err Then getPingResult = hostNameEnd FunctionFunction getSPNs(spn)	Dim spnClass, duplicateSPNArray	spnClass = getSPNClass()	duplicateSPNArray = ""	gcPath = getGCPath()	Set adConn = CreateObject("ADODB.Connection")	Set adCmd = CreateObject("ADODB.Command")	adConn.Provider = "ADsDSOObject"	adConn.Open "ADs Provider"	Set adCmd.ActiveConnection = adConn	adQuery = "<" + gcPath + domainInput + ">;" & strFilter & ";distinguishedName,objectCategory,dnsHostName,servicePrincipalName,sAMAccountName;subtree"	'WScript.Echo adQuery	'WScript.Quit	adCmd.CommandText = adQuery	Set adRecordSet = adCmd.Execute	if adRecordSet.EOF and adRecordSet.Bof Then		WScript.echo "No " & searchCategory & " found with the given criteria."	else		If adRecordSet.RecordCount>10 Then			If msgbox(adRecordSet.RecordCount & " Records are returned with the given criteria. Printing all of them might take a long time" & chr(13) & " Do you want to print all of them?",vbYesNo,"Kerberos")=vbNo Then Exit Function		End If		Do While not adRecordset.Eof			If Err Then Exit Do			WScript.echo "Class: " & split(split(adRecordSet.Fields("objectCategory"),",")(0),"=")(1)			WScript.Echo adRecordSet.Fields("distinguishedName")			if UCase(adRecordSet.Fields("objectCategory")) = "COMPUTER" Then				WScript.echo "Computer Name" & adRecordSet.Fields("dnsHostName")			else				WScript.echo "User Name: " & adRecordSet.Fields("samAccountName")			end if			if instr(searchCategory,"spn")>0 Then				spnCollection = adRecordSet.Fields("servicePrincipalName")				for each individualSPN in spnCollection					if spnClass="*" Then					WScript.Echo Chr(9) + individualSPN					else						Select Case searchCategory							Case "spn"								if Lcase(split(individualSPN,"/")(0)) = lcase(spnClass) Then									WScript.Echo Chr(9) + individualSPN								end if							Case "duplicatespn"								if Lcase(individualSPN) = lcase(spn) Then									duplicateSPNArray = duplicateSPNArray & Lcase(individualSPN) & " for " & split(split(adRecordSet.Fields("objectCategory"),",")(0),"=")(1) & ":" & adRecordSet.Fields("samAccountName") & Chr(29)								end if							Case "requiredspn"						End Select					End if				next			end if			WScript.Echo			adRecordSet.MoveNext		Loop		If searchCategory = "duplicatespn" Then			If UBound(Split(duplicateSPNArray,Chr(29)))>1 Then				WScript.Echo "Duplicate SPNs found"				For tempDuplicateCount=0 to UBound(Split(duplicateSPNArray,Chr(29)))-1					WScript.Echo Split(duplicateSPNArray,Chr(29))(tempDuplicateCount)				Next			End If		End If		WScript.Echo ""		If adRecordset.RecordCount>1 Then WScript.Echo "Found " & adRecordset.RecordCount & " accounts" Else WScript.Echo "Found " & adRecordset.RecordCount & " account"	end if	adRecordset.Close	adConn.Close	If Err Then MsgBox Err.MessageEnd FunctionFunction getCategoryCount(myFilterValue, myFilterCategory)'This function accepts 2 parameters. First paramenter is the filter value and second param is filter category.'If you want to pass in your own filter string with various categories, you can pass "" as the second param.	gcPath = getGCPath()	searchCategory = myFilterCategory	Select Case lcase(searchCategory)		Case "spn"			tempFilter = "(servicePrincipalName=" & myFilterValue & ")"		Case "user"			tempFilter = "(&(objectCategory=person)(sAMAccountName=" & myFilterValue & "))"		Case "computer"			tempFilter = "(&(objectCategory=computer)(cn=" & myFilterValue & "))"		Case else			tempFilter = myFilterValue	End Select	Dim tempCategoryCount	tempCategoryCount = 0	Set adConn = CreateObject("ADODB.Connection")	Set adCmd = CReateObject("ADODB.Command")	adConn.Provider = "ADsDSOObject"	adConn.Open "ADs Provider"	Set adCmd.ActiveConnection = adConn	adQuery = "<" + gcPath + domainInput + ">;" & tempFilter & ";objectCategory,dnsHostName,servicePrincipalName,sAMAccountName;subtree"	'WScript.Echo adQuery	'WScript.Quit	adCmd.CommandText = adQuery	Set adRecordSet = adCmd.Execute	if adRecordSet.EOF and adRecordSet.Bof Then	else		Do While not adRecordset.Eof			If Err Then Exit Do			if searchCategory = "spn" Then				spnCollection = adRecordSet.Fields("servicePrincipalName")				for each individualSPN in spnCollection					If lcase(individualSPN) = lcase(myFilterValue) Then						tempCategoryCount  = tempCategoryCount  + 1					End If				next			else				tempCategoryCount = tempCategoryCount + 1			end if   			adRecordSet.MoveNext		Loop	end if	getCategoryCount = tempCategoryCount	adRecordset.Close	adConn.CloseEnd FunctionFunction showRequiredSPNs(Product)	Select Case Product		Case "IIS"			If MsgBox("Is IIS running in a Cluster or NLB",vbYesNo)=vbYes Then 'Running in Cluster or NLB is true				strClusterName = InputBox("Enter the Cluster Name")				If strClusterName = "" Then WScript.Quit				If getPingResult(strClusterName,errorMessage)="" Then					If MsgBox(errorMessage & ". Do you want to continue?",vbYesNo)<>vbYes Then WScript.Quit				End If				strDomainAccount = InputBox("Enter the Domain Account that the application pool is running under")				If strDomainAccount = "" Then WScript.Quit				strRequiredSPN = "HTTP/" & strClusterName				If instr(strDomainAccount,"\") > 0 then					If getCategoryCount(split(strDomainAccount,"\")(1), "user")=0 Then						WScript.Echo "Domain account " & strDomainAccount & " does not exist"						WScript.Quit					End If				Else					If getCategoryCount(strDomainAccount, "user")=0 Then						WScript.Echo "Domain account " & strDomainAccount & " does not exist"						WScript.Quit					End If				End If				If getCategoryCount(strRequiredSPN, "spn")>0 Then					WScript.Echo "SPN " & " is already set. Use search option for finding the account that it is set for"					WScript.Quit				End If				WScript.Echo "You need to set the SPN " & strRequiredSPN & " for domain account " & strDomainAccount			Else				If MsgBox("Is IIS application pool running under domain account",vbYesNo)=vbYes Then 					strHostName = InputBox("Enter the hostname or host header or FQDN that you use to access the application")					If strHostName = "" Then WScript.Quit					If getPingResult(strHostName,errorMessage)="" Then						If MsgBox(errorMessage & ". Do you want to continue?",vbYesNo)<>vbYes Then WScript.Quit					End If					strDomainAccount = InputBox("Enter the Domain Account that the application pool is running under")					If strDomainAccount = "" Then WScript.Quit					If instr(strDomainAccount,"\") > 0 then						If getCategoryCount(split(strDomainAccount,"\")(1), "user")=0 Then							WScript.Echo "Domain account " & strDomainAccount & " does not exist"							WScript.Quit						End If					Else						If getCategoryCount(strDomainAccount, "user")=0 Then							WScript.Echo "Domain account " & strDomainAccount & " does not exist"							WScript.Quit						End If					End If					strRequiredSPN = "HTTP/" & strHostName					If getCategoryCount(strRequiredSPN, "spn")>0 Then						WScript.Echo "SPN " & strSPNRequired & " is already set. Use search option for finding the account that it is set for"						WScript.Quit					Else						WScript.Echo "You need to set SPN " & strRequiredSPN & " for domain account " & strDomainAccount						WScript.Quit					End If				Else					strHostName = InputBox("Enter the host header or FQDN that you use to access the application")					If strHostName = "" Then WScript.Quit					If getPingResult(strHostName,errorMessage)="" Then						If MsgBox(errorMessage & ". Do you want to continue?",vbYesNo)<>vbYes Then WScript.Quit					End If					If MsgBox("Are you accessing the application with netbios name or FQDN or CNAME alias of IIS server?",vbYesNo)=vbYes Then						strRequiredSPN = "host/" & strHostName						If getCategoryCount(strRequiredSPN, "spn")>0 Then							WScript.Echo "Required SPN " & strRequiredSPN & " is already set. Use search option for finding the account that it is set for"							WScript.Quit						Else							WScript.Echo "You need to set SPN " & strRequiredSPN & " for IIS server's netbios name"							WScript.Quit						End If					End If					strHostHeader = InputBox("Enter the host header that you use to access the application")					If strHostHeader = "" Then WScript.Quit					strRequiredSPN = "http/" & strHostHeader					If getCategoryCount(strSPNRequired, "spn")>0 Then						WScript.Echo "A required SPN " & strSPNRequired & " is already set. Use search option to find the account the SPN is set to. If the required SPN is found under a different account, remove and add it to the IIS server's machine account."						WScript.Quit					Else						WScript.Echo "You need to set SPN " & strRequiredSPN & " for IIS server's netbios name"						WScript.Quit					End If				End If							End If		Case Else			call Help()	End SelectEnd Functioncall Main()'
  3. Salvare il file come Spnhelper.vbs.
  4. Al prompt dei comandi di eseguire il file Spnhelper.vbs utilizzando l'opzione della riga di comando appropriata.

    Nota Per visualizzare le opzioni della riga di comando per il file Spnhelper.vbs, digitare Spnhelper.vbs/help al prompt dei comandi e premere INVIO.

Ulteriori considerazioni

L'autenticazione Kerberos potrebbe non riuscire quando SPN necessari sono impostate per gli account computer o per gli account di dominio. Se l'autenticazione Kerberos non riesce in modo imprevisto, effettuare le seguenti operazioni:
  • Verificare che nessun SPN duplicati presenti nel catalogo globale per un SPN.

    Ad esempio, se il SPN HTTP/www.test.com è impostato per l'account myDomain\appPool1 e per l'account myDomain\appPool2, un SPN duplicato esiste anche se il SPN sono impostati per account diversi. Inoltre, se il SPN HTTP/iis6server1.mydomain.com è impostato per l'account myDomain\appPool1 e SPN HTTP/iis6server1.mydomain.com è anche associato con l'account del computer per il server, è necessario anche un SPN duplicato. È possibile disporre di un HOST SPN e un SPN HTTP. il SPN HTTP esplicita avrà la precedenza su quello implicita descritte sotto la voce HOST. Tuttavia, se l'URL che i tipi di utente è associato a uno o più account utente o a uno o più account di computer, occorre un SPN duplicato.
  • Verificare che il SPN siano state replicate ad altri controller di dominio.

    Problemi di replica tra i controller di dominio possono impedire il SPN di replica ai controller di dominio. Quando il SPN non verranno replicate ad altri controller di dominio, l'applicazione non funzionino da alcuni computer client. Ad esempio, se il SPN HTTP/www.test.com è impostato per l'account myDomain\appPool1 su un controller di dominio, il SPN HTTP/www.test.com non venga trovato per l'account myDomain\appPool1 in un secondo controller di dominio se il SPN non è stato replicato al controller di dominio di secondo.

    Nota Per impostazione predefinita, la replica richiede 15 minuti.
  • Verificare che il server Web sia configurato per supportare l'autenticazione Kerberos. Per effettuare questa operazione, verificare che l'impostazione della chiave NTAuthenticationProviders nella metabase di IIS non è stato modificato su NTLM. L'impostazione predefinita è Negotiate, NTLM.
  • Verificare che il server o il servizio è delegare le credenziali sia trusted per delega.
  • Verificare che l'account è in esecuzione il servizio sia trusted per delega.
  • In Active Directory, verificare che l'account è sensibile e non può essere delegato è deselezionata per gli utenti che accedono all'applicazione.
  • Se si accede all'applicazione direttamente dal server, verificare che la casella di controllo Verifica protezione Loopback sia deselezionata.Per ulteriori informazioni su come verificare che il controllo di loopback è disattivato, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    896861Errore 401.1 quando si esplora un sito Web che utilizza l'autenticazione integrata ed è ospitato su IIS 5.1 o IIS 6
  • Verificare che il client è un client Kerberos abilitato. Inoltre, verificare che l'impostazione Attiva l'autenticazione integrata Windows è abilitata in Internet Explorer. A tale scopo, fare clic su Opzioni Internet dal menu Strumenti, fare clic sulla scheda Avanzate e assicurarsi che sia selezionata la casella di controllo Abilita autenticazione integrata di Windows.
  • Verificare che tutti i computer che fanno parte del processo di Kerberos sono la risoluzione dei nomi coerente e sono connessi da trust Kerberos. Ad esempio, verificare che i computer coinvolti nel processo di Kerberos sono dello stesso insieme di strutture o fanno parte di un trust Kerberos tra insiemi di strutture.
  • Verificare che la dimensione del token non superi il valore impostato per la proprietà MaxTokenSize. Inoltre, verificare che la dimensione della richiesta non superi il valore impostato per la proprietà MaxFieldLength. Questi valori potrebbero essere superati se gli utenti che fanno parte del processo di Kerberos sono membri di molti gruppi.
    920862Messaggio di errore quando un utente di Outlook Web Access tenta di accedere a una cassetta postale in Exchange Server 2003: “ HTTP 400 richiesta non valida (intestazione della richiesta troppo lungo) ”
  • Verificare che siano attivati i criteri di protezione necessaria quando si configurano gli account di dominio per i pool di applicazioni. Per effettuare questa operazione, verificare che l'account di dominio sia membro dei seguenti criteri di protezione locali su computer che esegue IIS:
    • Regolazione limite risorse memoria per un processo
    • Accesso come servizio
    • Sostituzione di token a livello di processo
  • Verificare che l'autenticazione Kerberos funziona correttamente su UDP. Per impostazione predefinita, l'autenticazione Kerberos utilizza UDP. Tuttavia, la perdita di pacchetti UDP può causare l'autenticazione Kerberos esito negativo. Quando si verifica questo problema, è possibile forzare l'autenticazione Kerberos a utilizzare TCP. Per ulteriori informazioni su come forzare l'autenticazione Kerberos a utilizzare TCP, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    244474Come forzare Kerberos a utilizzare TCP anziché UDP in Windows Server 2003, Windows XP e Windows 2000
  • Verificare che l'ora dell'autenticatore non differisce da più di cinque minuti dal timestamp del server. Per ulteriori informazioni su come risolvere le differenze di tipo timestamp, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    232386Impossibile accedere se data e ora non sono sincronizzati
  • Verificare che la porta TCP/UDP 88 non sia bloccata da un firewall o un router. Per impostazione predefinita, l'autenticazione Kerberos utilizza la porta TCP/UDP 88.
  • Verificare che l'ambiente in modalità dominio sia almeno Microsoft Windows 2000 ambienti in modalità nativa. Per ulteriori informazioni su come determinare la modalità di dominio, visitare il seguente sito Web Microsoft:
  • Sul client, verificare che sia stato aggiunto l'URL per l'applicazione Web per siti intranet locali. Per ulteriori informazioni sull'aggiunta di un URL intranet locale, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    303650Sito Intranet viene identificato come un sito Internet quando si utilizza un nome FQDN o un indirizzo IP
  • Verificare che ogni periferica ethernet gigabit utilizza la versione più recente del driver. Per ulteriori informazioni sui problemi che possono verificarsi quando i driver per periferiche gigabit Ethernet non sono aggiornati, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    326152Impossibile connettersi al controller di dominio e non è possibile applicare i criteri di gruppo con periferiche Gigabit Ethernet
Riferimenti
Per ulteriori informazioni su come utilizzare l'autenticazione Kerberos con i siti Web con bilanciamento del carico, visitare il seguente sito Web Microsoft:Per ulteriori informazioni sui problemi che possono verificarsi quando si utilizza l'autenticazione Kerberos con i server proxy, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
321728Internet Explorer non supporta l'autenticazione Kerberos con i server proxy
Per ulteriori informazioni su come configurare IIS per supportare il protocollo Kerberos e il protocollo NTLM per l'autenticazione di rete, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
215383Come configurare IIS per supportare il protocollo Kerberos e il protocollo NTLM per l'autenticazione di rete
Per ulteriori informazioni su come configurare un server virtuale Windows SharePoint Services per l'utilizzo dell'autenticazione Kerberos e come passare dall'autenticazione Kerberos l'autenticazione NTLM, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
832769Come configurare un server virtuale Windows SharePoint Services per l'utilizzo dell'autenticazione Kerberos e come passare dall'autenticazione Kerberos l'autenticazione NTLM
Per ulteriori informazioni sui problemi che possono verificarsi quando si utilizza il protocollo di autenticazione Kerberos per connettersi a un server Web che utilizza una porta non standard in Windows XP o Windows Server 2003, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
908209Internet Explorer 6 non è possibile utilizzare il protocollo di autenticazione Kerberos per connettersi a un server Web che utilizza una porta non standard in Windows XP o Windows Server 2003

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 929650 - Ultima revisione: 05/12/2010 22:02:25 - Revisione: 5.0

Microsoft Internet Information Services 7.5, Microsoft Internet Information Services 7.0, Microsoft Internet Information Services 6.0

  • kbmt kbinfo kbhowto KB929650 KbMtit
Feedback
;did=1&t=">https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">