Attualmente sto costruendo una nuova applicazione e sto provando ad applicare alcuni dei principi di Pulisci architettura . Uno dei miei primi roadblock sta implementando il mio sistema Identity
(per evitare di essere strettamente associato alla libreria AspNetCore.Identity
.
Una delle mie preoccupazioni è l'hashing della password e la generazione. Sto osservando un processo simile o simile al AspNetCore. Identity Password Hasher , ma non sono abbastanza sicuro di dove dovrei gestire questa logica.
Il mio pensiero iniziale è che si tratta delle mie entità di dominio, dovrei inserirle nel mio livello Domain
. Tuttavia, sono preoccupato che questo creerà mal di testa e logica sparsa in futuro mentre convalido le password. D'altra parte, potrei definire la mia interfaccia IPasswordHasher
nel mio livello applicativo, ma questo ha la conseguenza negativa del mio strato applicativo che regola il mio schema di hashing e di convalida. Nel caso in cui condivido queste entità con un'altra applicazione in futuro, dovrei assicurarmi che l'algoritmo di hashing sia lo stesso.
Ma con lo stesso token, sarebbe bello usare semplicemente l'interfaccia IPasswordHasher
che è già definita in Microsoft.AspNetCore.Identity
, ma non voglio avere quell'accoppiamento stretto.
Quindi quale sarebbe l'approccio ideale per implementare una sorta di logica di hashing (potenzialmente anche solo usando il PasswordHasher definito in AspNetCore) senza dover fare riferimento alla libreria AspNetCore nei miei livelli di applicazione / dominio? E dove dovrei effettivamente implementare l'hashing della password, al livello dominio o al livello applicazione?