Come eseguire l'autenticazione con un'API?

2

In un sistema distribuito aziendale, un utente di un portale Web può accedere a un sito, essere reindirizzato a un provider di federazione. Una volta effettuato l'accesso con, ad esempio, un account Facebook, tale utente è federato (single-sign-on) con ogni servizio esistente nell'azienda che si fida dello stesso provider di federazione per l'autenticazione.

La mia domanda è questa; In che modo gli utenti API dello stesso sistema possono beneficiare dello stesso lusso (single sign on)? Per quanto ho capito, le chiamate API dovrebbero essere senza stato, quindi ogni richiesta dovrebbe richiedere un'autenticazione separata.

Se ciascuna delle API distribuite, quando viene chiamata da un client, deve effettuare una chiamata al provider di federazione, ottenere l'autenticazione, passare le attestazioni all'API, quindi elaborare la richiesta dei client, mi sembra un po 'di chattare in rete .

Per chiarire, uno scenario di esempio per un client API potrebbe essere:

  1. Crea un cliente (API cliente)
  2. Crea un utente per quel cliente (API utente)
  3. Effettua un ordine (ordine API)
  4. Visualizza estratto conto (API di fatturazione)
  5. Visualizza rapporto cliente (API rapporto)

Come ho detto, sembra un po 'loquace per ogni API parlare con il provider di federazione su ogni richiesta.

    
posta MrDeveloper 01.07.2015 - 16:45
fonte

3 risposte

5

In generale:

  • L'utente accede ad un sistema di autenticazione.
  • Il sistema di autenticazione fornisce un token che dice in modo efficace che "Sistema di autenticazione X asserisce di essere Bob, fino alle 15:00 del 31/08/2015 UTC".
  • L'utente passa quindi quel token come metadati (intestazione, parte dell'inviluppo dati) alle varie API.
  • Le varie API la guardano e decidono se hanno fiducia nel sistema di autenticazione X. Se lo fanno, lasciano entrare Bob, dato che solo Bob potrebbe aver avuto le credenziali di autorizzazione (password, impronta digitale, retina, ecc.) per ottenere questo token .

I dettagli nitidi di impostazione di tutto questo variano a seconda del sistema di autenticazione, del tipo di token e delle librerie API che stai utilizzando. Anche se stai facendo qualcosa oltre alla semplice integrazione di google / facebook, è probabile che ti stia angustiando.

    
risposta data 31.08.2015 - 19:58
fonte
1

Non posso usare il protocollo OAuth2 per quello. Dopo aver autenticato l'utente, il sistema emette un token di accesso ad esso. Questo token verrà inviato con ogni richiesta.

Oauth2 ha diversi flussi. Sono principalmente per l'utente finale, ma per l'interazione server-server è possibile utilizzare OAuth a due vie come l'API di Google Data.

    
risposta data 02.07.2015 - 16:18
fonte
1

A seconda di come implementerai la tua applicazione, puoi creare una risorsa / API per generare un token come @Telastyn ha detto (o puoi usare un server di autorizzazione - una diversa applicazione per generare e convalidare questi token) e passarlo come campo intestazione (in genere le persone utilizzano l'intestazione Autorizzazione) e la tua API verifica la sua validità (nella stessa applicazione o nell'applicazione di autorizzazione).

    
risposta data 31.08.2015 - 22:12
fonte