Autenticazione, autorizzazione nei client mobili nativi (Android)

2

Sto sviluppando un client mobile nativo per lo store che richiede l'autenticazione dell'utente per rendere disponibili gli acquisti.
Ho la mia pagina web store, l'autenticazione è fornita da CMS (OpenCart).
Ora devo implementare l'accesso sicuro e affidabile sui dispositivi mobili.
Utilizzo API REST per ottenere dati pubblici di dati dal sito Web (prodotti, vendite ....).
Ma qual è la scelta migliore se devo fornire una connessione sicura tra client mobile nativo e il mio server web.
Sto usando "nativo" per notare che nell'app non c'è una vista web o qualcosa di simile.

Esistono molte app simili dei famosi negozi online (Ali, Ebay, Amazon) tutte queste autorizzazioni per l'uso delle app senza meccanismi integrati nel browser, mi chiedo come fanno a implementarle.

Quali sono i modi possibili per proteggere le azioni importanti dell'utente nel client nativo.

Naturalmente ho letto molto su questo, ma non esiste una buona soluzione, così come nessun articolo descrive approcci disponibili.

Si prega di suggerire quale sia il modo sicuro, robusto e non molto difficile per farlo.

Sono grato per qualsiasi aiuto in anticipo.

    
posta CROSP 30.05.2015 - 21:11
fonte

1 risposta

2

Senza capire meglio la tua app, ci sono molte risposte corrette a questa domanda.

Una strategia comune è usare username / password per autenticarsi con la tua API. In caso di autenticazione riuscita, l'API creerà e restituirà un token di autenticazione. La tua app passerà quindi il token di autenticazione a ogni chiamata successiva.

Il formato tipico di un token di autenticazione è

username + other data + HMAC(user + data, secret known only to the server)

Quando il server riceve il token auth in una chiamata successiva, analizza il nome utente e gli altri dati (qualunque cosa si desideri memorizzare), esegue l'HMAC e quindi lo confronta con HMAC nel token. Se corrisponde, hai un accesso valido, altrimenti registri il tentativo e interrompi.

Questa strategia consente al server di essere senza stato poiché qualsiasi informazione importante può essere memorizzata nel token di autenticazione. Se è necessario mantenere una sessione sul server, è possibile utilizzare un token di autenticazione del formato:

session ID + HMAC(session ID, secret known only to the server)

Probabilmente vuoi che session ID sia un numero casuale sicuro e non un contatore o un puntatore di memoria poiché non vuoi che il client sia in grado di indovinare altri ID di sessione anche se il client non può falsificare il token senza il segreto.

    
risposta data 30.05.2015 - 22:14
fonte

Leggi altre domande sui tag