Attualmente, ho questa applicazione mobile ibrida che comunica con il mio servizio web C # per effettuare transazioni CRUD. Poiché l'applicazione mobile è sempre in movimento e potrebbe non esserci la connettività Internet in tutte le situazioni.
Pertanto, sto pensando di utilizzare le transazioni SMS in modalità offline.
Per accesso:
- Usando sms, comunica al server per richiedere il token di accesso.
- Token generato e inviato tramite SMS al numero di telefono dell'utente registrato
- Utente quindi inserisci l'OTP entro 5 minuti di validità
- L'app quindi comunicherà con il server con l'OTP, una volta verificato, l'utente andrà invece in un'interfaccia utente speciale per l'accesso offline.
Per le transazioni:
- Il telefono invia un sms al dongle 3G (Session Session, ID utente, tipo di transazione, dettagli transazione)
- SMS server ha ricevuto il messaggio sms
- Applicazione che gestisce il messaggio sms, memorizza il messaggio ricevuto in una coda di messaggi
- L'applicazione eliminerà la coda dei messaggi ed elaborerà prima il messaggio meno recente
Ci sono alcune domande in cui mi piacerebbe avere alcuni suggerimenti in:
- Come faccio a mantenere una sessione unica tramite SMS? (Token?)
- Come faccio a mantenere la sicurezza? (Come nel messaggio di testo è, naturalmente, illeggibile dagli esseri umani, ma non può essere duplicato e praticabile solo per quella transazione)
Farei tutto quanto sopra con i propri codici / librerie senza utilizzare servizi cloud / web esterni in quanto è più per un progetto di società interna.
Aggiornamento:
Sto pensando di usare i "contatori", dove il mio corpo del messaggio di testo avrebbe un contatore al suo interno.
Ad esempio: Contatore app: 1 contatore server: 0
1.App invia una richiesta di transazione. (Contatore app: 1)
2. Il server decrittografa e controlla il contatore. (Dal 1 > 0, consenti richiesta e incrementa il contatore del server a 1)
In questo caso, anche se vi è un messaggio di testo duplicato inviato dall'utente, il messaggio non verrà elaborato come il contatore è ora 1. (1 > 1 restituirà false).
A prescindere da più utenti che accedono allo stesso account e incasinano i contatori , che cosa dovrei prendere in considerazione?