Improve domain enrollment and desktop personalization
This commit is contained in:
+20
-10
@@ -23,13 +23,15 @@ is forced because NTLM authentication is connection-bound.
|
||||
The authoritative logical GET is sent to `/psulsa/`, a lightweight route that
|
||||
returns the NTLM challenge without waiting for the slow application pages. A
|
||||
`401` or `403` rejects the credential; an allowed `2xx` or `3xx` proves that IIS
|
||||
accepted it. The broker then makes a separately bounded, best-effort GET to the
|
||||
administrative incident overview for `AD`, the student information page for
|
||||
`AL`, or the portal menu for `DO`. After the incident page confirms an `AD`
|
||||
employee number, two additional GETs in the same in-memory session read the
|
||||
structured name from `datos/personales.aspx` and the address from
|
||||
`datos/ubicacion.aspx`. Docentes keep the menu name as a base and attempt those
|
||||
same two shared staff modules without requiring them to exist. A supplemental
|
||||
accepted it. The broker then makes separately bounded, best-effort profile GETs.
|
||||
It uses the administrative incident overview for `AD`, the student information
|
||||
page for `AL`, and the portal menu as a conservative base for `DO`. After the
|
||||
incident page confirms an `AD` employee number, two additional GETs in the same
|
||||
in-memory session read the structured name from `datos/personales.aspx` and the
|
||||
address from `datos/ubicacion.aspx`. Docentes request
|
||||
`nomina/consultanomina.aspx` for a matching employee number, email, employee
|
||||
type and job title, then attempt the same two shared staff modules without
|
||||
requiring any optional route to exist. A supplemental
|
||||
404, changed/missing element ID, other failure, or timeout preserves fields
|
||||
already collected, and a profile timeout does not invalidate an already
|
||||
authenticated credential. NTLM may still require its normal
|
||||
@@ -62,9 +64,10 @@ updates the applicable `displayName`, `givenName`, `sn`, `mail`, `title`,
|
||||
`postalCode` attributes. Administrative and student numbers must match the six
|
||||
numeric digits of the requested identity before any role-specific metadata is
|
||||
trusted. Administrative personal and location pages are accepted only after
|
||||
that incident-page match. A docente's supplemental fields remain tied to the
|
||||
fresh NTLM-authenticated portal session and are optional; the menu display name
|
||||
remains usable if neither shared page is available. Student faculty/department
|
||||
that incident-page match. Docente payroll metadata must match the requested
|
||||
six-digit number; all docente supplemental fields remain tied to the fresh
|
||||
NTLM-authenticated portal session and are optional. The menu display name
|
||||
remains usable if the payroll or shared staff pages are unavailable. Student faculty/department
|
||||
is deliberately left unset because the verified page does not expose it.
|
||||
Missing metadata does not clear existing AD values and never changes the
|
||||
password outcome.
|
||||
@@ -105,6 +108,13 @@ to `OU=Laboratorio`; it suppresses first-logon/privacy/diagnostic prompts,
|
||||
disables location, and enforces always-on display, sleep, and hibernation
|
||||
settings for managed clients.
|
||||
|
||||
That computer GPO also owns the base lock-screen image and a per-logon command
|
||||
for the personalized desktop wallpaper. The client-side renderer reads the
|
||||
authenticated user's `displayName` plus the computer object's `location` and
|
||||
immediate parent OU, then composes those values over the bundled dark-blue
|
||||
background with the bundled Indivisa fonts. Missing directory attributes degrade
|
||||
to deterministic text and never block the interactive session.
|
||||
|
||||
The domain controller is also the source-initiated Windows Event Collector for
|
||||
managed laboratory computers. Kerberos-authenticated WEF sends only selected
|
||||
logon/logoff, failed-logon, reconnect/disconnect, and operating-system power
|
||||
|
||||
@@ -66,9 +66,10 @@ continúa por la NIC que tenga el gateway predeterminado.
|
||||
El broker arranca con una lista de clientes vacía. Eso no abre el servicio: mTLS
|
||||
rechaza todos los certificados hasta que el primer cliente registra el suyo.
|
||||
Los archivos opcionales colocados en `payload\server-content\Packages` al crear
|
||||
el release se copian al recurso compartido. Si allí existe `wallpaper.jpg`,
|
||||
`wallpaper.jpeg`, `wallpaper.png` o `wallpaper.bmp`, la GPO de usuarios lo aplica
|
||||
automáticamente como fondo con ajuste Fill.
|
||||
el release se copian al recurso compartido. El paquete siempre incluye
|
||||
`welcome-wallpaper`: fondo azul, fuentes Indivisa y generador de respaldo para
|
||||
reparación o actualización de clientes. La GPO de equipos inicia la copia local
|
||||
del generador en cada sesión; ya no se impone un único fondo estático por usuario.
|
||||
|
||||
Estado y diagnóstico:
|
||||
|
||||
|
||||
@@ -51,8 +51,9 @@ Eso es comportamiento esperado, no una caída del servicio.
|
||||
`/psulsa/`. El enriquecimiento usa el límite total independiente
|
||||
`ProfileTimeoutSeconds` —**90 segundos** en la configuración del laboratorio—
|
||||
y conserva los campos que alcance a obtener si una página de personal se
|
||||
retrasa, no existe o cambia sus IDs. Esto incluye los módulos opcionales de
|
||||
nombre y ubicación para docentes. El Credential Provider mantiene su propio límite de **90
|
||||
retrasa, no existe o cambia sus IDs. Para docentes esto incluye consulta de
|
||||
nómina —clave, nombre, correo, tipo y puesto— más los módulos opcionales de
|
||||
nombre y ubicación. El Credential Provider mantiene su propio límite de **90
|
||||
segundos**: si SGU excede ese presupuesto, Windows continúa por el fallback
|
||||
normal de AD o credenciales de dominio en caché.
|
||||
- El instalador configura recuperación del servicio con reinicios a los 5, 15
|
||||
|
||||
@@ -112,6 +112,11 @@ pantalla, suspensión, hibernación y suspensión híbrida, conectado a corrient
|
||||
batería. El guard de enrolamiento vuelve a aplicar `powercfg /hibernate off` y
|
||||
los tiempos en cero al inicio y diariamente.
|
||||
|
||||
Esa GPO también ejecuta el generador local del fondo de bienvenida y aplica el
|
||||
fondo azul base a la pantalla de bloqueo. El fondo individual se crea al abrir la
|
||||
sesión con el nombre del usuario y `location`/OU del equipo; véase
|
||||
[welcome-wallpaper.md](welcome-wallpaper.md).
|
||||
|
||||
`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
|
||||
|
||||
@@ -21,33 +21,53 @@ sudo bash ./Enroll-SguLinuxDomainClient.sh \
|
||||
--domain-controller 192.168.50.10 \
|
||||
--domain-interface eth0 \
|
||||
--domain-address 192.168.50.12/24 \
|
||||
--enable-ssh
|
||||
--enable-ssh \
|
||||
--enable-hyperv-enhanced-session
|
||||
```
|
||||
|
||||
`--domain-interface` y `--domain-address` son opcionales como pareja. Si ya se aprovisionó la red privada mediante cloud-init, DHCP o gestión de configuración, omítelos y conserva únicamente `--domain-controller`.
|
||||
|
||||
El script se niega a reconfigurar una interfaz que posea la ruta predeterminada; así no deja a la máquina sin salida a Internet al agregar AD.
|
||||
|
||||
En Ubuntu con GNOME, cierra la sesión gráfica de **Sesión básica** antes de
|
||||
entrar con el mismo usuario mediante **Sesión mejorada**. GNOME no admite dos
|
||||
escritorios simultáneos del mismo usuario; intentar conservar ambos produce una
|
||||
pantalla negra aunque XRDP haya autenticado correctamente. El inicio automático
|
||||
de sesión de GDM también debe permanecer deshabilitado.
|
||||
|
||||
## Qué instala y configura
|
||||
|
||||
1. Instala `realmd`, `adcli`, SSSD, Kerberos y los módulos NSS/PAM adecuados para la familia de distribución.
|
||||
2. Comprueba el registro DNS SRV de Active Directory y sincronización de hora ya existente.
|
||||
3. Establece el nombre de host `NOMBRE.lci.lasalle.mx` antes de crear la cuenta de equipo.
|
||||
4. Une el equipo con `adcli` en `OU=Laboratorio`.
|
||||
5. Activa SSSD, creación de directorio personal mediante PAM y valida la contraseña de la cuenta de equipo con `adcli testjoin`.
|
||||
5. Activa SSSD, creación de directorio personal mediante PAM y valida la contraseña de la cuenta de equipo con `adcli testjoin`. En distribuciones que habilitan los respondedores NSS/PAM de SSSD tanto en `sssd.conf` como mediante sockets de systemd, desactiva los sockets duplicados para evitar una colisión al arrancar.
|
||||
6. Cuando se proporcionó la NIC privada, activa actualizaciones DNS dinámicas de SSSD en esa interfaz.
|
||||
7. Con `--enable-ssh`, instala y habilita OpenSSH y abre únicamente el servicio SSH cuando el firewall local ya está activo.
|
||||
8. Registra `lightdm` y `cinnamon-screensaver` como inicios interactivos ante las políticas GPO de SSSD. En equipos con LightDM también muestra el ingreso manual, necesario para el primer acceso de un usuario del dominio.
|
||||
9. Con `--enable-hyperv-enhanced-session`, configura XRDP sobre Hyper-V sockets para que VMConnect pueda usar **Sesión mejorada**, repara certificados incompletos, registra `xrdp-sesman` en el mismo mapa interactivo y valida ambos servicios XRDP.
|
||||
10. Instala el fondo azul, las fuentes Indivisa y un autoinicio compatible con Cinnamon, GNOME y XFCE. En cada sesión gráfica genera el saludo con el nombre del usuario y la ubicación/OU del equipo obtenidas de AD.
|
||||
|
||||
El objeto de equipo aparece como `NOMBRE` en `OU=Laboratorio`. SSSD registra su registro A cuando la actualización DNS dinámica está activada.
|
||||
|
||||
## Inicio de sesión de dominio
|
||||
|
||||
Después de la unión, el formato explícito es:
|
||||
Después de la unión se acepta directamente la clave institucional corta:
|
||||
|
||||
```text
|
||||
al201428
|
||||
```
|
||||
|
||||
El formato UPN explícito también permanece disponible:
|
||||
|
||||
```text
|
||||
usuario@lci.lasalle.mx
|
||||
```
|
||||
|
||||
En Linux Mint, selecciona **Iniciar sesión** o el campo manual de usuario en
|
||||
Slick Greeter y escribe la clave corta. El mosaico con el nombre de una cuenta
|
||||
local no cambia de identidad al escribir únicamente otra contraseña.
|
||||
|
||||
La primera sesión crea `/home/usuario@lci.lasalle.mx`. El valor predeterminado de SSSD conserva credenciales para desconexiones breves de la red; las contraseñas no son administradas ni almacenadas por el Auth Broker.
|
||||
|
||||
Para limitar quién puede iniciar sesión, incluye un grupo de AD:
|
||||
@@ -67,6 +87,8 @@ realm list
|
||||
sudo adcli testjoin --domain=lci.lasalle.mx
|
||||
getent passwd 'usuario@lci.lasalle.mx'
|
||||
sudo sssctl domain-status lci.lasalle.mx
|
||||
sudo sssctl user-checks usuario -a acct -s lightdm
|
||||
sudo sssctl user-checks usuario -a acct -s cinnamon-screensaver
|
||||
```
|
||||
|
||||
Para sacar un equipo del dominio de forma explícita:
|
||||
@@ -76,3 +98,7 @@ sudo realm leave lci.lasalle.mx
|
||||
```
|
||||
|
||||
Esta última acción elimina la relación de confianza local; debe ejecutarse sólo durante baja o reconstrucción del equipo.
|
||||
|
||||
La personalización gráfica es deliberadamente opcional: si ImageMagick, LDAP o
|
||||
la API del escritorio fallan, no revierte la unión ni impide iniciar sesión. Consulta
|
||||
los detalles y las reglas de degradación en [welcome-wallpaper.md](welcome-wallpaper.md).
|
||||
|
||||
+11
-7
@@ -43,16 +43,20 @@
|
||||
city/municipality, state, and postal code from known element IDs.
|
||||
- Student CURP, birth date, sex, blood type, marital status, telephone, mobile,
|
||||
guardian, medical, financial, and academic-history values are ignored.
|
||||
- Professor enrichment keeps the menu display name as its base and optionally
|
||||
reads only the same name and postal-address element IDs used by staff pages.
|
||||
A missing professor route or element never makes authentication fail.
|
||||
- Incident details, calendars, photographs, manager names, and manager positions
|
||||
are deliberately ignored.
|
||||
- Professor enrichment keeps the menu display name as its base. From the payroll
|
||||
consultation header it reads only a matching employee number, name, email,
|
||||
employee type/status, job title, and the optional department field. It then
|
||||
optionally reads the same structured-name and postal-address element IDs used
|
||||
by staff pages. A missing professor route or element never makes authentication
|
||||
fail.
|
||||
- Payroll/receipt contents, incident details, calendars, photographs, manager
|
||||
names, and manager positions are deliberately ignored.
|
||||
- The employee or student number must match the authenticated `AD` or `AL` key
|
||||
before role-specific metadata is synchronized. The two supplemental
|
||||
administrative pages are never requested unless the incident page supplied
|
||||
the matching employee number. Professor supplemental data comes from the
|
||||
same fresh, request-scoped NTLM session as its menu fallback.
|
||||
the matching employee number. Professor payroll metadata independently
|
||||
requires the matching six-digit number, and every supplemental request uses
|
||||
the same fresh, request-scoped NTLM session as its menu fallback.
|
||||
- If SGU changes its HTML, authentication and exact-password synchronization
|
||||
continue without enrichment; existing AD metadata is not erased.
|
||||
- Slow profile pages cannot change an accepted credential into a rejection. The
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
# Fondo de bienvenida personalizado
|
||||
|
||||
El enrolamiento instala un fondo base azul, las familias `Indivisa Text Sans` y
|
||||
`Indivisa Text Serif`, y un generador local. La GPO de equipos
|
||||
`SGU - Windows client experience` ejecuta el generador al abrir cada sesión y
|
||||
mantiene el fondo base en la pantalla de bloqueo.
|
||||
|
||||
Windows no conoce todavía la identidad que se autenticará mientras muestra la
|
||||
pantalla previa al inicio de sesión. Por ello, esa pantalla utiliza el fondo base
|
||||
sin datos personales y la composición individual se genera inmediatamente
|
||||
después de autenticar, antes de que el usuario empiece a trabajar en el escritorio.
|
||||
|
||||
## Datos y degradación controlada
|
||||
|
||||
El generador consulta Active Directory con la identidad ya autenticada y sin
|
||||
guardar credenciales. Obtiene:
|
||||
|
||||
- `displayName` del usuario; si falta, utiliza `sAMAccountName`.
|
||||
- `location` del objeto de equipo.
|
||||
- La OU padre inmediata a partir de `distinguishedName`.
|
||||
|
||||
El texto secundario sigue estas reglas:
|
||||
|
||||
1. Con `location` y OU: `Estás ubicado en la Sala de Inmersión del Centro de Experiencia Digital.`
|
||||
2. Con sólo uno de los datos: muestra únicamente el dato disponible.
|
||||
3. Sin ambos: `Bienvenido al Laboratorio de Cómputo de Ingeniería.`
|
||||
|
||||
La ausencia de AD, de un atributo o de una tipografía nunca bloquea la sesión.
|
||||
Los errores de generación se registran en
|
||||
`%LOCALAPPDATA%\SGU\Logs\welcome-wallpaper.log`.
|
||||
|
||||
## Windows
|
||||
|
||||
El paquete de cliente copia los recursos a `C:\ProgramData\SGU\Branding`. La
|
||||
GPO crea el valor de equipo `SGUWelcomeWallpaper` bajo
|
||||
`HKLM\Software\Microsoft\Windows\CurrentVersion\Run`; por tanto, se ejecuta en
|
||||
el contexto de cada usuario y puede leer sus datos de AD. El resultado se guarda
|
||||
en `%LOCALAPPDATA%\SGU\Wallpapers` y se aplica con la API nativa de Windows.
|
||||
|
||||
La antigua directiva estática de escritorio se elimina para que no sobrescriba
|
||||
el archivo individual. La personalización sigue estando gobernada por dominio:
|
||||
el comando de inicio y la pantalla de bloqueo pertenecen a la GPO de equipos.
|
||||
|
||||
## Linux
|
||||
|
||||
El paquete Linux instala el generador en
|
||||
`/usr/local/lib/sgu-welcome-wallpaper` y registra
|
||||
`/etc/xdg/autostart/sgu-welcome-wallpaper.desktop`. Utiliza el ticket Kerberos
|
||||
creado por SSSD para consultar el objeto de equipo mediante LDAP; nunca contiene
|
||||
una contraseña de enlace.
|
||||
|
||||
Se admiten Cinnamon, GNOME y XFCE. La composición requiere ImageMagick; si la
|
||||
dependencia o la API del escritorio no está disponible, el enrolamiento y el
|
||||
inicio de sesión continúan normalmente y se escribe un diagnóstico en
|
||||
`~/.local/state/sgu/welcome-wallpaper.log`.
|
||||
|
||||
## Tipografía
|
||||
|
||||
Los archivos OTF necesarios viajan dentro de cada paquete y se cargan en memoria
|
||||
para renderizar el fondo; no se sustituyen fuentes del sistema. Se usa Sans en el
|
||||
saludo y la ubicación, y Serif Bold Italic en el nombre. Si los archivos no
|
||||
pueden cargarse, Windows usa Segoe UI/Georgia y Linux usa DejaVu Sans/Serif.
|
||||
@@ -129,6 +129,12 @@ configuración siempre activa y evita las experiencias iniciales de privacidad,
|
||||
telemetría, ubicación y **Hi / Preparing Windows** antes de que un usuario SGU
|
||||
entre por primera vez.
|
||||
|
||||
La misma GPO configura el fondo azul de bloqueo y ejecuta el generador local al
|
||||
abrir cada sesión. El generador usa el `displayName` del usuario, la propiedad
|
||||
`location` del equipo y su OU padre inmediata para crear el fondo individual.
|
||||
Consulta [welcome-wallpaper.md](welcome-wallpaper.md) para conocer los fallbacks
|
||||
y la ubicación de los diagnósticos.
|
||||
|
||||
Microsoft documenta este derecho en:
|
||||
<https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-userrights#allowlogonthroughremotedesktop>
|
||||
y PowerShell Remoting en:
|
||||
|
||||
Reference in New Issue
Block a user