Client telefono cellulare - Autenticazione server basata sul dispositivo

1

Ho un'applicazione mobile (Android, iOS) e un server, che gestisce le richieste dall'applicazione.

È facile eseguire l'autenticazione standard utilizzando SSL, password e token casuali per autenticare l'utente.

Tuttavia, non ho idea di come autenticare il dispositivo mobile E l'utente. Devo impedire all'utente di utilizzare altri dispositivi, quindi quello che ha usato per la prima volta (per qualche buon motivo).

Il problema è che devo aspettarmi che l'utente non collabori. Al contrario, probabilmente cercherà di usare un altro dispositivo, ma devo fermarlo.

Penso che la carta SIM debba essere la chiave di questo problema. Tuttavia, non posso apportare modifiche alla scheda SIM stessa (non riesco a installare applet SIM speciale sulla SIM). Posso utilizzare solo le funzioni di QUALSIASI scheda SIM.

C'è qualche soluzione possibile?

    
posta vojta 30.09.2015 - 15:03
fonte

2 risposte

1

Android fornisce API per archiviare e manipolare il materiale delle chiavi private senza rivelarle all'app (spesso con hardware di supporto). Puoi generare una chiave e usarla per autenticare il server.

I tasti possono essere contrassegnati come non esportabili, ma non sono sicuro se la restrizione sia applicata nell'hardware e se le chiavi saranno incluse nei backup o meno.

Anche IOS ha un portachiavi, ma le chiavi sono normalmente rese accessibili dall'app, quindi possono essere copiate su un dispositivo rooted.

    
risposta data 30.12.2015 - 17:00
fonte
0

Nell'app mobile - > scenario server, mi piace avere un approccio per ciascuna delle seguenti identità

  1. Identità utente - ovvero persona che tenta di effettuare la transazione iniziale con il tuo server
  2. Identità dell'applicazione: applicazione utilizzata dall'utente per eseguire la transazione
  3. Identità dispositivo - il dispositivo reale utilizzato.

Ognuna di queste è una parte importante della gestione completa dell'identità. Nel tuo caso, l'identità del dispositivo è l'obiettivo. Ci sono molte informazioni specifiche sul dispositivo come l'ID della carta SIM, l'IMEI, l'UDID (nel caso della mela) che possono essere utilizzate per legare un dispositivo specifico a un utente. Un approccio alternativo può essere che al momento della registrazione iniziale del dispositivo, è possibile generare una coppia di chiavi pubblica e privata su quel dispositivo. È possibile associare la chiave pubblica con l'id utente sul proprio server. Ora, ogni volta che si avvia la sessione o si esegue una transazione, è possibile utilizzare la chiave privata per firmare un token (ad esempio JWT) e inviarlo con la richiesta. Come parte del processo di autenticazione / autorizzazione sul server, puoi convalidare il token ricevuto e associarlo con l'id utente autenticato in base all'associazione salvata.

In aggiunta a ciò, presumo, hai un buon processo sul posto da gestire 1. Trasferimento del dispositivo mobile: le persone vendono o consegnano i propri dispositivi e nuove persone vogliono utilizzare il dispositivo per eseguire l'applicazione (con o senza dispositivo). 2. Utenti multipli: le persone nella stessa famiglia possono utilizzare lo stesso dispositivo ma un ID utente diverso per eseguire transazioni.

    
risposta data 30.09.2015 - 22:18
fonte

Leggi altre domande sui tag