Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

SPN, ınternet ınformation Services barındırılan Web uygulamalarını yapılandırırken nasıl kullanılır

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:929650
Özet
Bu makalede, hizmet asıl adı (SPN). Bu makalede ayrıca Microsoft ınternet ınformation Services (IIS), Web uygulamalarını yapılandırırken SPN kullanmayı açıklamaktadır. Bu makalede, ayrıca tümleşik Windows kimlik doğrulaması anlaşma işleminde açıklanır. Kerberos kimlik doğrulamasını ve NTLM kimlik doğrulaması arasında Negotiate Güvenlik üstbilgisi sağlar istemcilerinin seçin.

Ayrıca, bu makalede, Kerberos kimlik doğrulamasını etkinleştirmek bir SPN gerektiren genel senaryolar açıklanmaktadır. Son bölümü durumlarda Kerberos kimlik doğrulaması başarısız olabilir açıklar. Son bölümde ayrıca sorun giderme adımları sağlar.
Giriş
Önemli Bu makalede anlatılan konuları, ınternet ınformation Services (IIS) 6.0 için geçerlidir. Kernel Modu kimlik doğrulaması yapılandırma ayarı useKernelModefalse olarak ayarlayarak devre dışı bırakıldıysa konuları IIS 7.0 ve 7.5 için de geçerlidir.
Bu adım adım makalede, barındırılan Web uygulamalarını yapılandırırken tümleşik Windows kimlik doğrulaması, istemci istekleri kimlik doğrulaması için kullanıldığında, hizmet asıl adı (SPN) üzerinde IIS.IIS geçiş Negotiate Güvenlik üstbilgisi nasıl kullanılacağını açıklar. Kerberos kimlik doğrulamasını ve NTLM kimlik doğrulaması arasında Negotiate Güvenlik üstbilgisi sağlar istemcilerinin seçin. Aşağıdaki koşullardan biri doğru değilse, Kerberos kimlik doğrulaması anlaşma işlemi seçer:
  • Kimlik doğrulaması söz konusu ise istemlerinde, Kerberos kimlik doğrulaması kullanamazsınız.
  • Çağıran uygulama, Kerberos kimlik doğrulamasını kullanmak için yeterli bilgi sağlamaz.
Ağ kimlik doğrulaması için Kerberos iletişim kuralı'nı seçmek anlaşma işlemi etkinleştirmek için <a0></a0>, istemci uygulaması bir SPN, kullanıcı asıl adı (UPN) veya bir <a0>Netbıos</a0> hesabının adı <a2>hedef</a2> adı sağlamanız gerekir. Anlaşma işlemi, istemci uygulaması bir hedef adı sağlamazsa, Kerberos iletişim kuralı kullanamazsınız. Kerberos iletişim kuralı anlaşma işlemini kullanamıyorsanız, anlaşma işlemi, NTLM iletişim kuralını seçer.
Daha fazla bilgi

Kavramları

SPN tanımı

SPN, istemci bir hizmetinin bir örneğini benzersiz olarak tanımlayan bir addır. Bir ormandaki tüm bilgisayarlarda bir hizmet birden çok örneğini yüklerseniz, her hizmet örneği, kendi SPN olması gerekir. Istemciler, kimlik doğrulama için kullanabilir, birden fazla ad varsa, BIR servis örneği birden çok SPN olabilir. Örneğin, bir SPN her zaman hizmet örneği çalıştığı ana bilgisayar adını içerir. Bu nedenle, bir hizmet örneği, her adı veya diğer adını, ana bilgisayar için bir SPN kaydı.

HTTP hizmet sınıfı

