Semplice gestione delle sessioni su più server applicazioni

1

Come devo gestire l'autenticazione per una semplice app di chat per iPhone?

Backend

Sto costruendo il back-end usando due server di applicazioni:

  1. Sinatra REST Server

    Elenca utenti e amp; vecchi messaggi.

  2. Node.js WebSocket Server

    Invia e amp; riceve nuovi messaggi.

Proposta

  1. Quando un utente si registra o effettua il login, il server REST restituisce un token di accesso.

  2. L'app per iPhone passa quel token di accesso al server WebSocket alla connessione .

  3. Il server WebSocket ricava l'ID utente dal token di accesso.

Pensieri

Voglio fare la minima quantità di lavoro che renderà l'app ragionevolmente sicura.

  1. Autenticazione app iPhone: salva cleint_secret condivisa sull'app iPhone utilizzando Servizi portachiavi . Passa client_secret al server REST per la registrazione e amp; richieste di accesso. Ciò consente al server REST di verificare che tutte le richieste provengano dall'app iPhone e quindi impedire agli aggressori di registrarsi o accedere da altri client. Facebook autentica le app iOS utilizzando solo app & ID bundle. Sarebbe bello perché non avrei bisogno di creare un client_secret , ma non sono sicuro di come lo fanno.

  2. Generazione di token di accesso: Sarebbe bello se l'ID utente fosse in qualche modo crittografato nel token di accesso con una condivisione segreta tra REST & Server WebSocket. Quindi, il server WebSocket potrebbe utilizzare il segreto condiviso per verificare il token di accesso ed estrarre l'ID utente da esso. È possibile? In tal caso, che cos'è un algoritmo sicuro per ottenerlo? Penso di poterlo fare con HMAC , dove il messaggio è il ID utente. In tal caso, quale algoritmo HMAC dovrei usare? Ecco alcuni dei miei recenti pensieri su come generare un token di accesso . Qualcosa come HMAC sarebbe bello perché non avrei bisogno di memorizzare i token di accesso per ogni ID utente, ad esempio in un database Redis. Anche se forse è quello che dovrei fare. Perché ora che ci penso, se uso qualcosa come HMAC e il token di accesso di un utente viene rubato, come faccio a ripristinare quel token di accesso senza doverli resettare tutti?

posta ma11hew28 13.02.2014 - 06:35
fonte

0 risposte