Oauth2 come funziona (client Android)

4

Ho letto molto su Oauth2 ma non riesco ancora a capire, come funziona. Spiegherò come faccio a capire questo protocollo.

Ci sono alcuni personaggi principali nell'interazione con il protocollo Oauth.
Utente, applicazione, provider di risorse e server di autorizzazione.
Come posso capire il flusso principale.
Sto creando un client mobile, quindi lo userò come esempio.

In primo luogo, l'app installa utenti, che prima che l'utente esegua questa app per accedere alle risorse protette, l'utente deve immettere la password e accedere non direttamente alle credenziali per il server delle risorse, ma per il server delle autorizzazioni. Ad esempio, ho un'app store online, l'utente ha il permesso di accedere tramite l'account Facebook, quindi quando l'utente ha bisogno di accedere alle risorse dal mio sito il primo passo autorizzerà con l'account Facebook. Inserisci login e password e se le credenziali sono corrette, il server di Facebook ti dà o il token di accesso alla tua app.

Dopo aver ottenuto il token di accesso, lo memorizzi sul dispositivo in un posto sicuro o in un database locale (per Android è SQLite).
Quando si è effettuato l'accesso con successo, il server Oauth reindirizza al token wit del provider di risorse (il mio negozio online), il server di risorse salva questo token nel database insieme all'ID utente / nome di accesso. Così ora il tuo server delle risorse sa che l'utente con tale id può accedere a risorse sicure con questo token.

Sul lato client (app per Android) ora hai questo token, ha una data di scadenza. Quando hai bisogno di accedere a risorse sicure, passa questo token nel tuo POST / PUT o qualsiasi richiesta tramite il protocollo HTTPS, perché se un'altra persona ottiene questo token, può essere utilizzato per accedere a privati e apportare modifiche.

Ad esempio, è necessario effettuare un ordine, dal client mobile si effettua la richiesta REST con il token allegato, il server di risorse controlla questo token e se è lo stesso del database è possibile accedere / modificare le risorse protette.

Ho ragione o non ho capito correttamente il protocollo Oauth?

Ora le mie domande

  1. Se ho un client nativo e non ho la possibilità per l'utente di accedere con account di social network e altri server Oauth2 nella rete, autorizzo solo l'accesso come nella pagina web? Con password e login. In questo caso Oauth2 non è applicabile in questo caso? Se sì, la prossima domanda.

  2. Che cosa dovrei usare invece? Devo inviare le credenziali una sola volta al mio server delle risorse, le controllerà, genererà un token se tutto è ok, metterà il token nel database e restituirà la risposta positiva all'app. Ad esempio, utilizzando il metodo POST sulla connessione https per inviare la password e accedere per la prima volta. Ora il server delle risorse mi invia lo stesso token del flusso Oauth?

  3. Come posso proteggere il token emesso? Fai in modo che l'utente rientri login e password dopo un po 'di tempo?

Per favore aiutami a ottenere questo. Sarei grato per qualsiasi aiuto.

    
posta cvuibpsb 05.06.2015 - 18:45
fonte

1 risposta

1

Per le tue domande:

  1. [...] I don't have ability for user to login with social network accounts and other Oauth2 servers in the network [...].

Avrai bisogno del tuo server di autorizzazione OAuth, che gestirà il tuo server delle risorse . Il server OAuth di Google, Facebook, Twitter, ecc. Non sarà di aiuto perché, per quanto ne so, può solo concedere l'accesso alle proprie risorse come email, foto, post, ecc.

Un esempio potrebbe essere:

  • Hai bisogno di un'immagine per il tuo servizio.
  • Vuoi quello che sta usando un altro sito.
  • Sei autorizzato dal proprietario dell'immagine (tipico dell'utente)
  • Con il token ora puoi accedere alla foto.

Penso che tu abbia compreso il flusso del protocollo, ma probabilmente confondi Autenticazione (verifica identità) e Autorizzazione (concedi l'accesso alle risorse).

OAuth v2.0 è un protocollo autorizzazione , gestirà l'accesso alle risorse. Per rendere possibile per altri servizi (questa potrebbe essere la tua app) accedere ai dati del tuo server delle risorse.

    
risposta data 23.08.2015 - 11:35
fonte

Leggi altre domande sui tag