HTTP hizmet sınıfı, HTTP iletişim kuralı ' farklıdır. HTTP hizmet sınıfı, HTTP iletişim kuralı hem de HTTPS iletişim kuralını kullanın. Hizmet genel hizmet sınıfını tanımlayan dize sınıftır. Bir Web hizmeti için "www" ve "ldap" için bir dizin hizmeti, iyi bilinen hizmet sınıf adları içerir. Genellikle, hizmetin sınıf adı, hizmet sınıfı için benzersiz olan herhangi bir dize olabilir. SPN sözdizimi öğeleri ayırmak için eğik çizgi (/) karakteri kullandığını unutmayın. Bu nedenle, eğik çizgi karakteri (/), bir hizmetin sınıf adı bulunamaz.

Sınıf, HOST Hizmet ve HTTP hizmeti

HOST hizmeti ana bilgisayarı gösterir. Kerberos iletişim kuralı HOST SPN ana bilgisayara erişmek için kullanır. Kerberos iletişim kuralı, bir hizmet bileti oluşturmak için ana bilgisayarda uzun süreli anahtarı kullanır.

HTTP hizmet sınıfı, HOST SPN için bir diğer ad olarak yerleşik hizmetlerden biridir. HOST SPN için ana bilgisayar hesabı ile eşleştirilir. Bu nedenle, varsayılan HTTP hizmeti sınıf'ı kullandığınızda, Kerberos iletişim kuralı bir hizmet bileti istemek için hizmet hesabı olarak bilgisayar hesabını kullanır.

Genel Senaryolar

Bu bölüm, bir SPN gerektiren senaryoları açıklanır. Ayrıca, bu bölümde, her senaryo için ayarlamak için hangi SPN belirleme gösterir. Aşağıdaki terimler bu senaryolarda kullanılır:
IIS6server1IIS çalıştıran bir bilgisayarın ana bilgisayar adı
etkialanımIIS6server1 bilgisayarın içerildiği etki alanı
appPool1Uygulama havuzu kimliği için kullanılan etkialanım etki alanındaki kullanıcı hesabı
appPool2Ikinci uygulama havuzu kimliği için kullanılan etkialanım etki alanındaki kullanıcı hesabı
www.test.comBir Web sitesi için ilk ana bilgisayar üstbilgisi
www.Test2.comBir Web sitesi için ikinci ana bilgisayar üstbilgisi
www.test3.comBir Web sitesi için üçüncü ana bilgisayar üstbilgisi
www.myIIScluster.comIIS çalıştıran bilgisayarlardan oluşan bir kümeyi tam olarak nitelenmiş etki alanı adı
www.myEXCHcluster.comMicrosoft Exchange üzerinde IIS çalıştıran bilgisayarlar, bir kümenin tam olarak nitelenmiş etki alanı adı

Setspn.exe aracını

Setspn.exe aracını okumak, değiştirmek ve bir <a0>Active Directory</a0> hizmeti hesabının SPN dizin özelliği sağlar. SPN, bir hizmet olarak çalıştırmak için bir hedef asıl adı'nı bulmak için kullanılır. SetSpn.exe aracı ayrıca geçerli SPN görüntülemek, hesabın varsayılan SPN'ler, sıfırlamak ve ekleme veya tamamlayıcı SPN silme sağlar.

Microsoft Windows Server 2003 için Setspn.exe aracını edinmek için <a0></a0>, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
970536Setspn.exe destek aracını Windows Server 2003 güncelleştirmesi

Senaryo 1: uygulama havuzu kimliği değiştirildiğinde bir IIS uygulaması Access

Bir IIS uygulaması, varsayılan ağ hizmeti hesabının altında yerine etki alanı kullanıcı hesabı altında çalıştığında, HTTP hizmeti etki alanı hesabı için SPN ayarlamanız gerekir. Bu senaryoda, IIS uygulaması, IIS çalıştıran sunucu, Netbıos adı ya da, IIS çalıştıran sunucuya FQDN'SINI kullanarak erişebilirsiniz.

