Files
SGU-CredentialProvider/docs/client-enrollment.md
T

7.8 KiB

Enrolamiento obligatorio de clientes SGU

Para una instalación limpia de Windows se prefiere el único punto de entrada empaquetado:

Start-SguClientEnrollment.cmd 192.168.50.10

Este comando realiza el intercambio de certificados descrito abajo sin mover una clave privada y luego ejecuta la transacción proveedor-primero. Las instrucciones completas están en bootstrap-recovery.md.

El flujo administrado instala y valida el Credential Provider antes de ejecutar Add-Computer. La pertenencia al dominio es el último cambio; si falta el runtime, un certificado, el registro COM, la directiva predeterminada o la salud mTLS del broker, el script rechaza la unión.

Una cuenta administrativa todavía puede modificar Windows fuera de este flujo. Por eso el enrolamiento también instala la tarea SGU-CredentialProvider-EnrollmentGuard, ejecutada como SYSTEM al iniciar y diariamente. La tarea conserva un paquete local protegido, repara el registro o los binarios y vuelve a habilitar RDP/WinRM en equipos unidos al dominio. No guarda contraseñas.

1. Preparar el nuevo Windows Enterprise

En la VM nueva, antes de unirla al dominio:

  1. copiar artifacts\credential-provider y todos los scripts de scripts;
  2. copiar el instalador offline más reciente de .NET 10 x64;
  3. crear el certificado cliente no exportable:
powershell.exe -NoProfile -ExecutionPolicy Bypass `
  -File .\New-LabCertificate.ps1 `
  -Role CredentialProviderClient

Copiar únicamente el .cer público al broker y registrarlo:

powershell.exe -NoProfile -ExecutionPolicy Bypass `
  -File .\Register-SguClientCertificate.ps1 `
  -CertificatePath C:\SGUDeploy\new-client.cer

Exportar únicamente el certificado público actual del broker e importarlo en el cliente con Import-LabPeerCertificate.ps1. Nunca copiar claves privadas.

2. Instalar, comprobar y unir en una sola operación

Ejecutar como administrador local dentro de la VM nueva. La credencial del dominio se solicita de forma segura si no se proporciona como objeto PSCredential:

powershell.exe -NoProfile -ExecutionPolicy Bypass `
  -File .\Enroll-SguDomainClient.ps1 `
  -PublishPath C:\SGUDeploy\credential-provider `
  -BrokerEndpoint https://sgu-auth.lci.lasalle.mx:8443/v1/authenticate `
  -ClientCertificateThumbprint CLIENT_CERT_THUMBPRINT `
  -ServerCertificateThumbprint SERVER_CERT_THUMBPRINT `
  -DotNetRuntimeInstallerPath C:\SGUDeploy\dotnet-runtime-10-win-x64.exe `
  -ComputerOuDn 'OU=Laboratorio,DC=lci,DC=lasalle,DC=mx' `
  -NewComputerName LAB-W11-001

Orden de la transacción:

  1. instala .NET y los binarios versionados;
  2. registra COM, configura SGU como proveedor predeterminado y oculta el último usuario que cerró sesión;
  3. instala el guard de autorreparación;
  4. exige health mTLS del broker y ejecuta las comprobaciones locales;
  5. configura DNS del dominio;
  6. sólo entonces ejecuta Add-Computer en OU=Laboratorio y reinicia;
  7. al arrancar, el guard habilita RDP, NLA y WinRM y comprueba el estado final.

La directiva de Windows Assign a default credential provider selecciona SGU por defecto. El instalador también habilita Interactive logon: Don't display last signed-in y deshabilita Enumerate local users on domain-joined computers. De este modo un usuario SGU desaparece después de cerrar sesión y permanece el mosaico genérico Other user. No se instala ningún filtro: el proveedor de contraseña de Microsoft permanece disponible para cuentas creadas manualmente y recuperación.

La GPO existente Deploy VSCodium debe estar vinculada una vez a OU=Laboratorio (configuración de equipo) y a OU=Usuarios-SGU (configuración de usuario: fondo institucional). El parámetro ComputerOuDn coloca los equipos nuevos directamente en Laboratorio; VSCodium se instala en el siguiente arranque síncrono y el fondo se aplica al siguiente inicio de sesión del usuario SGU.

En el controlador de dominio, aplicar una vez la directiva de usuario al árbol completo Usuarios-SGU y la directiva de equipo a Laboratorio:

.\Set-SguDomainUserPolicies.ps1
.\Set-SguDomainComputerPolicies.ps1

El script crea y vincula de forma idempotente el GPO SGU - User session restrictions y configura DisableLockWorkstation=1 para Administrativos, Alumnos y Docentes; también deshabilita el protector de pantalla. El segundo crea SGU - Windows client experience y, antes del primer inicio de sesión de dominio, suprime la experiencia de privacidad, las notificaciones y controles de telemetría, la animación Hi / Preparing Windows, y el acceso a ubicación. Además fija en Nunca el apagado de pantalla, suspensión, hibernación y suspensión híbrida, conectado a corriente o batería. El guard de enrolamiento vuelve a aplicar powercfg /hibernate off y los tiempos en cero al inicio y diariamente.

HideEULAPage no forma parte de esta GPO: es una opción de archivo Unattend para la fase OOBE y Microsoft la reserva para pruebas de OEM/System Builder. La GPO usa las alternativas soportadas DisablePrivacyExperience=1 y EnableFirstLogonAnimation=0, que son las que afectan a cada cuenta de dominio nueva.

3. Verificación y reparación

.\Test-SguClientEnrollment.ps1 `
  -RequireDomainJoined `
  -RequireRemoteAccess `
  -RequireBrokerHealth `
  -Enforce

Get-ScheduledTask -TaskName SGU-CredentialProvider-EnrollmentGuard
Start-ScheduledTask -TaskName SGU-CredentialProvider-EnrollmentGuard

Un resultado válido exige simultáneamente binario y registro COM, configuración, certificados, .NET 10, proveedor SGU predeterminado, último usuario oculto, enumeración local deshabilitada y proveedor de contraseña de Microsoft preservado. El script de reparación se encuentra en C:\ProgramData\SGU\Enrollment con ACL exclusiva para SYSTEM y administradores.

4. Experiencia de LogonUI

El proveedor usa un mosaico genérico dedicado, no una credencial asociada al SID anónimo de Other user. Windows muestra la imagen institucional y la etiqueta La Salle · Acceso SGU; el encabezado Acceso institucional SGU se publica como CPFT_LARGE_TEXT solamente en el mosaico seleccionado. LogonUI elige la familia, el peso y el tamaño final y no expone opciones de tipografía a un Credential Provider.

La configuración soportada garantiza que SGU queda seleccionado por defecto y que no se conserva el último usuario. El orden vertical exacto de mosaicos lo decide LogonUI y no tiene una directiva pública. Por seguridad no se filtra ni se elimina Other user: Microsoft recomienda conservar al menos un proveedor del sistema como ruta de recuperación.

Referencias de Microsoft: