Come memorizzare 'client_secret' privatamente nelle applicazioni di frontend?

0

Sto cercando di capire come l'autenticazione e l'autorizzazione dovrebbero funzionare con un'API REST dato che l'API sarà disponibile per essere utilizzata da applicazioni di terze parti.

Mi rendo conto che se consentiamo ad altre applicazioni di utilizzare la nostra API, dobbiamo autenticare le applicazioni e l'utente.

Ho due modi per pensare a come dovrebbe funzionare l'autenticazione:

  1. In ogni luogo in cui è richiesta un'autenticazione dell'utente, chiediamo anche l'autenticazione dell'applicazione e l'utente ha concesso autorizzazioni sufficienti all'applicazione.

    Professionisti Abbiamo il controllo e i dati su quali applicazioni stanno accedendo alle nostre API?

    Contro - Non c'è modo di sapere sulle applicazioni di frontend per mantenere il client_secret in sicurezza che impedirebbe agli altri di prenderlo e di posare come nostra applicazione quando accedono a API .

  2. Emettiamo due tipi di access_token . Quando ci vengono fornite le credenziali, restituiamo un access_token che non richiede l'autenticazione dell'applicazione sulle richieste. Ma quando un'applicazione vuole accedere senza credenziali (usando la concessione del codice di autorizzazione), restituiamo un token di accesso che richiederebbe l'autenticazione dell'applicazione sulle richieste.

Il secondo modo mi attrae di più. Ma se quello era il modo giusto, suppongo che sarebbe possibile accedere alle principali API usando solo le credenziali e senza autenticazione dell'applicazione. Anche se non sono riuscito a trovare un modo per farlo. E ho scoperto che la maggior parte delle volte, solo le applicazioni ufficiali possono accedere utilizzando le credenziali.

Il problema comune sembra che non sia possibile memorizzare client_secret privatamente sulle applicazioni di frontend. In che modo queste API identificano le applicazioni ufficiali da altre applicazioni di terze parti e impediscono loro di accedere utilizzando le credenziali?

E quale dei modi di cui sopra è il modo corretto di fare l'autenticazione dell'applicazione?

    
posta sidoshi 25.03.2018 - 10:22
fonte

0 risposte

Leggi altre domande sui tag