App nativa: login con username e password

1

Ho web api, per ora utilizza oauth2 tipo di concessione del codice di autorizzazione per comunicare con la mia applicazione nativa. Il browser Web verrà aperto all'interno dell'app per inserire nome utente e password, aprire la pagina di autorizzazione ecc.
Voglio implementare la possibilità di accedere all'app nativa utilizzando nome utente e password senza vista Web perché è la nostra app nativa ufficiale. Sembra il tipo di concessione delle credenziali del proprietario delle risorse . Ma è ovviamente insicuro perché clientid è disponibile insieme all'app per tutti. Ma vedo che funziona (credenziali all'interno dell'app) per l'app ufficiale di Twitter e altri. Quindi suppongo che utilizzino una logica di autorizzazione non oauth2 tipo di concessione delle credenziali del proprietario delle risorse per le loro app native native. Qualche idea qui? Come costruire questa comunicazione in modo sicuro?

    
posta mtkachenko 21.10.2016 - 15:49
fonte

2 risposte

1

Lo scenario che stai tentando di implementare non è raccomandato in OAuth 2.0 per le app native

The best current practice for authorizing users in native apps is to perform the OAuth authorization request in an external user-agent (typically the browser), rather than an embedded user-agent (such as one implemented with web-views).

Quindi, dato che hai dichiarato di voler implementare in modo "sicuro", la procedura migliore è reindirizzare al browser di sistema anziché gestire direttamente il flusso all'interno della tua app.

Tuttavia, se decidi di gestire le cose "nell'app", dovrai implementare un client http (agente utente) come parte della tua app. L'agente utente personalizzato nella tua app dovrà quindi gestire la serie di richieste e risposte per eseguire il flusso OAuth 2 che il browser di sistema normalmente gestirà. Una parte di questo include la richiesta all'utente di credenziali che verrebbero passate al server di autorizzazione per l'autenticazione.

    
risposta data 23.10.2016 - 04:24
fonte
0

Quello che stai cercando è identificare un utente che utilizzi le sue credenziali di social network, tra la tua app nativa e il tuo servizio. Quando si riceve il token dal provider di identità, lo si invia al servizio. Il servizio quindi "interroga" il provider di identità per scoprire chi è questo utente. Una volta confermato che il token è valido, puoi creare una sessione per questo utente su quel dispositivo.

La tua app nativa dovrebbe utilizzare il flusso implicito . Ciò non richiede che il client memorizzi l'ID client.

Utilizzando la piattaforma SDK puoi ottenere pulsanti "nativi" nella schermata di accesso della tua app. Questa libreria viene scaricata da FB, Google, ecc. Per ogni piattaforma che desideri supportare.

Nota: l'app comunica con il provider di identità utilizzando Oauth2 e il servizio comunica con il provider di identità utilizzando Oauth2. La comunicazione tra la tua app e il tuo servizio non fa parte delle specifiche Oauth2.

Dai un'occhiata a questo articolo per un eccellente riassunto di come questo si blocca insieme: link

    
risposta data 22.10.2016 - 19:24
fonte

Leggi altre domande sui tag