7 messaggi dal 12 ottobre 2012
Ciao Carissimi,


ho un progetto web in cui utilizzo Microsoft Aspnet Identity versione 2.1

ora devo implementare un meccanismo che costringe gli utenti a non utilizzare

una password precedentemente utilizzata nelle ultime 10 volte.


Le password in uso, è criptata nel db, quindi non posso fare un confronto in una eventuale tavola
contenete le password precedentemente usate.

Come posso risolvere ? Avete qualche esempio ?

Ciao e grazie...
427 messaggi dal 13 novembre 2009
Perché non lo puoi usare? Prima di salvare la password applichi a questa la criptazuone e poi la confronti con quelle salvate in una tabella ad hoc. In questa devi salvare la salt e hash password ogni volta che cambi password
7 messaggi dal 12 ottobre 2012
Ciao Flavio, e grazie per la risposta.

Ma hai un esempio di codice, o un articolo ?

Ho provato a fare quanto dici (ribadisco che uso Microsoft Aspnet Identity versione 2.1)

ma anche se la stessa password contiene il medesimo "valore" (ad esempio ABC123*) questa

viene sempre criptata in modo diverso.

A te risulta ?

Ciao e grazie ancora
427 messaggi dal 13 novembre 2009
Microsoft.AspNet.Identity.CheckPassword(user, password in chiaro passata dall'utente) verifica se la password è quella salvata sul DB (PasswordHash)
Questo è il metodo in fase di login.
A te serve qualcosa di piu articolato, il seguente...
Se l'utente cambia o è obbligato a sistema a cambiare password per verificare che non stia inserendo la stessa ti serve di salvare le password dalla prima all'ultima una nuova tabella (Password_History) da gestire magari in applicationContext (immagino tu voglia utilizzare EF Code Fisrt)
Password_Hystory:
Id Sequence bigint
Username FK => aspnet_users identity (è univoco)
PasswordHash quella generata dal sistema

Filtrando quindi le password per username, quando questo cambia la propria otterrò dalla tabella Password_History un set di password hashed. Utilizza quindi PasswordHasher.VerifyHashedPassword, quindi
foearch(Password_History p in db.Password_History.Where(f=> f.Username == username)
{
if(PasswordHasher.VerifyHashedPassword(p.PasswordHash, newPasswordInChiaroPassatadallutenteincelladitesto))
password già usata
}
scritto un po da cani ma spero sia chiaro il succo
F.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.