IIS uygulaması üzerinde Netbıos adını kullanarak erişmek için <a0></a0>, IIS çalıştıran sunucu, Netbıos adı NETBIOS_NAME_OF_IIS_SERVER olduğu aşağıdaki komutu kullanın:
Setspn –S HTTP / NETBIOS_NAME_OF_IIS_SERVER domain\username
Örneğin, komut, aşağıdaki komutu benzeyebilir:
Setspn –S HTTP/iis6server1 mydomain\appPool1
IIS uygulaması FQDN kullanarak erişmek için <a0></a0>, IIS çalıştıran sunucunun FQDN FQDN_OF_IIS_SERVER olduğu aşağıdaki komutu kullanın:
Setspn –S HTTP / FQDN_OF_IIS_SERVER domain\username
Örneğin, komut, aşağıdaki komutu benzeyebilir:
Setspn –S HTTP/iis6server1.mydomain.com mydomain\appPool1

Senaryo 2: ana bilgisayar üstbilgisi'ni kullanarak bir Web uygulaması Access...

Ana bilgisayar üstbilgisi'ni kullanarak bir Web uygulaması eriştiğinizde, HTTP hizmeti için bir SPN ayarlamanız gerekir.

Bir varsayılan hesabı ağ hizmeti hesabı, yerel hizmet hesabı veya yerel sistem hesabı altında bir Web uygulamasını çalıştırdığınızda, aşağıdaki komutu kullanabilirsiniz:
Setspn –A HTTP / HOST_HEADER NETBIOS_NAME_OF_IIS_SERVER
Bu komutta, HOST_HEADER uygulamaya erişim için bir tarayıcı penceresinde yazın ve NETBIOS_NAME_OF_IIS_SERVER Netbıos adıdır, IIS çalıştıran sunucunun ana bilgisayar üstbilgisi ' dir.

Örneğin, uygulamanın komut, aşağıdaki komutu benzeyebilir:
Setspn –A HTTP/www.test.com iis6server1
Bir etki alanı hesabı altında uygulama çalıştırıyorsanız, aşağıdaki komutu kullanabilirsiniz:
Setspn –A HTTP / HOSTHEADER_OR_DNS_ALIAS domain\username
Bu komutta, HOSTHEADER_OR_DNS_ALIAS ana bilgisayar üstbilgisi veya bir Web uygulamasını erişmek için kullanacağınız DNS diğer adı var.

Örneğin, uygulamanın komut aşağıdaki komutlardan birini benzeyebilir:
  • Setspn –A HTTP/www.test.com mydomain\appPool1
  • Setspn –A HTTP/www.test3.com mydomain\appPool2

Senaryo 3: IIS uygulama kümelenmiş veya yükü dengelenmiş bir ortamda Access

IIS yükü dengelenmiş bir ortamda veya kümelenmiş ortamda çalıştırdığınızda, uygulamalar bir düğüm adı yerine <a2>Küme</a2> adını kullanarak erişebilirsiniz. Bu senaryo, ağ yük dengelemesini içerir. Küme teknolojisi, bir düğüm kümenin üyesi olduğu bir bilgisayara başvuruyor. Bu senaryoya göre kimlik doğrulama protokolü olarak Kerberos kullanmak için <a0></a0>, her <a0>IIS</a0> düğümündeki uygulama havuzu kimliği aynı etki alanı kullanıcı hesabı kullanmak üzere yapılandırılmış olmalıdır. Her IIS düğümde, aynı etki alanı kullanıcı hesabı kullanmak üzere yapılandırmak için <a0></a0>, aşağıdaki komutu kullanın:
Setspn –A HTTP / CLUSTER_NAME etkialanı\kullanıcıadı
Örneğin, komut aşağıdaki komutlardan birini benzeyebilir:
  • Setspn –A HTTP/www.myIISCluster.com mydomain\appPool1
  • Setspn –A HTTP/www.myEXCHCluster.com mydomain\appPool2

Senaryo 4: Kullan SQL Server bir uygulamaya erişmek için

