You are on page 1of 7

tilizar08/08/12

los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…

Cómo utilizar el SPN al configurar las aplicaciones Web


que se alojan en servicios de Internet Information Server
Id. de artículo: 929650 - Ver los productos a los que se aplica este artículo

Advertencia: Artículo de Traducción Automática, vea la exención de responsabilidad.


Haga clic aquí para ver en paralelo el artículo de traducción automática y el artículo original en inglés.

Resumen

Este artículo describe los nombres principales de servicio (SPN). Este artículo también describe cómo utilizar el SPN al
configurar las aplicaciones Web alojadas en Microsoft Internet Information Services (IIS). En este artículo también
describe el proceso de negociación en la autenticación integrada de Windows. El Negociar seguridad encabezado
permite los clientes seleccionar entre la autenticación Kerberos y autenticación NTLM.

Además, este artículo describe los escenarios comunes que requieren un SPN habilitar la autenticación Kerberos. La
última sección describe situaciones en que puede fallar la autenticación Kerberos. La última sección también
proporciona pasos para solucionar problemas.

INTRODUCCIÓN

Importante Los temas que se tratan en este artículo se aplican a los servicios de Internet Information Server
(IIS) 6.0. Los temas se aplican también a IIS 7.0 y 7.5 si se deshabilita la autenticación de modo de núcleo
estableciendo el valor de configuración useKernelMode en false.

En este artículo paso a paso se describe cómo utilizar los nombres principales de servicio (SPN) cuando se configuran
las aplicaciones Web que se alojan en IIS.IIS pasa el encabezado de seguridad Negotiate al utilizar la autenticación
integrada de Windows para autenticar las solicitudes de cliente. El Negociar seguridad encabezado permite los
clientes seleccionar entre la autenticación Kerberos y autenticación NTLM. El proceso de negociación selecciona la
autenticación Kerberos a menos que una de las siguientes condiciones es verdadera:

Uno de los sistemas implicados en la autenticación no puede utilizar la autenticación Kerberos.


La aplicación de llamada no proporciona suficiente información para utilizar la autenticación Kerberos.

Para habilitar el proceso de negociación seleccionar el protocolo Kerberos para la autenticación de red, la aplicación
cliente debe proporcionar un SPN, un nombre principal de usuario (UPN) o un nombre de cuenta de NetBIOS como el
nombre de destino. Si la aplicación cliente no proporciona un nombre de destino, el proceso de negociación no
puede utilizar el protocolo Kerberos. Si el proceso de negociación no puede utilizar el protocolo Kerberos, el proceso
de negociación selecciona el protocolo NTLM.

Más información

Conceptos
Definición de un SPN

Un SPN es el nombre por el que un cliente identifica una instancia de un servicio. Si instala varias instancias de un
servicio en los equipos de un bosque, cada instancia de servicio debe tener su propio SPN. Una instancia de servicio
determinado puede tener varios SPN si hay varios nombres que los clientes pueden utilizar para la autenticación. Por
ejemplo, un SPN siempre incluye el nombre del equipo host donde se ejecuta la instancia de servicio. Por lo tanto, una
instancia de servicio podría registrar un SPN para cada nombre o alias de su host.

La clase de servicio HTTP

La clase de servicio HTTP difiere el protocolo HTTP. El protocolo HTTP y el protocolo HTTPS utilizan la clase de servicio
HTTP. La clase de servicio es la cadena que identifica la clase general de servicio. Los nombres de clase de servicio
conocido incluyen "www" para un servicio Web y "ldap" para un servicio de directorio. Por lo general, el nombre de
clase de servicio puede ser cualquier cadena que es exclusiva de la clase de servicio. Tenga en cuenta que la sintaxis
SPN utiliza un carácter de barra diagonal (/) para separar elementos. Por lo tanto, no puede aparecer el carácter de
support.microsoft.com/kb/929650/es 1/7
tilizar08/08/12
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
SPN utiliza un carácter de barra diagonal (/) para separar elementos. Por lo tanto, no puede aparecer el carácter de
barra diagonal (/) en un nombre de clase de servicio.

