Teď jste offline a čekáte, až se znova připojí internet.

Jak používat názvy SPN při konfiguraci webové aplikace, které jsou hostovány na Internetová informační služba

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:929650
Souhrn
Tento článek popisuje hlavní názvy služeb (SPN). Tento článek také popisuje, jak používat názvy SPN při konfiguraci webové aplikace, které jsou hostovány na (IIS). Tento článek také popisuje proces Negotiate v integrované ověřování systému Windows. Vyjednat metodu zabezpečení záhlaví umožňuje klientům vybrat mezi ověřování pomocí protokolu Kerberos a NTLM ověřování.

Kromě toho tento článek popisuje běžné scénáře, které vyžadují název SPN povolit ověřování protokolem Kerberos. V poslední části popisuje situace, ve kterých může selhat ověřování pomocí protokolu Kerberos. V poslední části také poskytuje kroky pro řešení potíží.
ÚVOD
Důležité Témata, které jsou zmíněny v tomto článku se vztahují k Internetová informační služba (IIS) 6.0. Témata se rovněž vztahují na službu IIS 7.0 a 7.5, pokud ověření režimu jádra je zakázána nastavením konfigurace nastavení useKernelMode k NEPRAVDA.
Tento podrobný článek popisuje, jak použít hlavní názvy služeb (SPN) při konfiguraci webové aplikace, které jsou hostovány na serveru IIS.Služba IIS předává záhlaví Negotiate security při integrované ověřování systému Windows používá k ověřování požadavků klientů. Vyjednat metodu zabezpečení záhlaví umožňuje klientům vybrat mezi ověřování pomocí protokolu Kerberos a NTLM ověřování. Proces vyjednat ověřování pomocí protokolu Kerberos vybere, pokud je splněna jedna z následujících podmínek:
  • Jeden ze systémů účastnícího se ověřování nelze použít ověřování pomocí protokolu Kerberos.
  • Volající aplikace neposkytuje dostatek informací k ověřování pomocí protokolu Kerberos.
Chcete-li povolit procesu vyjednání protokolu Kerberos pro ověřování v síti vyberte, musí klientská aplikace poskytnout hlavní název služby, hlavního názvu uživatele (UPN) nebo název účtu NetBIOS jako cílový název. Pokud není název cílové klientské aplikace, Negotiate proces nelze použít protokol Kerberos. Pokud proces vyjednat nemůže použít protokol Kerberos, vybere procesu vyjednat protokol NTLM.
Další informace

Koncepty

Definice název SPN

Název SPN je název, kterým klient jednoznačně identifikuje instanci služby. Pokud instalujete více instancí služby v počítačích v rámci doménové struktury, každá instance služby musí mít svůj vlastní název SPN. Instance určité služby může mít více SPN, pokud existuje více názvů, které mohou klienti použít pro ověřování. Například název SPN vždy obsahuje název hostitelského počítače, na kterém je spuštěna instance služby. Proto může být instance služby zaregistrovat název SPN pro každý název nebo alias jeho hostitele.

Třída služby protokolu HTTP

Třída služby HTTP se liší od protokolu HTTP. Protokol HTTP a HTTPS protokol použít třídu služby HTTP. Třída služby je řetězec označující třídu obecné služby. Názvy tříd známé služby zahrnují služby WWW "www" a "Idap" adresářové služby. Název třídy služby obecně může být libovolný řetězec, který je jedinečný pro třídy služby. Uvědomte si, že syntaxe SPN používá k oddělení prvků znak lomítka (/). Proto lomítka (/) nemůže objevit v názvu třídy služby.

HOSTITELE služby a HTTP služby třídy

HOSTITELE služby představuje hostitelského počítače. Protokol Kerberos používá pro přístup k hostitelskému počítači SPN hostitel. Protokol Kerberos používá dlouhodobé klíče v hostitelském počítači vytvořit lístek služby.

Třída služby HTTP je jednou z předdefinovaných služeb, které se chovají jako alias SPN hostitel. Název SPN hostitel je mapována na účet počítače Hostitel. Proto při použití výchozí třída služby HTTP protokolu Kerberos používá účet počítače jako účet služby požádat o lístek služby.

Běžné scénáře

