Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona ayuda para corregir un problema que provoca un error en la autenticación Kerberos S4U para un usuario de un bosque de confianza.
Número de KB original: 2959395
Síntomas
Se produce un error en la autenticación Kerberos S4U para un usuario de un bosque de confianza cuando la autenticación selectiva está habilitada en la confianza del bosque.
En concreto, una aplicación que llama a la API LsalogonUser mediante una solicitud de cliente de Kerberos S4U para autenticar a un usuario en un bosque de confianza puede producir un error cuando se cumplen las condiciones siguientes:
- El valor ClientUPN proporcionado a LsalogonUser representa a un usuario de un bosque de confianza donde está habilitada la autenticación selectiva.
- El valor ClientRealm proporcionado a LsalogonUser tiene el formato de un nombre NetBIOS (nombre plano), no un nombre de dominio completo (FQDN).
En esta situación, un seguimiento de red muestra que se produce un error en una solicitud de TGS para la cuenta krbtgt con un error "STATUS_AUTHENTICATION_FIREWALL_FAILED (0xC0000413)".
Causa
Este problema se produce cuando, como parte del procesamiento de la solicitud LsalogonUser, el cliente Kerberos debe obtener un vale de autenticación para el usuario de un controlador de dominio en el bosque de confianza del usuario.
Si el valor ClientRealm se pasó en un formato de nombre plano, el cliente Kerberos no usa el vale de referencia que recibió como parte del proceso de referencia. Por lo tanto, el cliente debe solicitar un vale de servicio para la cuenta Krbtgt en el dominio de usuario.
Cuando se habilita la autenticación selectiva, el controlador de dominio del dominio del usuario comprueba el permiso "Permitido para autenticar" en la cuenta krbtgt para ver si la identidad del autor de la llamada que realiza la solicitud de vale tiene acceso.
Nota:
El autor de la llamada que realiza la solicitud de vale de servicio tiene la identidad de que el subproceso que llama a LsalogonUser se suplantaba en el momento.
Si el permiso "Permitido para autenticar" no está presente, el controlador de dominio del dominio del usuario genera un error KDC_ERR_POLICY y un error extendido de STATUS_AUTHENTICATION_FIREWALL_FAILED (0xC0000413).
Solución
Para resolver este problema, utilice uno de los métodos siguientes.
Método 1: Eliminación de la autenticación selectiva de la confianza
El controlador de dominio del dominio de recursos de destino omitirá el permiso "Permitido para autenticarse" en la cuenta. Este comportamiento puede no ser deseable en un entorno seguro.
Método 2: Agregar la identidad del autor de la llamada al permiso "Permitido para autenticar" en la cuenta krbtgt en el dominio del usuario de destino
Dado que la cuenta krbtgt es una cuenta protegida, debe agregar el permiso "Permitido para autenticar" para la identidad del autor de la llamada al objeto de cuenta AdminSdHolder. Para ello, siga estos pasos:
Abra un símbolo del sistema en un controlador de dominio en el dominio del usuario de destino.
Ejecute el siguiente comando para agregar el permiso "Permitido para autenticar" al objeto AdminSdholder:
dsacls "CN=AdminSDHolder,CN=System,DC=ForestB,DC=com" /G DomainA\callers-identity:CA;"Allowed to Authenticate"
Nota:
- DC=ForestB,DC=com es el nombre distintivo del bosque de destino del usuario.
- DomainA es el nombre del dominio donde se encuentra la identidad de la cuenta que llama a LsaLogonUser.
- Callers-identity es el nombre de cuenta de la identidad con la que se realiza la llamada a LsaLogonUser.
Ejecute el siguiente comando para comprobar el permiso "Permitido para autenticarse" en la cuenta de destino:
dsacls "CN=AdminSDHolder,CN=System,DC=ForestB,DC=com"
Ejecute dsa.msc en el dominio de destino del usuario y busque la cuenta krbtgt.
Seleccione las propiedades de la cuenta de destino y, a continuación, haga clic en la pestaña Seguridad .
Agregue el permiso "Permitido para autenticar" a la cuenta con la que se realiza la llamada a LsaLogonUser.