Autenticazione base-modulo Nginx

0

Voglio avere nginx davanti al mio Tomcat e fungere da gateway di autenticazione. Quindi se la richiesta non è autenticata verrà reindirizzata al modulo di login che verrà anche memorizzato su nginx. nginx raccoglierà utente / password dalla richiesta di accesso e la passerà a RestAPI per la convalida.

Non voglio archiviare il modulo di accesso su Tomcat e dare accesso a richieste non autenticate a Tomcat.

Questa configurazione è possibile? (Non ho problemi a scrivere del codice per chiamare questo RestAPI da nginx)

Grazie

    
posta Aaron_S 26.01.2017 - 15:48
fonte

1 risposta

1

È abbastanza semplice instradare le richieste in base al fatto che abbiano o meno un determinato set di intestazione. Il trucco deriva dal determinare se è impostato correttamente.

La maggior parte dell'autenticazione web è simile a questa: richiedi una pagina. L'applicazione rileva che non hai inviato un cookie di sessione e ti reindirizza alla pagina di accesso. Accedi e ottieni un cookie di sessione. Richiedi nuovamente la prima pagina, il server legge il tuo cookie di sessione e lo convalida, quindi ti invia la pagina.

La parte difficile per te riguarda la convalida. Dici di non volere nessuna richieste non autenticate per farlo alla tua applicazione, ma ciò significa che non solo devi verificare che il client abbia inviato l'autenticazione, ma che sia valido . Altrimenti, è facile per un utente malintenzionato impostare semplicemente un valore arbitrario per l'intestazione di autenticazione e ottenere l'accesso alla tua applicazione.

Di solito direi che dovresti implementare i controlli di accesso nell'applicazione. Conosce il contesto delle varie pagine disponibili e disporre dell'autenticazione e dell'autorizzazione in bundle direttamente con l'app rende più difficile per un utente malintenzionato ignorare il livello auth. Tuttavia, in base alla tua domanda, presumo che questa non sia una soluzione fattibile per te (perché è un'app di terze parti che non puoi modificare, ad esempio).

Nginx è davvero bravo nel proxy delle richieste http. Non è particolarmente adatto all'implementazione della logica dell'applicazione. Avrei richieste proxy tutte di nginx a un'applicazione di autenticazione e tale applicazione inoltra le richieste autenticate all'applicazione principale. Questo sarà molto più semplice rispetto al tentativo di implementare il controllo dell'autenticazione in nginx.

    
risposta data 26.01.2017 - 16:41
fonte

Leggi altre domande sui tag