5

Il mio team sta arrivando alla fine di una massiccia revisione delle modifiche al nostro sistema e si sta preparando a fare il grande passaggio.Manutenzione dei cookie durante il passaggio delle istanze EC2 Ruby on Rails

Attualmente, siamo ospitati su AWS utilizzando IP elastici. Il nostro stack è Ruby on Rails e stiamo utilizzando capistrano. Abbiamo anche un'app blackberry e un'app per iPhone live e nelle mani dei clienti. L'autenticazione tra le applicazioni e il server avviene tramite i cookie e non alcun tipo di chiave di autenticazione.

Sono ben consapevole che questo non è il modo migliore per ottenere l'autenticazione, ma il codice legacy è legacy.

A causa della natura della nostra azienda e del servizio, è IMPERATIVO che quando passiamo oltre, gli utenti non vengano disconnessi e la sessione passata attraverso il cookie dall'applicazione mobile al server sia onorato.

ho provato i seguenti approcci:

Indicando il DNS a un IP diverso. Puntamento dell'IP elastico a un'istanza AWS diversa.

In ogni caso, i cookie non sembrano essere onorati.

Sono uno sviluppatore e non un sysadmin e ho esaurito le idee. Esiste comunque la possibilità di creare un nuovo riconoscimento per i cookie di istanza utilizzando Devise on Rails o tramite AWS? O un'altra opzione che dovrei prendere in considerazione?

+1

Stai modificando i domini durante questo passaggio? –

+0

Hai mai riparato? – bschaeffer

risposta

3

HTTP I cookie non contengono alcuna informazione sull'indirizzo IP del servizio. Sono legati al nome di dominio (o alla radice del sottodominio) e al percorso. Pertanto, è possibile modificare l'indirizzo IP del servizio tutto ciò che si desidera, purché il dominio rimanga lo stesso. Nel tuo caso entrambe le soluzioni sono valide: puoi migrare l'indirizzo IP o semplicemente modificare il valore IP del record DNS. Questo dovrebbe essere sufficiente per tenere gli utenti loggati.

Importante, la domanda che ti viene in mente è: dove conservi i dati della sessione? Quale negozio di sessione utilizzi in Rails? È possibile che non sia stata eseguita la migrazione dei dati di sessione nell'ambiente di test, pertanto il client è stato disconnesso.

L'archivio di sessione predefinito per Rails è l'archivio di cookie (i dati di sessione sono conservati lato client), quindi dovrebbe "funzionare" nel tuo caso fintanto che il tuo token segreta nell'app rimane uguale. Forse è stato rigenerato durante un dispiegamento? Potrebbe valere la pena di verificare (config/initializers/secret_token.rb) Questo token viene utilizzato per firmare i cookie per assicurarsi che il client non li abbia alterati.

Accertati che tutti questi punti siano validi nel tuo caso e ricontrolla il tuo processo di test, perché dovrebbe funzionare senza azioni aggiuntive.

+1

Il token segreto è lo stesso. Sono abbastanza sicuro che anche le sessioni siano state migrate, ma controllerò due volte. Se funziona, ti farò sapere. – user2320166

+0

Controlla nel tuo browser qual è il valore del cookie di sessione (è solo testo in chiaro codificato in base64). Questo potrebbe dare alcuni indizi aggiuntivi. – mdrozdziel