Sezioni

Autenticazione delle app satellite

Fai in modo che le app del catalogo si fidino dell'accesso a Frontdoor con un cookie condiviso, un token inoltrato o l'introspezione del token.

In questa pagina

Un'app satellite è un'app del catalogo di Frontdoor che si affida a Frontdoor per l'autenticazione. Gli amministratori ne scelgono la modalità di connessione nell'editor delle app (vedi App e modalità di connessione); questa pagina spiega cosa deve fare l'app satellite.

Scegliere uno schema

Scegli lo schema più restrittivo adatto alla tua installazione.

Schema Quando usarlo Cosa serve all'app satellite
Cookie condiviso (mode=shared-cookie) L'app satellite è ospitata su un sottodominio di BASE_DOMAIN. Leggere il cookie httpOnly frontdoor_token e verificarlo in locale con il JWT_SECRET condiviso.
Redirect con secret condiviso (mode=redirect) L'app satellite è su un dominio diverso, gestita dallo stesso team. Ricevere il token di breve durata tramite query string GET o form POST, e verificarlo in locale con il JWT_SECRET condiviso.
Redirect con introspezione (mode=redirect) L'app satellite è su un dominio diverso e non deve possedere il secret di Frontdoor: una terza parte, un ambiente meno affidabile, o per limitare i danni di una fuga di dati. Ricevere il token di breve durata, poi inviarlo in POST a /api/auth/verify-sso-token con il proprio slug come expected_aud. Nessun secret condiviso.

Entrambi gli schemi con redirect usano la stessa modalità dell'app (mode=redirect); cambia solo il modo in cui l'app satellite verifica il token.

Condividere il secret

Un'app che possiede JWT_SECRET può verificare i token di Frontdoor, ma potrebbe anche firmarli, compresi i token di sessione. Condividi il secret solo con app di totale fiducia e usa l'introspezione per le altre.

Frontdoor accetta come sessioni solo token firmati con HS256, con il suo emittente (JWT_ISSUER, predefinito frontdoor) e senza audience. Un'app satellite che verifica i token in locale deve aspettarsi lo stesso emittente.

Verificare un token con l'introspezione

POST /api/auth/verify-sso-token è un endpoint di introspezione da server a server, ispirato alla RFC 7662 e limitato a questo flusso. Con una sola chiamata Frontdoor controlla firma, scadenza, emittente, audience, che l'utente sia attivo e che l'app sia attiva.

Non ti serve una chiave API: l'autorizzazione è il possesso di un token valido per l'expected_aud richiesto.

curl -sX POST https://frontdoor.contoso.com/api/auth/verify-sso-token \
  -H 'Content-Type: application/json' \
  -d '{"token":"<jwt>","expected_aud":"<your-app-slug>"}'

Un token valido restituisce 200:

{
  "valid": true,
  "user": { "id": "...", "email": "...", "name": "...", "role": "user" },
  "aud": "<your-app-slug>",
  "exp": 1745740300
}

Errori

Stato error Significato
400 bad_request token o expected_aud manca o non è valido (formato dello slug).
401 invalid_token Firma errata o token scaduto (volutamente indistinguibili).
401 invalid_issuer Il token non è stato emesso da questo Frontdoor.
401 user_not_found_or_inactive Il sub del token non corrisponde a un utente attivo.
403 audience_mismatch Il token è stato riutilizzato su un'altra app. Frontdoor registra il chiamante con un avviso.
403 app_inactive expected_aud corrisponde a un'app che è stata disattivata.
429 too_many_requests Limite di frequenza superato (120 richieste al minuto per IP).

Limitare la sessione locale

Usa exp per limitare la sessione dell'app satellite, così non sopravvive mai al token di Frontdoor:

local session lifetime = min(default_session_ttl, exp - now)

Controllare la sessione da un'altra origine

Una pagina che deve solo sapere se l'utente ha effettuato l'accesso, senza essere un'app del catalogo, può chiamare /api/auth/me con credentials: 'include' una volta che la sua origine è in CORS_ALLOWED_ORIGINS. Vedi Controllo della sessione da altre origini.

Impersonation e app satellite

Quando un amministratore agisce come un utente in Frontdoor, la sessione vive in un cookie separato, valido solo per l'host (frontdoor_impersonation) e usato solo nelle richieste che arrivano da Frontdoor stesso. Il cookie condiviso frontdoor_token non cambia mai, quindi le app satellite con cookie condiviso e i controlli della sessione da altre origini continuano a vedere l'amministratore, mai l'utente impersonato. Durante l'impersonation le app non si possono aprire e non viene emesso alcun token SSO.