Problema

En entornos donde Windows Hello for Business (WHfB) se despliega con el modelo Key Trust y la autoridad de autenticación es ADFS, es frecuente que el PIN funcione al iniciar sesión y, tras unos minutos, deje de hacerlo. El síntoma típico es el mensaje “Sign‑in option temporarily unavailable” después de que el equipo solicite bloquear la sesión para refrescar credenciales. El error se refleja en los logs de Kerberos con el código 0x4B KDC_ERR_CLIENT_NOT_TRUSTED, indicando que el KDC no reconoce la clave usada por WHfB.

El patrón subyacente es la desincronización del atributo msDS-KeyCredentialLink del objeto de usuario en Active Directory. Cuando ese atributo contiene más de una clave o se borra la clave generada localmente, el controlador de dominio no puede validar la autenticación basada en PKINIT y el PIN se vuelve inutilizable.

Causa

  • WHfB (Key Trust) crea una clave NGC en el TPM y la escribe en msDS-KeyCredentialLink.
  • Microsoft Entra Connect (o Azure AD Connect) puede estar configurado para importar claves NGC desde Entra ID y exportar esas mismas claves al atributo AD. Si Entra ID ya contiene NGC keys para el usuario, el conector sobrescribe la clave local con las que llegan desde la nube.

2. Regla de sincronización “In from AAD – User NGCKey”

Esta regla está habilitada por defecto cuando se habilita la sincronización de WHfB en entornos híbridos. Cada ciclo de sincronización reemplaza el contenido de msDS-KeyCredentialLink con los valores que provienen de Entra ID. Cuando el número de claves importadas supera a la local (por ejemplo, 12 vs 1), la clave TPM se elimina y el KDC falla.

3. Exportación vacía del conector AD DS

Desactivar solo la regla de importación no basta: el conector AD DS sigue intentando exportar un valor vacío para msDS-KeyCredentialLink, lo que borra el atributo aunque la regla de importación esté desactivada.

4. Escenarios frecuentes donde ocurre

  • Implementaciones híbridas que pretenden mantener WHfB on‑premises pero mantienen sincronización completa de objetos.
  • Entornos con ADFS + Key Trust donde se ha habilitado la opción “Enable cloud password hash sync” o “Enable device writeback” sin revisar las reglas de WHfB.
  • Actualizaciones de Entra Connect que reactivan reglas de importación de forma automática.

Solución

La solución consiste en eliminar la ruta de sincronización que gestiona msDS-KeyCredentialLink mientras se conserva el resto de la sincronización de identidad. El proceso se divide en tres pasos:

1. Desactivar la regla de importación NGCKey

En la consola de Microsoft Entra Connect, localiza la regla In from AAD – User NGCKey y desactívala. Esto impide que las claves de Entra ID entren al metaverso.

Edita la configuración del conector AD DS y elimina el atributo de la lista de Exported Attributes. En PowerShell:

Import-Module ADSync
$connector = Get-ADSyncConnector -Name "AD DS"
$rule = Get-ADSyncRule -Connector $connector -Name "Export msDS-KeyCredentialLink"
Set-ADSyncRule -Identity $rule.Id -Enabled $false

Con la regla desactivada, el conector ya no intentará exportar un valor vacío ni sobrescribir la clave local.

3. Verificar que solo exista una clave en el atributo

Ejecuta:

Get-ADUser $env:USERNAME -Properties msDS-KeyCredentialLink |
Select-Object -ExpandProperty msDS-KeyCredentialLink |
Measure-Object

El recuento debe ser 1 después de la primera inscripción de WHfB. Si el número vuelve a subir, revisa los logs de Entra Connect para detectar reglas activas adicionales.

Cuándo aplicar esta solución

  • Síntomas: PIN de WHfB funciona inicialmente, luego desaparece; mensaje Sign‑in option temporarily unavailable; eventos Kerberos 0x4B; msDS-KeyCredentialLink muestra más de una entrada.
  • Entorno: ADFS + Key Trust, sincronización con Entra Connect, sin dependencia de Entra ID para autenticación de WHfB.
  • No aplicar: Si la arquitectura depende de Cloud‑only WHfB (Key Trust con Azure AD) y se requiere que los NGC keys se sincronicen a AD. En ese caso la regla NGCKey debe permanecer activa.

Código

# Desactivar regla de importación NGCKey
Import-Module ADSync
$rule = Get-ADSyncRule -Name "In from AAD - User NGCKey"
Set-ADSyncRule -Identity $rule.Id -Enabled $false

# Desactivar exportación del atributo msDS-KeyCredentialLink
$connector = Get-ADSyncConnector -Name "AD DS"
$exportRule = Get-ADSyncRule -Connector $connector -Name "Export msDS-KeyCredentialLink"
Set-ADSyncRule -Identity $exportRule.Id -Enabled $false

# Forzar sincronización
Start-ADSyncSyncCycle -PolicyType Delta

Verificación

  1. Re‑inscribir WHfB en un equipo cliente.
  2. Ejecuta dsregcmd /status y confirma EnterpriseJoined : YES y NgcSet : YES.
  3. Bloquea y desbloquea la sesión varias veces. El PIN debe seguir funcionando.
  4. En el DC, revisa el log de Kerberos; no debe aparecer el código 0x4B.
  5. Consulta Get-ADUser … -Properties msDS-KeyCredentialLink; el recuento debe permanecer en 1 después de cada ciclo de bloqueo.

Notas adicionales

  • Después de aplicar los cambios, no reinicies el conector inmediatamente; permite al menos un ciclo de sincronización completo (≈ 30 min) antes de validar.
  • Si utilizas Azure AD Connect Health, verifica que la regla desactivada no genere alertas de “rule conflict”.
  • En entornos con Device Writeback habilitado, la eliminación de la regla NGCKey no afecta a la escritura de dispositivos, pero sí a la importación de claves.
  • Mantén una copia de seguridad de la configuración de sincronización (Export-ADSyncConfiguration) antes de modificar reglas; facilita la reversión en caso de error.

Con estos ajustes, el atributo msDS-KeyCredentialLink vuelve a ser gestionado exclusivamente por la inscripción local de WHfB, evitando la colisión con Entra Connect y garantizando que el PIN siga siendo válido durante toda la sesión.