Arka uç sunucusunda SPN IIS Web uygulama SQL Server çalıştıran bir arka uç bilgisayarda erişmesi durumunda doğrulanması gerekir. Gerekli SPN yanlış yapılandırılırsa, Web uygulama düzgün çalışmayabilir.

MSSQLSvc yerel sistem hesabı altında çalışan SQL Server çalıştıran bir arka uç bilgisayarda / FQDN_OF_SQL_SERVER:port bağlantı noktası için bir bilgisayar adı bulunmalıdır. SQL Server çalıştıran bir bilgisayar için SPN'ler belirlemek için aşağıdaki komutu kullanın:
Setspn –L SQL_SERVER_COMPUTER_NAME
SQL Server çalıştıran bir bilgisayar adı için bir SPN ayarlamak için aşağıdaki komutu kullanın:
Setspn –A MSSQLSvc / FQDN_OF_SQLSERVER:port SQLSERVER_COMPUTER_NAME
MSSQLSvc bir etki alanı hesabı altında çalışan SQL Server çalıştıran bir arka uç bilgisayar / etki alanı hesabını FQDN_OF_SQL_SERVER:port bağlantı noktası bulunmalıdır. Etki alanı hesabı için SPN belirlemek için aşağıdaki komutu kullanın:
Setspn –L etkialanı\kullanıcıadı
SQL Server çalıştıran bir bilgisayar adı için bir SPN ayarlamak için aşağıdaki komutlardan birini kullanın:
  • Setspn –A MSSQLSvc / FQDN_OF_SQLSERVER:portFQDN_OF_SQLSERVER
  • Setspn –A MSSQLSvc / FQDN_OF_SQLSERVER:portdomain\username

SPN yardımcı komut dosyası

Aşağıdaki örnek komut dosyası, bir IIS uygulaması için SPN bulmak için kullanabilirsiniz. Bu komut, yinelenen bir SPN bulmak için de kullanabilirsiniz. Bu komut dosyasını kullanmak için aşağıdaki adımları izleyin:
  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, Not yazın ve Tamam ' ı tıklatın.
  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. Dosyayı Spnhelper.vbs kaydedin.
  4. Bir komut isteminde, uygun komut satırı seçeneğini kullanarak Spnhelper.vbs dosyasını çalıştırın.

    Not Spnhelper.vbs dosya için komut satırı seçeneklerini görüntülemek için <a0></a0>, Spnhelper.vbs/help komut istemine yazın ve ENTER tuşuna basın.

Ek bir dikkat edilecek noktalar

