Open cerringham opened 1 year ago
Codice per salvare l'hashcode della password
public static String hashPassword(String plainText) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(plainText.getBytes());
BigInteger number = new BigInteger(1, messageDigest);
return number.toString(16);
}
Codice per mostrare i dati criptati in base64
private static String encodeString(String stringToDecrypt) {
return new String(Base64.encodeBase64(stringToDecrypt.getBytes()));
}
demo-recruiting-17-alessio demo-recruiting-17-veronica
import org.apache.commons.codec.binary.Base64;
Realizzare un servizio di autenticazione. Per autenticarsi è necessario inserire una username e una password validi. Queste informazioni sono memorizzate nel database va quindi prevista la creazione di una tabella di nome account (non è possibile creare una tabella con nome user). La tabella deve contenere le seguenti informazioni:
Realizzare quindi un servizio REST che permette di inserire un account del database: /add-account che prende in input le informazioni di cui sopra (name, surname, email, username, password) e le salva nel database. Controlli da fare: username ed email devono coincidere. La password deve contenere almeno una lettera maiuscola, almeno un numero e almeno un carattere speciale. Lunghezza minima 6 massima 12.
Ogni volta che un utente si autentica con successo viene generato un access-token. L'access-token è univoco (non ci sono mai access-token uguali tra di loro) ed è composto:
Deve essere memorizzata l'associazione account access-token sul database quindi visto che ogni volta che faccio un login genero un access-token questi vanno salvati in una relazione uno a molti. L'access-token inoltre ha una proprietà che è la durata che vale 10 minuti, trascorso questo tempo l'access-token non è più valido. Va da se che occorre anche un attributo che indica se l'access-token è valido o meno.
Realizzare un servizio REST /login che prende in input un DTO con username e password e se queste sono corrette crea l'access-token, memorizza lo stesso sul database e restituisce uno status success. Altrimenti restituisce not authorized.
Realizzare un servizio REST /check-access-token che preso in input un access-token controlla se lo stesso è ancora valido o meno (questo servizio verrà poi disattivato, ma per il momento realizziamolo). Ovviamente va controllato anche che l'access-token rispetti il formato atteso.
Acceptance Criteria Il servizio di add-account deve restituire una ResponseEntity positiva nel caso in cui l'account è correttamente creato altrimenti una BadRequest. Sono necessarie tutte le validazioni sui campi viste nei task precedenti.
Il servizio di login oltre a creare un nuovo access-token deve porre lo status is_active a false per tutti gli altri token relativi a quell'utente