Domanda Autenticazione / autorizzazione REST


Ho bisogno di alcuni consigli su come proteggere la mia domanda:

Ho un servizio REST, usando Spring MVC 3

Ho la mia applicazione client, usando Ext GWT 2.2

Le credenziali degli utenti sono disponibili solo sul lato server.

SSL disponibile

I servizi REST devono essere utilizzati solo da utenti autorizzati.

Ho letto su HTTP Digest, autorizzazione basata su token, oAuth ecc., Ma ho bisogno di alcuni chiarimenti e consigli su come proteggere la mia applicazione, e quali sono i metodi migliori nel mio caso.


13
2018-04-27 21:54


origine


risposte:


ecco la metodologia che abbiamo creato per le nostre applicazioni, funziona molto bene ed è molto sicuro.

questa è una spiegazione molto concettuale, c'è un sacco di codice che supporta questo, FYI

  • Quando l'utente autentica o crea un account, il server restituisce un certificato x.509, codificato Base64, che è univoco per l'utente. Il server memorizza una copia.

  • Ogni volta che il client deve accedere all'API REST, il client crea una stringa JSON comprendente quanto segue.

  • L'ID univoco dell'utente (UserID)

  • Un GUID o UUID, che garantisce che questa chiamata sia unica, (CallID) (protegge dagli attacchi di replay)
  • Un dizionario (insieme di chiave / valore) di ciascun parametro della chiamata di riposo

quindi crittografiamo quella stringa con la chiave pubblica x.509 e la codifichiamo alla stringa base64 e prendiamo questo valore crittografato e aggiungiamo l'ID utente a un oggetto json che chiamiamo il token.

inseriamo quindi il token nell'intestazione di ogni chiamata e lo chiamiamo qualcosa come: X-Auth-UserToken

Ad ogni chiamata il server prende il token, cerca il certificato degli utenti in base all'ID utente, quindi verifica che la parte crittografata del token possa essere decodificata con la chiave privata che il server conserva per l'utente.

una volta decrittografato, il server prende il CallID e verifica che sia univoco, contro il proprio registro delle chiamate db.

se si verifica, l'utente è autenticato.

una volta che l'utente è autenticato, è possibile applicare le proprie regole di autorizzazione in base al uniqueID degli utenti.

ovviamente, tutto quanto sopra è su SSL.

fammi sapere se hai bisogno di me per scavare su qualsiasi parte.


26
2018-04-27 22:19