Saltar a contenido

SSO Ciudadano Multi-dispositivo (HMI)

Objetivo

Definir una experiencia unica de identidad para ciudadania, colaboradores y equipos internos desde PC, notebook, tablet, smartphone y gadgets, manteniendo trazabilidad de decisiones humanas (HILT) y evidencia auditable.

Decision de arquitectura adoptada

Opcion A (broker OIDC self-hosted) como baseline:

  1. IdP central self-hosted (por ejemplo Keycloak) como broker de identidad.
  2. oauth2-proxy como puerta de acceso a apps web gobernadas.
  3. Claims por rol + audiencia + dispositivo + riesgo para enrutar vistas del portal.
  4. HILT obligatorio para riesgos alto|critico.

Mapa HMI por dispositivo

Codigo Dispositivo Flujo recomendado
D1 Smartphone personal OIDC + MFA + directivas moviles compactas
D2 Laptop institucional OIDC + MFA + evidencias documentales
D3 Workstation tecnica OIDC + privilegio minimo + hardening
D4 Servidor/cluster local Bastion + OIDC federado + trazas runtime
D5 Infra cloud IAM federado + auditoria central
D6 Tablet/aula MDM + onboarding guiado + perfiles gestionados

Matriz de gobernanza por rol

La fuente canonica vive en:

  1. knowledge/datasets/citizen-role-device-risk-matrix.tsv
  2. knowledge/datasets/citizen-device-taxonomy.tsv
  3. knowledge/datasets/citizen-evidence-catalog.tsv
  4. knowledge/datasets/citizen-hmi-ux-contract.tsv
  5. knowledge/datasets/citizen-repo-permission-routing.tsv

Validacion local-first:

python3 scripts/verify/citizen_role_device_risk_guard.py
python3 scripts/verify/citizen_hmi_ux_guard.py
python3 scripts/verify/citizen_repo_permission_routing_guard.py

Contrato UXUI por actor y dispositivo

El contrato citizen-hmi-ux-contract.tsv fija, para cada par rol + dispositivo:

  1. Superficie HMI (mobile_web, desktop_web, workstation_console, bastion_cli, tablet_classroom).
  2. Modo de navegacion (guided, taskboard, evidence-first, ops-first, narrative).
  3. Densidad de contenido y perfil de accesibilidad (WCAG/teclado/lector).
  4. Friccion de autenticacion segun riesgo (silent-sso, mfa, step-up-mfa).
  5. Estilo de prompt HILT cuando el riesgo es alto|critico.

Con esto la UX deja de ser subjetiva y pasa a controlarse por GitOps con guardrails reproducibles.

Routing por permisos de repositorio (misma URL)

El portal enruta desde la misma URL segun claim permission:

Permission Destino por defecto
read portal/institutional-onboarding/
write portal/github-collaboration-hub/
maintainer portal/tech-people-context-steward-quickstart/
admin portal/human-decision-protocol/ (o VDI personal si viene claim)
owner VDI personal (atq_vdi_url o fallback /vdi/<usuario>/)

Resultado: una entrada unica con experiencia adaptativa a permiso + rol + dispositivo + riesgo.

Integracion con onboarding

El wizard de onboarding recoge ahora:

  1. Rol ciudadano inicial.
  2. Dispositivo primario (D1..D6).
  3. Preferencia de SSO ciudadano.

Esto permite personalizar ruta, narrativa y controles desde el primer dia.

Guardrails

  1. Sin evidence_codes no hay cierre de decision.
  2. Riesgo alto|critico exige HILT explicito.
  3. El router de experiencia no concede privilegios por defecto.
  4. Todo cambio de rol/dispositivo debe quedar trazado en issue/PR.

Framework CLI propietario (operacion human-first)

El entrypoint canónico para traducir contrato SSO a operación CLI entendible por cualquier perfil humano es:

scripts/proxmox/device_sso_cli_framework.sh (ATQ-CLI-SSO-DEVICE-V1)

Capacidades:

  1. Narrativa por audiencia (ops|exec|legal|onboarding).
  2. Modo lenguaje colloquial|technical.
  3. Contexto profesional explícito: public-admin, education-center, vocational-student.
  4. Mindmap ASCII de capas/saltos y coaching Linux para gestión de procesos.
  5. Gestión OEM + overlays por perfil con HOSTPROXMOX como gateway HMI de endpoint (PC/Laptop/SmartPhone/Tablet).
  6. Registro de nodos mesh para computación comunitaria descentralizada (mesh).

Ejemplo rápido:

bash scripts/proxmox/device_sso_cli_framework.sh describe \
  --audience onboarding \
  --professional-context public-admin \
  --language colloquial

Overlay mínimo por perfil (incluye perfil infantil protegido):

bash scripts/proxmox/device_sso_cli_framework.sh overlay \
  --audience onboarding \
  --professional-context education-center \
  --profile overlay-child-safe-critical-thinking \
  --write-overlay

Registro de nodo mesh (computación comunitaria):

bash scripts/proxmox/device_sso_cli_framework.sh mesh \
  --audience ops \
  --mesh-profile mesh-laptop-collab \
  --write-mesh