Gerekli SPN için bilgisayar hesaplarına veya etki alanı hesapları için ayarlandığında, Kerberos kimlik doğrulaması başarısız olabilir. Kerberos kimlik doğrulaması beklenmedik biçimde başarısız olursa, aşağıdakileri yapın:
  • Hiçbir yinelenen bir SPN için bir SPN genel kataloğa bulunduğunu doğrulayın.

    Örneğin, HTTP/www.test.com SPN myDomain\appPool1 hesabının ve myDomain\appPool2 hesabının ayarlı ise, yinelenen bir SPN SPN farklı hesapları için ayarlanmış olsa bile bulunmaktadır. Ayrıca, HTTP/iis6server1.mydomain.com SPN myDomain\appPool1 hesabı için ayarlanır ve bu HTTP/iis6server1.mydomain.com SPN de sunucu için bilgisayar hesabı ile ilişkili ise, de yinelenen bir SPN vardır. Bir HOST SPN ve bir HTTP SPN olabilir. Açık HTTP SPN altında HOST giriş kapsamında örtülü bir geçersiz kılar. Ancak, kullanıcının yazdığı veya birden çok bilgisayar hesabını birden çok kullanıcı hesabı ile ilişkili olduğundan bu URL, sahip, yinelenen bir SPN.
  • SPN diğer etki alanı denetleyicilerine çoğaltıldığını doğrulayın.

    Etki alanı denetleyicileri arasında çoğaltma sorunlarını SPN diğer etki alanı denetleyicilerinin çoğaltılmasını engeller. SPN diğer etki alanı denetleyicilerine çoğaltma, uygulama, bazı istemci bilgisayarlardan çalışmayabilir. HTTP/www.test.com SPN myDomain\appPool1 hesabının bir etki alanı denetleyicisinde ayarlı ise, SPN ikinci etki alanı denetleyicisine çoğaltılan, örneğin HTTP/www.test.com SPN ikinci bir etki alanı denetleyicisinde myDomain\appPool1 hesabının bulunamayabilir.

    Not Varsayılan olarak, çoğaltma 15 dakika sürer.
  • Web sunucusu, Kerberos kimlik doğrulamasını desteklemek üzere yapılandırılmış olduğunu doğrulayın. Bunu yapmak için <a0></a0>, IIS metatabanındaki <a2>NTAuthenticationProviders</a2> anahtarının ayarı NTLM olarak değiştirilmedi'i doğrulayın. Varsayılan ayar, Negotiate, NTLM olur.
  • Sunucu veya hizmet kimlik bilgileri için temsilci seçme temsilci seçme için güvenilir olduğundan emin olun.
  • Hizmetin altında çalıştığı hesap, temsilci seçme için güvenilir olduğundan emin olun.
  • Active Directory'de Account duyarlı ve temsilci seçilemez onay kutusunu uygulama erişen kullanıcılar için işaretlenmemiş olduğunu doğrulayın.
  • Doğrudan bu sunucudan uygulama erişiyorsanız, Geridöngü güvenlik denetimi onay kutusunun temizlenmiş olduğunu doğrulayın.Geri döngü denetimi devre dışı olduğunu doğrulama hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    896861Tümleşik Kimlik Doğrulaması'nı kullanan ve IIS 5.1 veya IIS 6 üzerinde barındırılan bir Web sitesine gözatıldığında, 401.1 hatası alınıyor
  • Istemci, Kerberos'un etkinleştirilmiş bir istemci olduğundan emin olun. Ayrıca, Enable Windows tümleşik kimlik doğrulama ayarı, ınternet Explorer'ın etkinleştirilmiş olduğunu doğrulayın. Bunu yapmak için <a0></a0>, Araçlar menüsünden Internet seçenekleri ' ni tıklatın, Gelişmiş sekmesini tıklatın ve sonra Enable Windows'un tümleşik kimlik doğrulaması onay kutusunun seçili olduğundan emin olun.
  • <a0>Kerberos</a0> işleminin bir parçası olan tüm bilgisayarları tutarlı bir ad çözümlemesi olan ve Kerberos güveni ile bağlı olduğunu doğrulayın. Örneğin, Kerberos işleminde söz konusu bilgisayarlar aynı ormanda olduğu veya bir ormanlar arası Kerberos güvenini bir parçası olan doğrulayın.
  • Simge boyutu MaxTokenSize özelliği için ayarlanan bir değeri aşan doğrulayın. Ayrıca istek boyutu MaxFieldLength özelliği için ayarlanan bir değeri aşan doğrulayın. Grup üyeleri <a0>Kerberos</a0> işleminin bir parçası olan kullanıcılar, bu değerler aşılmış.
    920862Bir Outlook Web Access kullanıcısının Exchange Server 2003'te bir posta kutusuna erişmeye çalıştığında hata iletisi: “ HTTP 400 Hatalı istek (istek başlığı çok uzun) ”
  • Gerekli güvenlik ilkeleri, etki alanı hesapları için uygulama havuzlarını yapılandırırken etkinleştirildiğinden emin olun. Bunu yapmak için etki alanı hesabının bir üyesi, IIS çalıştıran bilgisayarda aşağıdaki yerel güvenlik ilkeleri olduğunu doğrulayın:
    • Bir işlem için bellek kotalarını ayarlama
    • Hizmet olarak oturum açma
    • Işlem düzeyi simgesini değiştir
  • Kerberos kimlik doğrulaması UDP üzerinden düzgün çalıştığını doğrulayın. Kerberos kimlik doğrulaması, varsayılan olarak UDP kullanır. Ancak, UDP paketlerinin kaybı, Kerberos kimlik doğrulaması başarısız olmasına neden olabilir. Bu sorun oluştuğunda, Kerberos kimlik doğrulaması, TCP kullanmaya zorlayabilirsiniz. Kerberos kimlik doğrulaması, TCP kullanmaya zorlama hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    244474Windows Server 2003, Windows XP ve Windows 2000'de Kerberos nasıl UDP yerine TCP kullanmaya zorlanır
  • Kimlik doğrulayıcısının zaman damgası beş dakikadan fazla bir süre gelen zaman damgası, sunucu tarafından farklı değil olduğunu doğrulayın. Zaman damgası farklılıkları çözümleme hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    232386Tarih ve saat eşitlenmemiş, oturum açamıyor
  • TCP/UDP bağlantı noktası 88, güvenlik duvarı veya yönlendirici tarafından engellenmeyen doğrulayın. Varsayılan olarak, TCP/UDP bağlantı noktası 88 Kerberos kimlik doğrulamasını kullanır.
  • Etki alanı mod ortamında en az Microsoft Windows 2000 yerel mod ortamında olduğunu doğrulayın. Etki alanı modunu belirleme hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
  • Istemci üzerinde yerel intranet siteleri için Web uygulamasını URL'SINI eklendiğini doğrulayın. Yerel intranet için bir URL ekleme hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    303650FQDN veya IP adresi kullandığınızda Intranet sitesi bir Internet sitesi olarak tanımlanıyor
  • Her gigabit ethernet aygıt sürücüsünün en son sürümünü kullandığını doğrulayın. Gigabit Ethernet aygıtlarının sürücülerini eski olduğunda oluşabilecek sorunlar hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    326152Gigabit Ethernet aygıtlarıyla etki alanı denetleyicisine bağlanılamıyor ve Grup İlkesi uygulanamıyor