Tato část popisuje scénáře, které mohou vyžadovat název SPN. Dále v této části ukazuje, jak zjistit, které SPN nastavit pro každý scénář. V těchto případech jsou použity následující termíny:
IIS6server1Hostitelský název počítače se spuštěnou službou IIS
domenaDomény, ke které je připojen počítač IIS6server1
appPool1Uživatelský účet v doméně domena, který se používá pro identitu fondu aplikací
appPool2Uživatelský účet v doméně domena, která se používá pro druhý identita fondu aplikací
www.test.comPrvní záhlaví hostitele webového serveru
www.test2.comDruhý hlavičky hostitele webového serveru
www.Test3.comTřetí hlavičky hostitele webového serveru
www.myIIScluster.comPlně kvalifikovaný název domény clusteru počítačů se službou IIS
www.myEXCHcluster.comPlně kvalifikovaný název domény clusteru z počítače se systémem Microsoft Exchange na serveru IIS

Nástroje Setspn.exe

Nástroje Setspn.exe umožňuje číst, upravit a odstranit vlastnost adresáře hlavního názvu služby pro účet služby Active Directory. SPN slouží k vyhledání cílový hlavní název pro spouštění služby. Nástroje SetSpn.exe také umožňuje zobrazit aktuální SPN, obnovit SPN výchozího účtu a přidání nebo odstranění doplňkové SPN.

Chcete-li získat nástroje Setspn.exe pro Microsoft Windows Server 2003, klepněte na následující číslo článku databáze Microsoft Knowledge Base:
970536 Setspn.exe podporu nástroje aktualizace pro systém Windows Server 2003

Scénář 1: Přístup aplikace serveru IIS, když byla změněna identita fondu aplikací

Je-li aplikace serveru IIS spuštěna pod účtem uživatele domény místo pod výchozí účet network service, musíte nastavit SPN HTTP služby pod účtem domény. V tomto scénáři přístupu aplikace služby IIS pomocí názvu NetBIOS serveru se spuštěnou službou IIS nebo úplný název domény serveru se spuštěnou službou IIS.

Chcete-li získat přístup k aplikaci IIS pomocí názvu NetBIOS, zadejte následující příkaz, kde NETBIOS_NAME_OF_IIS_SERVER je název NetBIOS serveru se spuštěnou službou IIS:
Setspn –S HTTP /NETBIOS_NAME_OF_IIS_SERVER doména\uživatelské_jméno
Příkaz může například vypadat následující příkaz:
Setspn –S HTTP/iis6server1 mydomain\appPool1
Chcete-li získat přístup k aplikaci IIS pomocí úplného názvu domény, použijte následující příkaz, kde FQDN_OF_IIS_SERVER je úplný název domény serveru, na kterém je spuštěna služba IIS:
Setspn –S HTTP /FQDN_OF_IIS_SERVER doména\uživatelské_jméno
Příkaz může například vypadat následující příkaz:
Setspn –S HTTP/iis6server1.mydomain.com mydomain\appPool1

Scénář 2: Přístup k webové aplikaci pomocí hlavičky hostitele

Při přístupu k webové aplikaci pomocí hlavičky hostitele, je nutné nastavit název SPN HTTP služby.

Při spuštění webové aplikace ve skupinovém rámečku Výchozí účet jako účet síťové služby, místní účet služby nebo místní systémový účet, můžete použít následující příkaz:
Setspn –A HTTP /HOST_HEADER NETBIOS_NAME_OF_IIS_SERVER
V tomto příkazu HOST_HEADER záhlaví hostitele, který zadáte v prohlížeči je okno přístup k aplikaci a NETBIOS_NAME_OF_IIS_SERVER je název NetBIOS serveru se spuštěnou službou IIS.

Příkaz aplikace může například vypadat následující příkaz:
Setspn –A HTTP/www.test.com iis6server1
Pokud spustíte aplikaci pod účtem domény, můžete použít následující příkaz:
Setspn –A HTTP /HOSTHEADER_OR_DNS_ALIAS doména\uživatelské_jméno
V tomto příkazu HOSTHEADER_OR_DNS_ALIAS je hlavička hostitele nebo alias DNS, který používáte pro přístup k webové aplikaci.

