Ho l'obbligo di implementare l'accesso tra domini per due app Web (APP1 e APP2) in modo che un utente possa accedere a APP2 dopo aver effettuato l'accesso all'AP1. APP2 deve conoscere un ID dell'utente che ha effettuato l'accesso a APP1. Ho trovato una soluzione ma non sono sicuro che sia il modo migliore per farlo. Potrebbe per favore dare un'occhiata a questa soluzione e indicare potenziali vulnerabilità o darmi qualche suggerimento su come ottenerlo in un modo migliore? Ecco la soluzione:
-
APP1 ha un collegamento a APP2 da qualche parte sul sito web. Il link contiene un token di accesso che viene generato dal server di APP1, cioè collegamento
-
Un token di accesso è un testo semplice crittografato utilizzando un algoritmo a chiave simmetrica come AES e una password di crittografia nota solo con APP1 e APP2. Contiene le seguenti informazioni: userId, indirizzo ip, timestamp, chiave segreta, vale a dire. 00001,87.143.203.12,1399725213, a chiave segreta
-
APP2 riceve la richiesta, decrittografa il token di accesso utilizzando la password di crittografia e verifica quanto segue:
- Referer HTTP - deve corrispondere all'URL del server APP1
- indirizzo IP
- chiave segreta - entrambe le app condividono la stessa chiave segreta (non è uguale alla password di crittografia) per verificare che la richiesta provenga da APP1
- se il token di accesso è stato utilizzato o meno.
-
APP2 garantisce che un token di accesso può essere utilizzato una sola volta, quindi non sarà possibile rubare un token di accesso e utilizzarlo per accedere a APP2 da un altro computer.