Referanslar
Yükü dengelenmiş Web siteleriyle Kerberos kimlik doğrulamasını kullanma hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:Proxy sunucularıyla Kerberos kimlik doğrulaması'nı kullandığınızda oluşabilecek sorunlar hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
321728Internet Explorer proxy sunucularda Kerberos kimlik doğrulamasını desteklemiyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
IIS, Kerberos iletişim kuralı hem de NTLM iletişim kuralı için ağ kimlik doğrulamasını destekleyecek şekilde yapılandırma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
215383IIS, Kerberos iletişim kuralı hem de NTLM iletişim kuralı için ağ kimlik doğrulamasını destekleyecek şekilde yapılandırma hakkında
Kerberos kimlik doğrulaması ve nasıl yeniden NTLM kimlik doğrulaması için Kerberos kimlik doğrulamasını kullanmak için bir Windows SharePoint Services sanal sunucusunu yapılandırma hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
832769Windows SharePoint Services sanal sunucusunu Kerberos kimlik doğrulaması kullanacak biçimde yapılandırma ve Kerberos kimlik doğrulamasından NTLM kimlik doğrulamasına dönme
Windows Server 2003 veya Windows XP'deki Standart olmayan bir bağlantı noktasını kullanan bir Web sunucusuna bağlanmak için Kerberos kimlik doğrulama protokolünü kullandığınızda oluşabilecek sorunlar hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
908209Internet Explorer 6, Windows Server 2003 veya Windows XP'deki Standart olmayan bir bağlantı noktasını kullanan bir Web sunucusuna bağlanmak için Kerberos kimlik doğrulama iletişim kuralı kullanamazsınız

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 929650 - Son İnceleme: 05/12/2010 22:02:25 - Düzeltme: 5.0

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

  • kbmt kbinfo kbhowto KB929650 KbMttr
Geri bildirim
m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">