Come dovrebbe un'API utilizzare l'autenticazione di base http

17

Quando un'API richiede che un client effettui l'autenticazione, ho visto due diversi scenari utilizzati e mi chiedo quale caso dovrei usare per la mia situazione.

Esempio 1. Un'azienda offre un'API per consentire a terzi di autenticarsi con un token e un segreto utilizzando HTTP Basic.

Esempio 2. Un'API accetta un nome utente e una password tramite HTTP Basic per autenticare un utente finale. Generalmente ottengono un token per le richieste future.

My Setup: avrò un'API JSON che uso come back-end per un'app mobile e web. Sembra una buona pratica sia per l'app mobile che per quella web inviare un token e un segreto in modo che solo queste due app possano accedere all'API bloccando qualsiasi altra terza parte.

Ma l'app mobile e web consente agli utenti di accedere e inviare post, visualizzare i propri dati, ecc. Quindi vorrei che si collegassero anche tramite HTTP Basic a ogni richiesta.

In qualche modo utilizzo una combinazione di entrambi questi metodi o inviamo solo le credenziali dell'utente finale (nome utente e token) ad ogni richiesta? Se invio solo le credenziali dell'utente finale, le memorizzo in un cookie sul client?

    
posta Paul Sylling 12.09.2012 - 12:22
fonte

2 risposte

7

L'autenticazione di base HTTP richiede l'username e la password da inviare con ogni richiesta di risorsa. Il nome utente: la password viene passata nell'intestazione della richiesta "Authorization", stringa codificata base64 con prefisso "Basic". Se tutte le tue comunicazioni http sono crittografate (tramite ssl), le informazioni sull'intestazione dell'autorizzazione non dovrebbero essere facilmente utilizzabili dagli aggressori poiché è improbabile che possano essere in grado di afferrarle.

Il protocollo SSL crittografato con autenticazione di base dovrebbe essere sufficiente.

    
risposta data 18.10.2012 - 19:28
fonte
0

OAuth / OpenID può funzionare, insieme a token / secret?

Recentemente ho contemplato il seguente scenario:

  • Front-end dell'applicazione Web
  • API REST sottostante
  • Applicazioni per dispositivi mobili, che accedono all'API REST

Come semplice test, sono stato in grado di:

  • Autentica gli utenti tramite l'applicazione Web utilizzando OAuth
  • L'API REST autorizzata tramite OAuth, che genera un segreto generato e restituito al client
  • Il dispositivo mobile verrebbe quindi autenticato tramite OAuth e quindi autorizzato dall'API REST tramite il segreto

Ciò consente all'applicazione per dispositivi mobili di autenticarsi con le stesse credenziali di tramite il Web Front End (lo stesso account) e anche di autorizzare l'accesso all'API.

    
risposta data 18.09.2012 - 05:26
fonte

Leggi altre domande sui tag