Příkaz aplikace může například vypadat jeden z následujících příkazů:
  • Setspn –A HTTP/www.test.com mydomain\appPool1
  • Setspn –A HTTP/www.test3.com mydomain\appPool2

Scénář 3: Přístup aplikace služby IIS v prostředí clusteru nebo Vyrovnávání zatížení

Při spuštění služby IIS v prostředí clusteru nebo v prostředí s vyrovnáváním zatížení, přístupu aplikací pomocí názvu clusteru, nikoli pomocí názvu uzlu. V tomto scénáři zahrnuje služby Vyrovnávání zatížení sítě. Uzel v clusteru technologie, odkazuje jeden počítač, který je členem clusteru. Ověřovací protokol v tomto scénáři použití protokolu Kerberos, musí být identita fondu aplikací v každém uzlu IIS nakonfigurován pomocí stejného uživatelského účtu domény. Chcete-li konfigurovat každý uzel služby IIS pomocí stejného uživatelského účtu domény, použijte následující příkaz:
Setspn –A HTTP /NÁZEV_CLUSTERU doména\uživatelské_jméno
Například příkaz může být jeden z následujících příkazů:
  • Setspn –A HTTP/www.myIISCluster.com mydomain\appPool1
  • Setspn –A HTTP/www.myEXCHCluster.com mydomain\appPool2

Scénář 4: Použití SQL Server pro přístup k aplikaci

Ověřit, pokud služba IIS webové aplikace vyžaduje přístup k počítači back-end se serverem SQL Server může mít SPN na serveru back-end. Webová aplikace nepracují správně, pokud je požadované názvy SPN jsou nesprávně nakonfigurovány.

Pokud počítač back-end se serverem SQL Server je spuštěn pod účtem místního systému MSSQLSvc /FQDN_OF_SQL_SERVER:port číslo portu musí být k dispozici pro název počítače. Určit SPN pro počítač se serverem SQL Server, použijte následující příkaz:
Setspn –L SQL_SERVER_COMPUTER_NAME
Nastavit hlavní název služby název počítače, který je spuštěn SQL Server, použijte následující příkaz:
Setspn –A MSSQLSvc /FQDN_OF_SQLSERVER:port SQLSERVER_COMPUTER_NAME
Pokud je počítač back-end se serverem SQL Server spuštěn pod účtem domény MSSQLSvc /FQDN_OF_SQL_SERVER:port číslo portu musí být k dispozici pro účet domény. Určit SPN účtu domény, použijte následující příkaz:
Setspn –L doména\uživatelské_jméno
Nastavit hlavní název služby název počítače, který je spuštěn SQL Server, použijte jeden z následujících příkazů:
  • Setspn –A MSSQLSvc /FQDN_OF_SQLSERVER:portFQDN_OF_SQLSERVER
  • Setspn –A MSSQLSvc /FQDN_OF_SQLSERVER:portdoména\uživatelské_jméno

Skript helper SPN

Následující ukázkový skript můžete najít SPN pro aplikace služby IIS. Tento skript lze také nalézt duplicitní názvy SPN. Chcete-li tento skript použít, postupujte takto:
  1. Klepněte na tlačítko Spustit, klepněte na tlačítko Spustit, typ Poznámkový bloka klepněte na tlačítko OK.
  2. V souboru programu Poznámkový blok vložte následující skript:
    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. Uložte soubor jako Spnhelper.vbs.
  4. Na příkazovém řádku spusťte soubor Spnhelper.vbs pomocí vhodné možnosti příkazového řádku.

    Poznámka: Chcete-li zobrazit možnosti příkazového řádku u souboru Spnhelper.vbs, zadejte následující příkaz: Spnhelper.vbs/Help na příkazovém řádku a stiskněte klávesu ENTER.

Další informace

