Package it.rol

Class SessionManager

java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
it.rol.SessionManager
All Implemented Interfaces:
Constants, Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class SessionManager extends javax.servlet.http.HttpServlet implements Constants

SessionManager è la classe che si occupa dell'autenticazione dell'utente, dell'impostazione dei privilegi, di eventuali cookies, del logout e di quant'altro occorra alle funzioni di gestione utenti della web-application Rischi on Line (rol).

Author:
Giovanroberto Torre
See Also:
  • Field Details

    • LOG

      protected static Logger LOG
      Log per debug in produzione
    • SALT_LENGTH

      public static final int SALT_LENGTH

      Costante indicante la lunghezza in termini di caratteri del seme, usato per la criptazione della password.

      See Also:
  • Constructor Details

    • SessionManager

      public SessionManager()
  • Method Details

    • init

      public void init(javax.servlet.ServletConfig config) throws javax.servlet.ServletException

      Inizializza, staticamente, alcune variabili globali.

      Specified by:
      init in interface javax.servlet.Servlet
      Overrides:
      init in class javax.servlet.GenericServlet
      Parameters:
      config - la configurazione usata dal servlet container per passare informazioni alla servlet durante l'inizializzazione
      Throws:
      javax.servlet.ServletException - una eccezione che puo' essere sollevata quando la servlet incontra difficolta'
    • doGet

      protected void doGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) throws javax.servlet.ServletException, IOException

      Gestisce le richieste del client effettuate con il metodo GET.

      Overrides:
      doGet in class javax.servlet.http.HttpServlet
      Parameters:
      req - la HttpServletRequest contenente la richiesta del client
      res - la HttpServletResponse contenente la risposta del server
      Throws:
      javax.servlet.ServletException - eccezione che viene sollevata se si verifica un problema nell'inoltro (forward) della richiesta/risposta
      IOException - eccezione che viene sollevata se si verifica un problema nell'inoltro (forward) della richiesta/risposta
      See Also:
      • HttpServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
    • doPost

      protected void doPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) throws javax.servlet.ServletException, IOException

      Gestisce le richieste del client effettuate con il metodo POST.

      Overrides:
      doPost in class javax.servlet.http.HttpServlet
      Parameters:
      req - la HttpServletRequest contenente la richiesta del client
      res - la HttpServletResponse contenente la risposta del server
      Throws:
      javax.servlet.ServletException - eccezione che viene sollevata se si verifica un problema nell'inoltro (forward) della richiesta/risposta
      IOException - eccezione che viene sollevata se si verifica un problema nell'inoltro (forward) della richiesta/risposta
    • authenticate

      public static boolean authenticate(String username, String password, javax.servlet.http.HttpServletRequest req, DBWrapper db, StringBuffer message) throws CommandException

      Crea la sessione utente.
      Inserisce la sessione creata nella HttpServletRequest, modificandola per riferimento (ByRef).

      Parameters:
      username - nome utente inserito ai fini di login
      password - password inserita ai fini di login
      req - HttpServletRequest per la creazione della sessione
      db - DataBound per la query riguardo le credenziali
      message - messaggio per l'output circa l'esito della login
      Returns:
      boolean - true se l'autenticazione e' andata a buon fine, false in caso contrario
      Throws:
      CommandException - se si verifica un problema nel recupero dell'utente in base alle credenziali fornite
    • authenticateEncrypted

      public static boolean authenticateEncrypted(String username, String password, javax.servlet.http.HttpServletRequest req, DBWrapper db, StringBuffer message) throws CommandException, NoSuchAlgorithmException, InvalidKeySpecException

      Crea la sessione utente.
      Inserisce la sessione creata nella HttpServletRequest, modificandola per riferimento ByRef.

      Parameters:
      username - nome utente inserito ai fini di login
      password - password inserita ai fini di login
      req - HttpServletRequest per la creazione della sessione
      db - DataBound per la query riguardo le credenziali
      message - messaggio per l'output circa l'esito della login
      Returns:
      boolean - true se l'autenticazione e' andata a buon fine, false in caso contrario
      Throws:
      CommandException - se si verifica un problema nel recupero dell'utente in base alle credenziali fornite
      InvalidKeySpecException - se la chiave non è valida (codifica non valida, lunghezza non valida, non inizializzata, ...)
      NoSuchAlgorithmException - se non è disponibile l'algoritmo di criptaggio nell'ambiente
    • generateSalt

      public static String generateSalt(int length)

      Genera il seme necessario per la password criptata ad ogni cambio password dell'utente loggato.

      Parameters:
      length - lunghezza del seme
      Returns:
      String - stringa contenente il seme generato
    • hashPassword

      public static String hashPassword(String password, String salt) throws NoSuchAlgorithmException, InvalidKeySpecException

      Esegue il criptaggio della password dell'utente.

      Parameters:
      password - password inserita dall'utente
      salt - seme univoco per ogni utente in base al quale la password viene criptata
      Returns:
      String - ritorna una stringa contenente la password criptata
      Throws:
      NoSuchAlgorithmException - se non è disponibile l'algoritmo di criptaggio nell'ambiente
      InvalidKeySpecException - se la chiave non è valida (codifica non valida, lunghezza non valida, non inizializzata, ...)
    • verifyPassword

      public static boolean verifyPassword(String password, CodeBean encryptedPassword) throws NoSuchAlgorithmException, InvalidKeySpecException, AttributoNonValorizzatoException

      Verifica che la password inserita dall'utente e la password criptata nel database corrispondano.

      Parameters:
      password - password inserita dall'utente
      encryptedPassword - password e seme corrispondenti all'utente che ha richiesto l'accesso presenti sul database
      Returns:
      boolean - true se la password corrisponde a quella presente nel database. False altrimenti.
      Throws:
      AttributoNonValorizzatoException - se un campo obbligatorio del bean è stato trovato non valorizzato
      InvalidKeySpecException - se la chiave non è valida (codifica non valida, lunghezza non valida, non inizializzata, ...)
      NoSuchAlgorithmException - se non è disponibile l'algoritmo di criptaggio nell'ambiente
    • checkSession

      public static PersonBean checkSession(javax.servlet.http.HttpSession session) throws CommandException

      Verifica se la sessione utente, che accetta come argomento, è valida o esistente. In tal caso, non solleva eccezione; in caso contrario, viene sollevata un'eccezione tramite cui il chiamante può interrompere l'esecuzione.

      Parameters:
      session - sessione utente gia' creata (se l'utente non e' loggato vale null)
      Returns:
      PersonBean - restituisce l'utente loggato, se esiste, altrimenti solleva un'eccezione
      Throws:
      CommandException - se l'utente non e' loggato o si verifica un problema di puntamento