Collegamento del server di posta con il database dell'applicazione

0

Ho un'applicazione web in esecuzione su node.js, supportata da un database MongoDB che memorizza i dati degli utenti, ecc ... Vorrei offrire ai miei utenti un account e-mail, quindi ho configurato un server di posta usando Postfix , dovecot, ecc ... Il mio problema è che mi piacerebbe collegare i due database degli utenti. Attualmente ho postfix e dovecot configurati per utilizzare gli utenti virtuali memorizzati in un database mysql (in realtà MariaDB), e questo funziona perfettamente (posso accedere e inviare email su IMAP ecc ...). Tuttavia, voglio che i miei utenti siano in grado di utilizzare la stessa password per IMAP come per accedere all'applicazione web. Sono felice di scrivere una API PHP per creare utenti sul server di posta, ecc., Ma il mio problema è come gestire le password. Per come la vedo, ci sono due opzioni;

  1. Posso trasmettere le password in formato testo dal mio server di applicazioni Web al mio server di posta quando un utente si registra o modifica la password. Ciò ovviamente verrebbe sottoposto a hash sul server di posta e archiviato nel database mysql e sottoposto ad hashing sul server delle applicazioni e archiviato nel database MongoDB. Questo mi sembra in qualche modo sbagliato - trasmettere una password in testo semplice in due hop simili.
  2. Posso trasmettere le password con hash dal server delle applicazioni al server di posta e archiviarle di nuovo senza . Di nuovo, questo sembra piuttosto azzardato, dal punto di vista del server di posta, accetta le password e le archivia in testo in chiaro.

Esistono altre opzioni per consentire ai miei utenti di accedere a entrambi i server con le stesse credenziali? Quali sono i problemi di sicurezza con le due opzioni che ho pensato sopra?

    
posta macleos 13.07.2018 - 18:19
fonte

1 risposta

1

C'è anche una terza opzione da considerare: un framework di autenticazione.
Invece di disporre di credenziali utente separate per il database e il server di posta che devono essere mantenuti sincronizzati, disporre di un servizio di autenticazione centrale a cui il database e i server di posta differiscono quando un utente tenta di autenticarsi. Ci sono diverse opzioni tra cui scegliere, ma probabilmente vorrai iniziare con le applicazioni attualmente supportate. Da quello che posso raccogliere, sia MongoDB che postfix supportano LDAP e SASL, quindi quelle sarebbero due opzioni da esaminare.

Per quanto riguarda i problemi di sicurezza con i metodi che hai suggerito: anche se hai trovato una trasmissione sicura della password, devi ancora occuparti della sincronizzazione. Se si verifica un errore in un momento inopportuno (ad esempio, se un utente cambia la propria password mentre postfix non è disponibile), si ottengono credenziali non corrispondenti su ciascun servizio. Potrebbe essere risolto, sì, ma confrontare le credenziali sui due server implicherebbe la trasmissione di almeno alcuni dati sensibili. In una situazione più nefasta, considera cosa succederebbe se le credenziali fossero de-sincronizzate quando un utente veniva bannato. Potrebbero finire per mantenere un accesso parziale alle risorse a cui non dovrebbero avere accesso.

    
risposta data 13.07.2018 - 19:26
fonte

Leggi altre domande sui tag