Come deve rispondere un'API o un server quando un dispositivo si connette a un account diverso da quello a cui è associato?

-1

Nel mio sistema abbiamo account utente e dispositivi utente. Regole:

  1. Un utente può avere un solo account utente.
  2. Ogni utente può avere molti dispositivi.
  3. Un dispositivo può essere associato a un solo account utente.

Durante l'installazione iniziale, quando si aggiunge un nuovo dispositivo o dopo un "ripristino totale", l'utente deve fornire il login e la password al proprio account per associare questo particolare dispositivo all'account. Successivamente, il dispositivo invia un token univoco ad ogni richiesta e viene riconosciuto da tale token.

Quindi la situazione normale è che il dispositivo A è legato all'utente A e il tempo continua. Questa domanda riguarda la situazione in seguito, quando viene effettuata una richiesta dal Dispositivo A utilizzando le credenziali per l'Utente B.

Cosa dovrebbe accadere in questa situazione? Come deve rispondere l'API / server quando rileva che un dispositivo già associato a un account utente sta tentando di collegarsi nuovamente a un altro account?

Usiamo Dropbox come esempio. Che cosa accadrebbe quando qualcuno disinstalla il client Dropbox su uno dei loro computer precedentemente utilizzato con l'account A, quindi lo reinstalla con le credenziali per l'account B? Il client locale puntava a una cartella Dropbox contenente alcuni file, ma cercava di sincronizzarlo con un account con un set di file completamente diverso. Si noti che non ho testato una situazione del genere. Non sono disposto a farlo e non mi interessa sapere come Dropbox gestisce questo; Sto solo usando questo come esempio per aiutare a descrivere la mia situazione.

Quello che ho scoperto finora:

  1. Tratta questa situazione come una situazione normale e ricollega automaticamente il dispositivo all'account come richiesto. Ma questo non farebbe casino nel database in termini di ciò che l'utente vede o ha accesso a (statistiche, dati, cronologia, ecc.)?

  2. Considera questo come una situazione di errore. Supponiamo che per riassociare un dispositivo a un altro account, prima di tutto non ci si deve separare dal suo account precedente. Se l'utente non può accedere al proprio "vecchio" account (precedente) a causa della password persa, ecc., Deve utilizzare il modulo per la reimpostazione della password o contattare l'assistenza.

  3. Qualcosa di diverso . Non menzionato sopra.

Dopo aver fatto un po 'di riflessione e un po' di ricerca sono abbastanza convinto che l'opzione due sia la soluzione migliore per me, ma mi piacerebbe sapere che qualcuno prevede problemi importanti con questo approccio. C'è qualche ragione per cui non dovrei seguire l'opzione 2?

Modifica : questo sistema si occupa di dispositivi non computerizzati; Dropbox è solo un esempio. Nel mio scenario il 95% dei dispositivi viene sempre utilizzato dallo stesso utente e non è condiviso tra gli altri. La mia ipotesi è che questa situazione possa verificarsi solo a seguito di un errore o di azioni intenzionali, ma non supportate (hacking, controllo cosa succederà se , ecc.).

    
posta trejder 22.05.2015 - 11:49
fonte

2 risposte

1

Lo scenario che descrivi presuppone che quando il software viene reinstallato su un dispositivo, il tuo sistema riconoscerà quel dispositivo come visto in precedenza. Questo avverrà solo se, come parte della registrazione, il dispositivo deve inviare un identificativo hardware.

Se non si utilizzano tali identificazioni hardware preesistenti, ma si assegna un ID dopo la registrazione, lo scenario non si verificherà. In tal caso, se il software viene reinstallato e registrato con un altro account, sembrerà che un nuovo dispositivo B sia registrato (per l'utente B) e che il dispositivo A non si connetta più.

Se fa utilizza l'identificazione hardware preesistente per identificare i dispositivi, stai mettendo un serio ostacolo per le persone che condividono un computer (con ogni account personale) per utilizzare i tuoi servizi.

    
risposta data 22.05.2015 - 13:56
fonte
2

Molte domande di questo tipo dipendono in larga misura dall'effettivo dominio aziendale, e non è chiaro se abbiamo abbastanza informazioni per prendere una buona decisione.

any rebind is treated as non-normal situation

Questo commento suggerisce che potrebbe essere più utile inviare una risposta di errore (ad esempio 400 Bad Request ) con una descrizione del motivo per cui non stai elaborando la richiesta.

Detto questo, c'è un reale vantaggio nel richiedere un processo manuale per affrontare questa situazione? Ad esempio, richiede un qualche tipo di controllo per determinare se il trasferimento del dispositivo è valido? Le informazioni con cui l'utente lavora nella tua applicazione sono legate al dispositivo in misura tale da proteggere tali informazioni da un altro utente che potrebbe non avere l'accesso autorizzato al dispositivo? In altre parole, la risposta dipende in realtà dalle regole aziendali.

Come esempio per dimostrare che la risposta dipende dall'azienda, in un sistema su cui sto lavorando colleghiamo anche un ID dispositivo univoco (principalmente per telefoni) a un account utente. Se riceviamo una richiesta da un dispositivo per un account utente diverso da quello attualmente collegato, ci ricolleghiamo e passiamo, poiché la proprietà specifica del dispositivo non è realmente rilevante nel nostro sistema, ma solo che è associata a qualche account.

    
risposta data 22.05.2015 - 15:00
fonte

Leggi altre domande sui tag