Domanda
Sono stato progettato REST API che verrà utilizzato per le app iOS e Android, e possibilmente web e altri client mobili in futuro.Come limitare l'accesso alla mia API REST ai soli client autorizzati?
Come si limita la mia intera API solo ai client (app) a cui desidero accedere? Voglio impedire a terze parti di accedere alla mia API per registrare gli utenti o anche accedere senza passare attraverso un'applicazione autorizzata (client mobile o web).
idee correnti
ho potuto dare ad ogni cliente che voglio avere l'autorizzazione di una chiave segreta, ma come faccio a impedire che questa chiave di essere estratta dal codice sorgente di mia applicazione (particolarmente facile se la mia applicazione è stata una web app)? Inoltre, se la chiave deve essere modificata in futuro (a causa di un compromesso), ciò sarebbe difficile poiché tutti i miei client dovrebbero essere aggiornati e i vecchi client non funzionerebbero. Ci deve essere una soluzione migliore.
Sto utilizzando JWT per l'autenticazione utente, ma non riesco a vedere come posso applicare questo al mio problema. Mi piace molto il modo in cui i JWT sono facilmente implementabili, quindi sarebbe fantastico se potessi applicare un'implementazione JWT per risolvere questo problema.
penso che puoi farlo fornendo l'intestazione della chiave. –
Chi sono i clienti autorizzati? Qualcuno con la tua chiave segreta? O qualcuno che hai già verificato (via email, oauth, ecc.)? – inmyth
@inmyth Con "clienti" intendo app come app Web o app mobili. Non intendo * clienti * nel senso di * utenti *. Questa domanda non riguarda l'autenticazione dell'utente, ma piuttosto l'autorizzazione dell'app ("Questa app è autorizzata ad accedere alla mia API?"). – Sam