Ověřování pomocí protokolu Kerberos může selhat při požadované názvy SPN jsou nastaveny pro účty počítačů nebo účtů domény. Je-li ověřování pomocí protokolu Kerberos se nezdaří neočekávaně, postupujte takto:
  • Ověřte, že neexistují žádné duplicitní názvy SPN pro hlavní název služby v globálním katalogu.

    Například pokud HTTP/www.test.com SPN je nastavena na myDomain\appPool1 účet a na účet myDomain\appPool2, duplicitní název SPN existuje i přesto, že názvy SPN jsou nastaveny pro různé účty. Navíc pokud HTTP/iis6server1.mydomain.com SPN je nastaven pro účet myDomain\appPool1 a HTTP/iis6server1.mydomain.com SPN souvisí také s účet počítače pro server, můžete také duplicitní název SPN. Můžete mít jeden SPN hostitel a jeden název SPN HTTP. Explicitní název SPN HTTP přepíše implicitní, který spadá pod položkou hostitele. Avšak pokud URL, že uživatel zadá souvisí s více než jeden uživatelský účet nebo s více než jeden účet počítače, máte duplicitní název SPN.
  • Ověřte, zda SPN byly replikovány do ostatních řadičů domény.

    Problémy s replikací mezi řadiči domény můžete zabránit SPN replikovány do ostatních řadičů domény. Pokud názvy SPN nejsou replikovány do ostatních řadičů domény, aplikace nemusí pracovat z některých klientských počítačů. Například pokud HTTP/www.test.com SPN je nastaven pro účet myDomain\appPool1 v řadiči domény, HTTP/www.test.com SPN nemusí být nalezen na účet myDomain\appPool1 na druhý řadič domény v případě, že hlavní název služby nebyla replikována na druhý řadič domény.

    Poznámka: Ve výchozím nastavení replikace trvá 15 minut.
  • Ověřte, zda je webový server nakonfigurován pro podporu ověřování pomocí protokolu Kerberos. Provedete to tak, ověřte, že nastavení klíče NTAuthenticationProviders v metabázi IIS nebyla změněna na NTLM. Ve výchozím nastavení je Negotiate, NTLM.
  • Ověřte, zda server nebo služba, která je delegování pověření je důvěryhodný pro delegování.
  • Ověřte, zda je účet, který je služba spuštěna v rámci důvěryhodný pro delegování.
  • Ve službě Active Directory, ověřte, zda Účet je citlivý a nelze jej delegovat zaškrtnutí políčka pro uživatele, kteří přístup k aplikaci.
  • Pokud přistupujete k aplikaci přímo ze serveru, zkontrolujte, zda Kontrola zabezpečení zpětné smyčky je-li zrušeno zaškrtnutí políčka.Další informace o tom, jak ověřit, že je zakázána kontrola zpětné smyčky klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
    896861Při procházení webu, který používá integrované ověřování a jehož hostitelem je služba IIS 5.1 nebo IIS 6, se zobrazí chyba 401.1
  • Ověřte, zda je klient klienta s podporou protokolu Kerberos. Také zkontrolujte, zda Povolit Integrované ověření systémem Windows v aplikaci Internet Explorer je povoleno nastavení. Chcete-li to provést, klepněte na tlačítko Možnosti Internetu v Nástroje nabídky, klepněte Upřesnit kartu a potom zkontrolujte, zda Povolit Integrované ověření systémem Windows je-li zaškrtnuto políčko.
  • Ověřte, zda všechny počítače, které jsou součástí procesu pomocí protokolu Kerberos, mají konzistentní překlad a připojení pomocí protokolu Kerberos vztahu důvěryhodnosti. Například ověřte, zda počítače, které se účastní procesu pomocí protokolu Kerberos ve stejné doménové struktuře, nebo jsou součástí vztahu důvěryhodnosti mezi doménovými strukturami pomocí protokolu Kerberos.
  • Ověřte, že velikost tokenu nepřekročí hodnotu, která je nastavena MaxTokenSize Vlastnost. Ověřte také, velikost požadavku nesmí překročit hodnotu, která je nastavena MaxFieldLength Vlastnost. Tyto hodnoty mohou být překročeny, pokud jsou uživatelé, kteří jsou součástí procesu Kerberos členy mnoho skupin.
    920862 Chybová zpráva při pokusu uživatele Outlook Web Access pro přístup k poštovní schránce v Exchange Server 2003: "HTTP 400 Chybný požadavek (záhlaví požadavku příliš dlouho)"
  • Ověřte, zda jsou povolena požadované bezpečnostní zásady, při konfiguraci účtů domény pro fondy aplikací. Chcete-li to provést, ověřte, zda účet domény členem následující místních zásadách zabezpečení v počítači se spuštěnou službou IIS:
    • Upravit kvóty paměti pro proces
    • Přihlášení se jako služba
    • Nahradit token úrovně procesu
  • Ověřte, zda správně pracuje ověřování Kerberos přes protokol UDP. Ve výchozím nastavení používá ověřování pomocí protokolu Kerberos UDP. Však způsobit ztrátu paketů UDP ověřování pomocí protokolu Kerberos se nezdaří. Když nastane tento problém, můžete vynutit ověřování pomocí protokolu Kerberos použití protokolu TCP. Další informace o vynucení ověřování pomocí protokolu Kerberos použití protokolu TCP naleznete klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
    244474Vynucení protokolu Kerberos použití protokolu TCP místo protokolu UDP v systému Windows Server 2003, Windows XP a Windows 2000
  • Ověřte, že se časové razítko u ověřovatele neliší o více než pět minut od časové razítko serveru. Další informace o tom, jak vyřešit rozdíly časové razítko klepněte na následující číslo článku databáze Microsoft Knowledge Base:
    232386Nelze se přihlásit, pokud datum a čas není synchronizován.
  • Ověřte, zda port TCP/UDP 88 nejsou blokovány bránou firewall nebo směrovač. Ověřování pomocí protokolu Kerberos používá ve výchozím nastavení port TCP/UDP 88.
  • Ověřte, zda je prostředí režimu domény alespoň prostředí nativního režimu systému Microsoft Windows 2000. Další informace o zjištění režimu domény navštivte následující Web společnosti Microsoft:
  • V klientském počítači zkontrolujte, zda adresa URL webové aplikace přidána pro servery, Místní intranet. Další informace o tom, jak přidat adresu URL do místní intranet klepněte na následující číslo článku databáze Microsoft Knowledge Base:
    303650Intranetový server je identifikován jako serveru v síti Internet, při použití FQDN nebo adresy IP
  • Ověřte, že každé zařízení gigabit ethernet používá nejnovější verzi ovladače. Další informace o problémech, k nimž může dojít v případě, že jsou zastaralé ovladače zařízení gigabit Ethernet klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
    326152Nelze se připojit k řadiči domény a nelze použít Zásady skupiny zařízeními Gigabit Ethernet
