Attualmente sto scrivendo un sito portale per Microsoft Dynamic CRM, il portale funziona così:
- Ogni utente ha il proprio account per accedere al mio portale.
- Ad ogni utente viene assegnata una credenziale CRM separata da admin. Attualmente, sia il nome utente che la password per il sito CRM sono memorizzati come testo in chiaro (la password per il portale stesso è correttamente hash, salata, ... utilizzando AspNet Identity Core).
- Dopo aver effettuato l'accesso al mio portale, gli utenti verranno autenticati con il sito CRM in background e potranno iniziare a visualizzare, aggiungere, modificare ed eliminare record sul sito CRM.
- Gli utenti possono modificare la propria password del portale, ma le credenziali CRM sono fisse e possono essere modificate solo dall'amministratore.
Ovviamente non vorrei archiviare credenziali CRM in testo semplice, ma non riesco a trovare alcuna soluzione funzionante per il mio problema. Ho preso in considerazione le seguenti scelte:
-
Hash password CRM e archivia l'hash. Questo non funziona perché ho bisogno della password originale per l'autenticazione con il sito CRM.
-
È stata derivata una chiave dalla password dell'utente e crittografata la password CRM, quindi archiviata la password crittografata (stile gestore password). Non funziona perché admin non sarà in grado di cambiare la password CRM.
-
Come 2, ma usa la password dell'amministratore per ricavare la chiave di crittografia. Anche questo non funziona perché non posso più autenticare gli utenti con il sito CRM.