Autorizzazione di un dispositivo per l'accesso alle risorse dell'utente

3

Descrizione:

Sto costruendo un sistema di visualizzazione delle informazioni. Il sistema è costituito da quanto segue:

  • Un backend basato su Django Rest Framework che fornisce un'API JSON di basso livello
  • Un front-end web a singola pagina per gli utenti che utilizza il back-end
  • Dispositivi Raspberry Pi standalone che utilizzano l'API JSON per recuperare i contenuti da visualizzare su uno schermo
  • Gli utenti creano gli account per se stessi, dopo di che possono caricare i media sul server, creare playlist e impostare quali dei loro dispositivi utilizzano quale playlist. Ad esempio, possono caricare un'immagine, creare una playlist con l'immagine e quindi dire a uno dei loro dispositivi di visualizzare quella playlist.

    Limitazioni:

    Solo l'utente proprietario del file multimediale o della playlist può accedervi.

    I computer Raspberry Pi non possono fungere da server, possono solo effettuare richieste al back-end.

    I computer Raspberry Pi non vengono utilizzati direttamente dall'utente finale. Non ha una tastiera. Idealmente, l'utente inserisce semplicemente i cavi di alimentazione ed ethernet del dispositivo e tutto 'funziona'.

    Ogni dispositivo può avere solo un proprietario (o nessuno).

    Il dispositivo recupera solo playlist e contenuti multimediali (ad esempio immagini, video) dal server.

    Il dispositivo può recuperare solo playlist appartenenti al proprietario del dispositivo.

    Problema:

    Che cos'è un modo sicuro per stabilire la proprietà del dispositivo e accertarsi che un dispositivo possa recuperare solo playlist appartenenti al suo proprietario? Il dispositivo ovviamente non ha il nome utente / password richiesti per accedere alle risorse dell'utente in modo normale.

    Ho preso in considerazione una soluzione in cui il dispositivo ha un ID univoco troppo lungo per essere indovinato ed è disponibile solo per chi ha accesso fisico al dispositivo.

    L'utente sarebbe in grado di assumere la proprietà di un dispositivo aggiungendo l'ID del dispositivo a un elenco di dispositivi di sua proprietà.

    Questo ID verrebbe trasmesso insieme alla richiesta del dispositivo per una playlist e il server fornirà l'accesso se il proprietario della playlist e del dispositivo sono gli stessi.

    Il problema è che se qualcuno trova l'ID del dispositivo, sarà in grado di prendere il dispositivo da sé o scaricare le playlist di altre persone. Anche l'ID del dispositivo non può essere modificato.

    Quale sarebbe un modo migliore per scaricare le playlist dal dispositivo? Grazie.

        
    posta Atuos 31.10.2015 - 15:08
    fonte

    1 risposta

    4

    The user would be able to take ownership of a device by adding the device ID to a list of devices they own.

    Ciò di cui hai bisogno è un modo per dimostrare che l'utente è in possesso fisico del dispositivo.

    Passando a media (e.g. images, video) sembra che tu abbia una visualizzazione di qualche forma, quindi sarebbe più facile visualizzare sul tuo dispositivo un PIN temporaneo che l'utente deve inserire insieme all'ID del dispositivo nel tuo sito quando provano e aggiungi il dispositivo al proprio account.

    Potresti generare questo PIN online e inviarlo al dispositivo, oppure generarlo offline usando un protocollo come TOTP .

    This ID would be passed along with the device's request for a playlist

    Dopo aver intrapreso il processo di autenticazione non raccomanderei l'invio dell'ID. Invece genera una serie temporanea di credenziali durante il processo di autenticazione e le invia al dispositivo, in questo modo è possibile revocare le credenziali se necessario o se l'utente si autentica di nuovo (ad esempio, fornisce il dispositivo a qualcun altro).

    Suggerirei anche di incorporare una chiave privata univoca per ogni dispositivo, in questo modo puoi facilmente crittografare le credenziali temporanee con la chiave pubblica del dispositivo sapendo che se qualcun altro ottiene le chiavi, solo il dispositivo autentico sarà in grado di decrittografarle .

        
    risposta data 01.11.2015 - 01:08
    fonte

    Leggi altre domande sui tag