Professional Documents
Culture Documents
los SPN al configurar las aplicaciones Web que se alojan en servicios de Internet Informat…
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:
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 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 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
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
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
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
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.
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:
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:
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:
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() '
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.
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.
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:
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
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