Questi flussi OAuth2 standard sono? (Quali sono i loro nomi?)

3

Sto sviluppando una piattaforma B2B, in cui altri sviluppatori (i nostri clienti) costruiranno app in stile shop-front che sfruttano la nostra piattaforma.

Esporremo un'API basata sul REST che i nostri clienti chiamano direttamente dai loro server di app, oppure le loro app client possono tutti, per conto dei loro utenti.

Le loro app sono indipendenti e "proprietarie" della relazione con i loro utenti, inclusa l'autenticazione.

Dal punto di vista degli utenti finali, l'interazione con la nostra applicazione è trasparente.

Inoltre, i nostri clienti operano sulla nostra piattaforma ad un livello elevato di fiducia. Dato che possiedono la relazione con gli utenti (e utilizzano semplicemente la nostra piattaforma simile all'elaborazione del back-office), gli utenti non devono concedere loro l'accesso per operare sulla nostra piattaforma per loro conto.

Pertanto, abbiamo identificato due modelli di interazione standard da utilizzare con la nostra API.

Mi piacerebbe implementare il più vicino possibile a OAuth2, ma non sono sicuro che questi siano strettamente conformi ai flussi esistenti.

Flusso n. 1: server delle app dei clienti sulla nostra piattaforma

Questoèilflussoperunastrettacomunicazionedaserveraserver.

  1. L'appdelclienteeffettual'autenticazioneconnoi,passandoilclient_ideilclient_password.Restituiamounaccess_token.
  2. L'appdelclientepassailaccess_tokeninun'intestazioneAutorizzazioneatuttelechiamatefuture.
  3. Inoltre,quandolachiamatastaeseguendoun'azionepercontodiunutente,passaancheunusernameinun'intestazioneAutorizzazione.

Note:

  • Ilauthentication_tokenemessononèassociatoaunsingoloutente.Permettelorodiagirepercontodimoltiutenti(ancheselimitatoaunachiamata)

Isospettoquestaèunavariazionedelflusso"password", ma in cui la password dell'utente non è richiesta.

Flusso # 2: cliente dell'app clienti alla nostra piattaforma

Questo è il flusso in cui l'app di un cliente comunica direttamente con la nostra piattaforma, piuttosto che attraverso il proprio server delle app.

In questo scenario, l'utente è già stato autenticato con l'app clienti.

  1. L'app dei clienti è già autenticata dal flusso n. 1 e ha un access_token
  2. Il server delle app dei clienti chiama la nostra piattaforma, con il loro access_token e un nome utente. Restituiamo un access_token per l'uso per quell'utente.
  3. L'app clienti serve questo token al suo cliente.
  4. Il client dell'app dei clienti chiama la nostra piattaforma, passando il access_token in un'intestazione di autorizzazione.

Domande

Questi flussi standard esistono all'interno delle specifiche OAuth2? L'ho letto e non credo che nessuno di loro sia descritto.

Se non esistono, ci sono flussi simili che dovremmo guardare, che soddisfano ancora le nostre esigenze? In particolare:

  • I server delle app dei clienti possono eseguire azioni per conto degli utenti
  • I server delle app dei clienti non richiedono nuovi codici di accesso per ogni utente che desiderano effettuare il proxy
  • I clienti / utenti dei clienti possono accedere alla nostra piattaforma senza accedere direttamente (ma sono ancora autenticati tramite il proprio server delle app).

Ci sono problemi con uno di questi flussi che li rendono davvero pessimi?

    
posta Marty Pitt 01.05.2012 - 09:47
fonte

2 risposte

5

il tuo primo flusso sembra la concessione di credenziali del client OAuth 2.0. Questo è dove due server si fidano l'un l'altro. Le credenziali riguardano il client, non l'utente, quindi la parte relativa al passaggio delle informazioni utente e all'agire per conto dell'utente non è ufficialmente supportata.

Per il flusso # 2, probabilmente si desidera utilizzare la concessione del codice di autorizzazione. L'utente dovrebbe prima autenticarsi sul server dell'app cliente e quindi ottenere un codice di autorizzazione, che scamberebbe anche questo codice per un token di accesso. Il token di accesso verrebbe passato alla tua applicazione che poi passeresti tramite back-channel all'app del cliente per verificare l'autorizzazione e l'identità dell'utente.

Produciamo un servizio per consentire alle app di fare ciò con modifiche minime. Puoi trovare ulteriori informazioni su: link

Grazie,

Oleg

    
risposta data 27.03.2013 - 20:39
fonte
1

Non ho mai visto le seguenti parti del tuo flusso:

1 - aggiunta del nome utente al token di autenticazione fornito dal flusso

2 - invio del token alla parte non originale

Per non dire che non si potrebbe fare, ma la tua domanda è che sono standard, quindi sto rispondendo in base a ciò che ho visto lavorare con varie API.

    
risposta data 10.07.2012 - 19:14
fonte

Leggi altre domande sui tag