El servicio de HOST y el HTTP de clase de servicio

El servicio de HOST representa el equipo host. El protocolo Kerberos utiliza el SPN de HOST para acceder el equipo
host. El protocolo Kerberos utiliza la clave a largo plazo en el equipo host para crear un vale de servicio.

La clase de servicio HTTP es uno de los servicios integrados que actúan como un alias para el SPN de HOST. El SPN de
HOST se asigna a la cuenta del equipo host. Por lo tanto, cuando se utiliza la clase de servicio HTTP predeterminado,
el protocolo de Kerberos utiliza la cuenta de equipo como cuenta de servicio para solicitar un vale de servicio.

Escenarios comunes
Esta sección describe los escenarios que pueden requerir un SPN. Además, esta sección muestra cómo determinar qué
SPN para establecer para cada escenario. Los siguientes términos se utilizan en estos escenarios:
IIS6server1 El nombre de host del equipo que ejecuta IIS

midominio El dominio al que está unido el equipo de IIS6server1

appPool1 La cuenta de usuario en el dominio midominio que se utiliza para la identidad del grupo

appPool2 La cuenta de usuario en el dominio midominio que se utiliza para la identidad del segunda
grupo

www.prueba.com El primer encabezado de host para un sitio Web

www.Test2.com El segundo encabezado de host para un sitio Web

www.test3.com El encabezado de host de tercero para un sitio Web

www.myIIScluster.com El nombre de dominio completo de un clúster de equipos que ejecutan IIS

www.myEXCHcluster.com El nombre de dominio completo de un clúster de equipos que ejecutan Microsoft


Exchange en IIS

La herramienta Setspn.exe

La herramienta Setspn.exe permite leer, modificar y eliminar la propiedad de directorio SPN para una cuenta de
servicio de Active Directory. Los SPN se utilizan para buscar un nombre principal de destino para ejecutar un servicio.
La herramienta SetSpn.exe, también puede ver los SPN actuales, restablecer los SPN de la cuenta predeterminada y
agregar o eliminar SPN complementarios.

