Confusione sull'utente autenticato dell'API

Ho una domanda più sulla sicurezza dell’utilizzo dell’API perché penso di non aver capito un concetto banale a causa della mia inesperienza.

Ho un’implementazione headless di Discourse da integrare nel mio frontend e ho abilitato con successo l’SSO per l’autenticazione degli utenti.

La mia comprensione iniziale era che stessi usando l’SSO per autenticarmi come “activeUser” per recuperare dati specifici dell’activeUser dall’API. Ora capisco che non è del tutto corretto.

Ora vedo che i dati restituiti sembrano dipendere da ‘api-username’ passato nell’header. Ma sto usando una chiave API Admin, quindi credo che questo significhi che posso recuperare i dati di qualsiasi utente che voglio passando il nome utente corretto per “api-username”.

Quindi la mia domanda si riduce a: sembra che l’API non introduca un concetto di “activeuser” e devo modificare l’utente attivo recuperando il nome utente tramite external_id, quindi utilizzandolo come api-username durante la sessione attiva, è corretto?

Se la mia comprensione è corretta, non è facile per un hacker modificare semplicemente l’api-username nell’header per recuperare discussioni di chat per qualsiasi utente?

Qualsiasi informazione aggiuntiva sarà apprezzata per aiutarmi a capire. Grazie!

Alcuni articoli correlati che ho letto:

Una chiave API di Amministratore è la chiave del regno

Non metterla da nessuna parte in un’app frontend. Se l’hai fatto, ti consiglio di revocarla immediatamente.

3 Mi Piace

Non dovresti mai usare quell’API dal frontend perché in quel caso questo è effettivamente un rischio (in realtà il rischio è molto più alto perché l’hacker può fare qualsiasi cosa)

Dovresti farlo dal backend.

Se non è un’opzione, allora dovresti usare invece le chiavi API utente.

2 Mi Piace

Come implementazione headless, eseguirò questo dal mio front-end. Quindi, in questo caso, sembra che dovrò dedicare del tempo a decifrare la discussione su questo argomento:

Simile a queste discussioni, sarei interessato a generare automaticamente la chiave API dell’utente utilizzando il mio accesso all’API di amministrazione. Tuttavia, nel mio flusso, non vorrei che l’utente venisse reindirizzato a una nuova pagina per “approvare” la mia app. Vorrei forzare l’approvazione utilizzando la mia fidata chiave API di amministrazione o esiste un’impostazione che posso disabilitare in modo che non sia necessaria un’autenticazione aggiuntiva per la nuova chiave API utente che genero?