Come trasmettere le credenziali in API

0

Attualmente sto sviluppando il mio progetto in cui voglio utilizzare un'API per connettermi al database su un server web.

Comprendo che quando richiedi i dati, devi utilizzare GET e quando desideri caricare i dati, devi utilizzare POST / PUT . Il problema si verifica quando si desidera registrare un utente. Si richiede dati, il che significa che dovrebbe essere una richiesta GET , tuttavia, non si desidera che le credenziali dell'utente nell'URL siano memorizzate nella cronologia degli utenti e in altri strumenti di rete possono essere in grado di prenderlo in quanto non sarebbe protetto con https.

Quale sarebbe il modo migliore di richiedere dati utente tramite un'API? Sto facendo l'API con Slim Framework e sto richiedendo i dati tramite un'applicazione iOS che sto sviluppando in modo rapido. Oltre all'utilizzo del metodo GET , la mia API utilizza JSON per trasmettere i dati.

Le credenziali di cui sto parlando sono quelle di accedere all'utente nel proprio account e non in credenziali API.

    
posta iProgram 02.08.2017 - 17:30
fonte

1 risposta

3

The short answer is that you don't.

Quando si tratta di servizi Web, un approccio comune corrente è quello di utilizzare JWT (è specificato con OAuth2 e altri framework di identità).

Il tuo servizio di autenticazione convalida le credenziali dell'utente e ti fornisce un token per passare ai tuoi servizi web. Con questo approccio, il tuo servizio web non tratta mai direttamente le credenziali.

Se per qualche motivo hai bisogno di passare le credenziali, lo stesso pacchetto JWT ti permette di avere una busta crittografata per fornire la password, ma controbatterei se potessi evitarlo.

L'approccio per passare il JWT è lo stesso indipendentemente dal metodo (GET, POST, PUT, DELETE, PATCH, ecc.).

  • passa il JWT con l'intestazione Authentication
  • Il tuo token è un token "al portatore", quindi il valore è Bearer: big.jwt.token

I token JWT possono essere convalidati, analizzati e utilizzati senza round trip per i servizi di autenticazione, quindi aiutano davvero con il processo di autorizzazione.

In generale, le applicazioni web dovrebbero evitare di passare le credenziali dell'utente direttamente al database. Ciò rende difficile il raggruppamento di connessioni che sono costose da creare e che hanno implicazioni in termini di costi reali se si dispone di accordi di licenza per utente. Comprendo che alcune applicazioni devono eseguire l'occultamento dei dati in base alle autorizzazioni dell'utente, ma esistono diversi modi per gestire tale processo. Tutto ciò di cui hai bisogno può essere contenuto nel JWT.

    
risposta data 02.08.2017 - 17:54
fonte

Leggi altre domande sui tag