Skip to content

M1: end-to-end login from preferences (GOA primary + browser/PKCE fallback) #70

Description

@montfort

Capacidad M1 (CHARTER-02): "Puedo entrar" — login real con cuenta Microsoft desde la app de preferencias; tokens al keyring; la UI muestra la cuenta conectada. Rastrea el trabajo de FU-017 (rutas de auth divergentes) y la decisión AIDEC-2026-07-04-001 (GOA en GNOME, PKCE loopback universal).

Alcance (decisiones del operador 2026-07-04)

Ambas rutas funcionales en M1:

Ruta GOA (primaria, D2)

  • Activar enable_goa + instalar el proveedor GOA host-side (goa-provider/, hoy enable_goa=false)
  • Onboarding: botón para lanzar GNOME Online Accounts cuando no hay cuenta lnxdrive_microsoft
  • Emitir auth_state_changed en la ruta GOA (hoy no lo hace)

Ruta browser/PKCE (fallback universal, loopback-en-daemon)

  • StartAuth genera la URL PKCE real y arranca el callback server loopback en el daemon
  • El daemon captura el code directamente del loopback (no cruza D-Bus — mejora RISK-002), intercambia por tokens, guarda en keyring, emite signal
  • Retirar/deprecar complete_auth(code, state) (pasaba el code por D-Bus)

FU-017 (consolidación)

  • Unificar redirect_uri (127.0.0.1:8400/callback vs localhost:8400)
  • Resolver la divergencia de AuthenticateUseCase::login (llama a authenticate() = bail! stub)
  • Fijar el origen del app_id (default vs config)

Gate de capacidad (operador, cuenta real)

  • Instalar → añadir cuenta GOA → Sign In → cuenta visible en UI
  • Token solo en keyring (secret-tool search service lnxdrive)
  • dbus-monitor --session | grep -cE "Bearer|eyJ" = 0
  • Gate R1: el token GOA opera contra Graph — resuelto por diseño (el proveedor pide Files.ReadWrite.All); confirmación empírica aquí

Riesgo R1

Si los tokens GOA no traen scopes utilizables → fallback a PKCE loopback (ya funcional en M1) y se reabre D2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    authAuthentication / authorization / OAuthgnomeGNOME integration (panel, Shell, Nautilus, GOA)priority/P1High: should be addressed before the following release

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions