Post

Visualizzazione dei post con l'etichetta Security

Spring Security 3.1: StandardPasswordEncoder

Immagine
DOMANDA: Come posso criptare le password  con Spring Security 3.1 ? RISPOSTA: Per codificare le password in modo  sufficientemente sicuro , bisogna seguire i seguenti step: 1. utilizzare un codificatore hash che implementi un buon algoritmo 2. aggiungere il salt 3. concatenare una stringa randomica al salt.  Fortunatamente tutti questi fattori sono facilmente implementabili con Spring Security  utilizzando pochi step di configurazione. Nel nostro esempio utilizzeremo  la classe StandardPasswordEncoder .  Essa è in grado di codificare la password con l'algoritmo di hashing SHA-256  ed aggiungere, in automatico, un valore di salt randomico di 8 byte. Inoltre, passando una stringa al costruttore (nell'esempio di seguito: "123456"), Spring la concatenerà al salt generato rendendo più robusto il sistema di sicurezza.    Ecco quindi le righe da aggiungere al nostro file di configurazione spring-security.xml : <beans:bean id = "enco

Spring Security 3.1: Hello World

Immagine
DOMANDA: Come faccio a installare Spring Security 3.1 e lanciare un'applicazione funzionante in 5 minuti? RISPOSTA: Niente paura: ecco un tutorial veloce che fa al caso vostro. Scaricate e scompattate nelle directory che preferite: Spring Security 3.1 Apache commons logging 1.1.1   AOP Alliance API 1.0 (binary jar) CGLIB JSTL 1.2 A questo punto creiamo un Progetto Web Dinamico di nome "HelloSecurity". Il progetto dovrà apparire così: Schema del progetto HelloSecurity con a destra il dettaglio delle librerie.  Scriviamo prima i files di configurazione. Dispatcher-servlet.xml: <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:context = "http://www.springframework.org/schema/context" xmlns:security = "http://www.springframework.org/schema/security" xmlns:p = "http://www.springframework.org/schema/p" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation =

@PreAuthorize

DOMANDA: Ho questo controller: @Controller public class HelloController {     @RequestMapping ( "/menu.htm" )     @PreAuthorize ( "hasRole('autore')" )    public String provaPreAuthorize(){       return "autore" ;    } } @PreAuthorize non funziona e non reagisce come dovrebbe, facendo passare anche utenti non autorizzati. Perchè viene ignorato ? RISPOSTA: Il problema inizialmente crea non pochi grattacapi. Intanto stiamo parlando di Spring Security 3.0 o successivi, perchè nelle versioni precedenti esistevano altre annotazioni meno potenti chiamate @Secure. Non mischiate mai nello stesso progetto i 2 tipi di annotazione che non funzioneranno a causa di conflitti negli xml. La soluzione è ancora una volta semplice, bisogna aggiungere nell'xml di configurazione della DispatcherServlet (e non dentro quello della Security) le seguenti righe tra gli attributi del tag beans : xmlns:security = "http://www

Configurare Spring Security 3.1

DOMANDA: Che cosa significano i tag che scrivo negli xml quando configuro Spring Security 3.1? Quali sono le impostazioni minime? RISPOSTA: Configurare Spring Security 3.1 non è difficile, ma ci si può facilmente perdere per strada se non si ha il giusto approccio al problema e se non si conoscono almeno le funzionalità di base offerte. Se cercate un'esecuzione al volo di codice funzionante, c'è un'altra mia risposta  sempre su questo blog. In questo post spiego in maniera più curata i dettagli. Visione di insieme di Spring Security 3.1: Spring Security è un framework per Java EE che si occupa di mettere in sicurezza un progetto enterprise utilizzando come concetti di base l' autenticazione , le autorizzazioni ed eventuale crittografia  della password. Per poterlo utilizzare c'è però bisogno di configurarlo in maniera opportuna e seguire delle linee guida. Questa discussione dà per scontato e ragiona su un prog