Odkazy
Další informace o použití ověřování pomocí protokolu Kerberos s vyrovnávaným zatížením weby navštivte následující Web společnosti Microsoft:Další informace o problémech, které se mohou vyskytnout při použití ověřování pomocí protokolu Kerberos se servery proxy klepněte na následující číslo článku databáze Microsoft Knowledge Base:
321728Aplikace Internet Explorer nepodporuje ověřování pomocí protokolu Kerberos se servery proxy
Další informace o konfiguraci služby IIS pro podporu protokolu Kerberos a protokolu NTLM pro ověřování v síti klepněte na následující číslo článku databáze Microsoft Knowledge Base:
215383Jak konfigurovat službu IIS na podporu protokolu Kerberos a protokolu NTLM pro ověřování v síti
Další informace o konfiguraci virtuálního serveru služby Windows SharePoint Services na používání ověřování pomocí protokolu Kerberos a jak přepnout z ověřování pomocí protokolu Kerberos zpět na ověřování protokolem NTLM, klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
832769Konfigurace virtuálního serveru služby Windows SharePoint Services na používání ověřování pomocí protokolu Kerberos a jak přepnout z ověřování pomocí protokolu Kerberos zpět na ověřování protokolem NTLM
Další informace o problémech, které se mohou vyskytnout při použití protokolu Kerberos pro ověřování připojení k webovém serveru, který používá nestandardní port v systému Windows XP nebo Windows Server 2003 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
908209Aplikace Internet Explorer 6 nelze použít ověřování protokolem Kerberos pro připojení k webovém serveru, který používá nestandardní port v systému Windows XP nebo Windows Server 2003

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 929650 - Poslední kontrola: 05/22/2011 14:37:00 - Revize: 7.0

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

  • kbinfo kbhowto kbmt KB929650 KbMtcs
Váš názor