Para obtener la herramienta Setspn.exe para Microsoft Windows Server 2003, haga clic en el número de artículo
siguiente para verlo en Microsoft Knowledge Base:
970536 (http://support.microsoft.com/kb/970536/) Actualizada con compatibilidad con la herramienta Setspn.exe para
Windows Server 2003

Escenario 1: Obtener acceso a una aplicación IIS cuando se han modificado la identidad del grupo

Cuando una aplicación IIS se ejecuta bajo una cuenta de usuario de dominio en lugar de en la cuenta de servicio de
red predeterminada, debe establecer el SPN del servicio HTTP en la cuenta de dominio. En este escenario, tener
acceso a la aplicación IIS utilizando el nombre NetBIOS del servidor que ejecuta IIS o el FQDN del servidor que ejecuta
IIS.

Para acceder a la aplicación IIS utilizando el nombre NetBIOS, utilice el comando siguiente, donde
NETBIOS_NAME_OF_IIS_SERVER es el nombre NetBIOS del servidor que ejecuta IIS:
Setspn – s HTTP /NETBIOS_NAME_OF_IIS_SERVER domain\username

Por ejemplo, el comando puede ser similar al comando siguiente:


Setspn – s HTTP/iis6server1 mydomain\appPool1

Para acceder a la aplicación IIS utilizando el nombre completo, utilice el comando siguiente, donde
FQDN_OF_IIS_SERVER es el FQDN del servidor que ejecuta IIS:
Setspn – s HTTP /FQDN_OF_IIS_SERVER domain\username

Por ejemplo, el comando puede ser similar al comando siguiente:


Setspn – s HTTP/iis6server1.mydomain.com mydomain\appPool1

Escenario 2: Obtener acceso a una aplicación Web utilizando un encabezado de host

Cuando tiene acceso a una aplicación Web utilizando un encabezado de host, debe establecer un SPN para el servicio
HTTP.

Al ejecutar la aplicación Web en una cuenta predeterminada como la cuenta de servicio de red, la cuenta servicio local
o la cuenta sistema local, puede utilizar el comando siguiente:
Setspn –A HTTP /HOST_HEADER NETBIOS_NAME_OF_IIS_SERVER

En este comando, HOST_HEADER es el encabezado de host que escribe en una ventana del explorador para tener
support.microsoft.com/kb/929650/es 2/7
tilizar08/08/12
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
En este comando, HOST_HEADER es el encabezado de host que escribe en una ventana del explorador para tener
acceso a la aplicación y NETBIOS_NAME_OF_IIS_SERVER es el nombre NetBIOS del servidor que ejecuta IIS.

Por ejemplo, el comando de la aplicación puede ser similar al comando siguiente:


Setspn –A HTTP/www.test.com iis6server1

Si ejecuta la aplicación sometida a una cuenta de dominio, puede utilizar el comando siguiente:
Setspn –A HTTP /HOSTHEADER_OR_DNS_ALIAS domain\username

En este comando, HOSTHEADER_OR_DNS_ALIAS es el encabezado de host o el alias DNS que se utiliza para tener
acceso a la aplicación Web.

Por ejemplo, el comando de la aplicación puede ser similar a uno de los siguientes comandos:

Setspn –A HTTP/www.test.com mydomain\appPool1


Setspn –A HTTP/www.test3.com mydomain\appPool2

Escenario 3: Tener acceso a una aplicación de IIS en un entorno agrupado o de equilibrio de carga

Cuando se ejecuta IIS en un entorno agrupado o en un entorno con equilibrio de carga, acceso a las aplicaciones
utilizando el nombre del clúster en lugar de un nombre de nodo. Este escenario incluye el equilibrio de carga de red.
En la tecnología de clúster, un nodo hace referencia a un equipo que es miembro del clúster. Para utilizar Kerberos
como protocolo de autenticación en este escenario, la identidad del grupo en cada nodo IIS debe configurarse para
utilizar la misma cuenta de usuario de dominio. Para configurar cada nodo IIS para utilizar la misma cuenta de usuario
de dominio, utilice el comando siguiente:
Setspn –A HTTP /CLUSTER_NAME dominio\nombre de usuario

Por ejemplo, el comando puede ser similar a uno de los siguientes comandos:

Setspn –A HTTP/www.myIISCluster.com mydomain\appPool1


Setspn –A HTTP/www.myEXCHCluster.com mydomain\appPool2

Escenario 4: Usar SQL Server para tener acceso a una aplicación

Los SPN en el servidor back-end que tenga que comprobar si la aplicación Web de IIS requiere acceso a un equipo de
back-end que se está ejecutando SQL Server. La aplicación Web no funcionen correctamente si los SPN necesarios no
están configurados correctamente.

Si el equipo back-end que ejecuta SQL Server se está ejecutando bajo la cuenta de sistema local, el MSSQLSvc
/FQDN_OF_SQL_SERVER:port número de puerto debe estar disponible para el nombre del equipo. Utilice el comando
siguiente para determinar los SPN para el equipo que ejecuta SQL Server:
Setspn – l SQL_SERVER_COMPUTER_NAME

Utilice el siguiente comando para establecer el SPN para el nombre del equipo que ejecuta SQL Server:
Setspn –A MSSQLSvc /FQDN_OF_SQLSERVER:port SQLSERVER_COMPUTER_NAME

Si el equipo back-end que ejecuta SQL Server se está ejecutando bajo una cuenta de dominio, el MSSQLSvc
/FQDN_OF_SQL_SERVER:port número de puerto debe estar disponible para la cuenta de dominio. Utilice el comando
siguiente para determinar los SPN para la cuenta de dominio:
Dominio\nombre de usuario de Setspn – l

Para establecer el SPN para el nombre del equipo que ejecuta SQL Server, utilice uno de los siguientes comandos:

Setspn –A MSSQLSvc /FQDN_OF_SQLSERVER:portFQDN_OF_SQLSERVER


Setspn –A MSSQLSvc /FQDN_OF_SQLSERVER:portdomain\username

La secuencia de comandos SPN auxiliar

Puede utilizar la siguiente secuencia de comandos para buscar los SPN para una aplicación IIS. También puede utilizar
esta secuencia de comandos para buscar los SPN duplicados. Para utilizar esta secuencia de comandos, siga estos
pasos:

1. Haga clic en Inicio, haga clic en Ejecutar, escriba Notepady, a continuación, haga clic en Aceptar.
2. En el archivo de Bloc de notas, pegue el siguiente script:
Dim argSPN, argUser, argComputer, spnToSearch, objCategory, strFilter, searchCategory,
domainInput Function Help() Dim strMessage strMessage = 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.Quit End Function Function 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 if End Function Function
support.microsoft.com/kb/929650/es 3/7
tilizar08/08/12
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
split(argUser,"\")(0) argUser = split(argUser,"\")(1) end if End Function Function
resetValues() spnToSearch = "" objCategory = "" strFilter = "" End Function Function
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 & "/" & tempStr End Function Function
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
Function Function isSPNInputValid(spnIN) isSPNInputValid = "" If instr(spnIN,"/")=0 Then
Exit Function If instr(spnIN,"*")>0 Then Exit Function isSPNInputValid = spnIN End Function
Function 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 Function Function
getPingResult(hostName,errorMessage) 'On Error Resume Next getPingResult = "" 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 = hostName Exit Function 'If Err Then getPingResult =
hostName End Function Function 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.Message End Function Function
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
support.microsoft.com/kb/929650/es 4/7
tilizar08/08/12
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
";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.Close End Function
Function 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 Select End Function call Main() '

3. Guarde el archivo como Spnhelper.vbs.


4. En el símbolo del sistema, ejecute el archivo de Spnhelper.vbs con la opción de línea de comandos adecuada.

Nota Para ver las opciones de línea de comandos para el archivo Spnhelper.vbs, escriba Spnhelper.vbs/help
en el símbolo y, a continuación, presione ENTRAR.

Consideraciones adicionales

La autenticación Kerberos puede fallar cuando se establecen los SPN necesarios para las cuentas de equipo o para las
cuentas de dominio. Si la autenticación Kerberos produce un error imprevisto, haga lo siguiente:

Compruebe que ningún SPN duplicados existen en el catálogo global para un SPN.

Por ejemplo, si el SPN de HTTP/www.test.com se establece para la cuenta de myDomain\appPool1 y para la


cuenta de myDomain\appPool2, existe un SPN duplicado, aunque los SPN se establecen para diferentes
cuentas. Además, si se establece el SPN de HTTP/iis6server1.mydomain.com para la cuenta de
myDomain\appPool1, y el SPN de HTTP/iis6server1.mydomain.com también está asociado con la cuenta de
equipo para el servidor, tiene también un SPN duplicado. Puede tener un SPN de HOST y un SPN de HTTP. El
SPN de HTTP explícito anula una implícita que cubre la entrada de HOST. Sin embargo, si la dirección URL que
escribe el usuario está asociado con más de una cuenta de usuario o con más de una cuenta de equipo, tiene
un SPN duplicado.
Compruebe que los SPN se han replicado en otros controladores de dominio.

Problemas de replicación entre controladores de dominio pueden impedir que los SPN se replican en otros
controladores de dominio. Cuando los SPN no se replican en los demás controladores de dominio, la
aplicación puede no funcionar en algunos equipos cliente. Por ejemplo, si se establece el SPN de
HTTP/www.test.com de la cuenta de myDomain\appPool1 en un controlador de dominio, el SPN de
HTTP/www.test.com puede no encontrarse para la cuenta de myDomain\appPool1 en un segundo controlador
support.microsoft.com/kb/929650/es 5/7
tilizar08/08/12
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
HTTP/www.test.com puede no encontrarse para la cuenta de myDomain\appPool1 en un segundo controlador
de dominio si no se ha replicado el SPN en el segundo controlador de dominio.

Nota De forma predeterminada, la replicación tarda 15 minutos.


Compruebe que el servidor Web está configurado para admitir la autenticación Kerberos. Para ello, compruebe
la configuración de la clave de NTAuthenticationProviders en la metabase de IIS no se cambió a NTLM. El valor
predeterminado es Negotiate, NTLM.
Compruebe que el servidor o servicio que delega las credenciales se confía para delegación.
Compruebe que la cuenta de que se ejecuta el servicio es de confianza para la delegación.
En Active Directory, compruebe que está desactivada la casilla de verificación de cuenta es importante y no se
puede delegar para tener acceso a la aplicación.
Si tiene acceso a la aplicación directamente desde el servidor, compruebe que está desactivada la casilla de
Verificación de seguridad de bucle invertido . Para obtener más información acerca de cómo comprobar que
la comprobación de bucle invertido está deshabilitada, haga clic en el número de artículo siguiente para verlo
en Microsoft Knowledge Base:
896861 (http://support.microsoft.com/kb/896861/) Recibe un error 401.1 cuando explora un sitio Web que
utiliza la autenticación integrada y está alojado en IIS 5.1 o IIS 6

Compruebe que el cliente es un cliente habilitado para Kerberos. Además, compruebe que la opción de
Habilitar la autenticación integrada de Windows está habilitada en Internet Explorer. Para ello, haga clic en
Opciones de Internet en el menú Herramientas , haga clic en la ficha Opciones avanzadas y asegúrese de que
está activada la casilla de verificación Habilitar la autenticación integrada de Windows ..
Compruebe que todos los equipos que forman parte del proceso de Kerberos tienen la resolución de nombres
coherente y que están conectados mediante confianza Kerberos. Por ejemplo, compruebe que los equipos que
participan en el proceso de Kerberos están en el mismo bosque o que forman parte de una confianza de
Kerberos entre bosques.
Compruebe que el tamaño de símbolo (token) no supera el valor establecido para la propiedad MaxTokenSize
. Además, compruebe que el tamaño de la solicitud no supera el valor establecido para la propiedad
MaxFieldLength . Estos valores se pueden superar si los usuarios que son parte del proceso de Kerberos son
miembros de muchos grupos.
920862 (http://support.microsoft.com/kb/920862/) Mensaje de error cuando un usuario de Outlook Web
Access intenta obtener acceso a un buzón en Exchange Server 2003: "HTTP 400 Solicitud incorrecta
(encabezado de solicitud demasiado larga)"

Compruebe que las directivas de seguridad necesarias están habilitadas al configurar cuentas de dominio de
grupos de aplicaciones. Para ello, compruebe que la cuenta de dominio es un miembro de las siguientes
directivas de seguridad local en el equipo que ejecuta IIS:

Ajustar las cuotas de memoria para un proceso


Iniciar sesión como un servicio
Reemplazar un token de nivel de proceso

Compruebe que la autenticación Kerberos está funcionando correctamente a través de UDP. De forma
predeterminada, la autenticación Kerberos utiliza UDP. Sin embargo, la pérdida de paquetes UDP puede causar
un error en la autenticación de Kerberos. Cuando se produce este problema, puede forzar la autenticación
Kerberos use TCP. Para obtener más información acerca de cómo forzar la autenticación de Kerberos use TCP,
haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
244474 (http://support.microsoft.com/kb/244474/) Cómo hacer que Kerberos use TCP en lugar de UDP en
Windows Server 2003, en Windows XP y en Windows 2000

Compruebe que la marca de tiempo el autenticador no difiera en más de cinco minutos desde la marca de
tiempo del servidor. Para obtener más información acerca de cómo resolver las diferencias de marca de hora,
haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
232386 (http://support.microsoft.com/kb/232386/) No puede iniciar sesión si no se sincronizan la hora y fecha

Compruebe que el puerto TCP/UDP 88 no está bloqueado por un firewall o un enrutador. De forma
predeterminada, la autenticación Kerberos utiliza el puerto TCP/UDP 88.
Compruebe que el entorno de modo de dominio es al menos un entorno de modo nativo de Microsoft
Windows 2000. Para obtener más información acerca de cómo determinar el modo de dominio, visite el
siguiente sitio Web de Microsoft:
http://technet2.Microsoft.com/WindowsServer/en/Library/11b2d3d3-980c-4b64-9ed3-
51778f1fe5771033.mspx?mfr=true (http://technet2.microsoft.com/windowsserver/en/library/11b2d3d3-980c-4b64-
9ed3-51778f1fe5771033.mspx?mfr=true)

En el cliente, compruebe que la dirección URL de la aplicación Web se agrega a los sitios de intranet local. Para
obtener más información acerca de cómo agregar una dirección URL a la intranet local, haga clic en el número
de artículo siguiente para verlo en Microsoft Knowledge Base:
303650 (http://support.microsoft.com/kb/303650/) Sitio de intranet se identifica como un sitio de Internet
cuando se utiliza un FQDN o una dirección IP

Compruebe que cada dispositivo de ethernet gigabit es utilizando la versión más reciente del controlador. Para
obtener más información acerca de los problemas que pueden surgir cuando los controladores de dispositivos
de gigabit Ethernet están anticuados, haga clic en el número de artículo siguiente para verlo en Microsoft
Knowledge Base:
326152 (http://support.microsoft.com/kb/326152/) No se puede conectar al controlador de dominio y no se
puede aplicar la directiva de grupo con dispositivos Gigabit Ethernet

REFERENCIAS
support.microsoft.com/kb/929650/es 6/7
tilizar08/08/12
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
REFERENCIAS
Para obtener más información acerca de cómo utilizar la autenticación Kerberos con sitios de Web con equilibrio de
carga, visite el siguiente sitio Web de Microsoft:
http://technet.Microsoft.com/en-us/library/cc757299.aspx (http://technet.microsoft.com/en-us/library/cc757299.aspx)

Para obtener más información acerca de los problemas que pueden producirse al utilizar la autenticación Kerberos
con servidores proxy, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
321728 (http://support.microsoft.com/kb/321728/) Internet Explorer no admite la autenticación de Kerberos con
servidores proxy

Para obtener más información acerca de cómo configurar IIS para que admita el protocolo Kerberos y el protocolo
NTLM para la autenticación de red, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge
Base:
215383 (http://support.microsoft.com/kb/215383/) Cómo configurar IIS para que admita el protocolo Kerberos y el
protocolo NTLM para la autenticación de red

Para obtener más información acerca de cómo configurar un servidor virtual de Windows SharePoint Services utilizar la
autenticación Kerberos y cómo cambiar de la autenticación Kerberos a la autenticación NTLM, haga clic en el número
de artículo siguiente para verlo en Microsoft Knowledge Base:
832769 (http://support.microsoft.com/kb/832769/) Cómo configurar un servidor virtual de Windows SharePoint
Services para utilizar la autenticación Kerberos y cómo cambiar de la autenticación Kerberos a la autenticación
NTLM

Para obtener más información acerca de los problemas que pueden producirse cuando se utiliza el protocolo de
autenticación Kerberos para conectarse a un servidor Web que utiliza un puerto no estándar en Windows XP o
Windows Server 2003, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
908209 (http://support.microsoft.com/kb/908209/) Internet Explorer 6 no puede utilizar el protocolo de autenticación
Kerberos para conectarse a un servidor Web que utiliza un puerto no estándar en Windows XP o Windows
Server 2003

Propiedades

Id. de artículo: 929650 - Última revisión: miércoles, 12 de mayo de 2010 - Versión: 5.0
La información de este artículo se refiere a:
Microsoft Internet Information Services 7.5
Microsoft Internet Information Services 7.0
Servicios de Microsoft Internet Information Server 6.0

Palabras clave: kbmt kbinfo kbhowto KB929650 KbMtes

Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft
(http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor
humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de
conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la
sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier
imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros
clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 929650 (http://support.microsoft.com/kb/929650/en-us/ )

Propocionar comentarios
Volver al principio

support.microsoft.com/kb/929650/es 7/7

You might also like