Class SessionManager
- All Implemented Interfaces:
Constants,Serializable,javax.servlet.Servlet,javax.servlet.ServletConfig
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 Summary
FieldsModifier and TypeFieldDescriptionprotected static LoggerLog per debug in produzionestatic final intCostante indicante la lunghezza in termini di caratteri del seme, usato per la criptazione della password.Fields inherited from interface it.rol.Constants
AMPERSAND, APOSTROPHE, BEAN_DEFAULT_FLOAT, BEAN_DEFAULT_ID, BLANK_SPACE, COLON, COMMA, COMMAND_AUDIT, COMMAND_HOME, COMMAND_INDICATOR, COMMAND_MEASURE, COMMAND_PROCESS, COMMAND_REPORT, COMMAND_RISK, COMMAND_STRUCTURES, CP1, CP2, CP3, CSV, DASH, DATA_FORMAT, DATA_GENERAL_PATTERN, DATA_SQL_PATTERN, DEFAULT_ID, DELETE, DOT, ELEMENT_LEV_1, ELEMENT_LEV_2, ELEMENT_LEV_3, ELEMENT_LEV_4, ENGLISH_DOUBLE_QUOTE_CLOSE, ENGLISH_DOUBLE_QUOTE_OPEN, ENGLISH_SINGLE_QUOTE, EQ, ERR, GR, HTML, HYPHEN, I, I1, I2, I3, I4, IF_EXISTS_DONOT_CREATE_NEW, INTERVIEW, INTERVIEWS, JSON, JSP_EXT, LIVELLI_RISCHIO, LIVELLI_RISCHIO_AS_LIST, LOG_IND, MAIN_MENU, MDASH, MESSAGE, MIME_TYPE_HTML, MIME_TYPE_TEXT, ND, NDASH, NOTHING, P, P1, P2, P3, P4, P5, P6, P7, PARAM_SURVEY, PART_CONFIRM_QST, PART_CREDITS, PART_FACTORS, PART_GRAPHICS, PART_INDICATOR, PART_INPUT, PART_INSERT_ACT_STRUCTS, PART_INSERT_ACTIVITY, PART_INSERT_F_R_P, PART_INSERT_INDICATOR, PART_INSERT_INPUT, PART_INSERT_M_R_P, PART_INSERT_MEASURE, PART_INSERT_MEASUREMENT, PART_INSERT_MONITOR_DATA, PART_INSERT_OUTPUT, PART_INSERT_PROCESS, PART_INSERT_PROCESS_RISK, PART_INSERT_RISK, PART_INSERT_RISK_PROCESS, PART_INSERT_SUBJECT, PART_MACROPROCESS, PART_MEASURES, PART_MONITOR, PART_OUTPUT, PART_PI_NOTE, PART_PROCESS, PART_RESUME_QST, PART_RISKS, PART_SEARCH, PART_SELECT_MEASUREMENT, PART_SELECT_MONITOR_DATA, PART_SELECT_QSS, PART_SELECT_QST, PART_SELECT_STR, PART_UPDATE_ACTIVITY, PART_UPDATE_MEASURE, PART_USR, PER_CENT, PI, PIM, PIR, PRO_PFX, PROCESS, QM, QUOTE, REFERRAL, REPORT_MDM, REPORT_MDM_MES, RISKS, ROOT_QM, RTF, SEMICOLON, SEPARATOR, SLASH, STATI_STRUTTURA, STATI_STRUTTURA_AS_LIST, STR_PFX, STRUCTURES, SUB_MENU, THE_END_OF_TIME, TIME_SQL_PATTERN, TIPI_LISTE, TWELWE_HOUR_FORMAT, UNDERSCORE, UNIX_EPOCH, UPDATE, VOID_SQL_STRING, VOID_STRING, WEIGHT_GENERIC, WEIGHT_SPECIFIC, YEAR_SHIFT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanauthenticate(String username, String password, javax.servlet.http.HttpServletRequest req, DBWrapper db, StringBuffer message) Crea la sessione utente.
Inserisce la sessione creata nella HttpServletRequest, modificandola per riferimento (ByRef).static booleanauthenticateEncrypted(String username, String password, javax.servlet.http.HttpServletRequest req, DBWrapper db, StringBuffer message) Crea la sessione utente.
Inserisce la sessione creata nella HttpServletRequest, modificandola per riferimentoByRef.static PersonBeancheckSession(javax.servlet.http.HttpSession session) Verifica se la sessione utente, che accetta come argomento, è valida o esistente.protected voiddoGet(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) Gestisce le richieste del client effettuate con il metodo GET.protected voiddoPost(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) Gestisce le richieste del client effettuate con il metodo POST.static StringgenerateSalt(int length) Genera il seme necessario per la password criptata ad ogni cambio password dell'utente loggato.static StringhashPassword(String password, String salt) Esegue il criptaggio della password dell'utente.voidinit(javax.servlet.ServletConfig config) Inizializza, staticamente, alcune variabili globali.static booleanverifyPassword(String password, CodeBean encryptedPassword) Verifica che la password inserita dall'utente e la password criptata nel database corrispondano.Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPut, doTrace, getLastModified, service, serviceMethods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
-
Field Details
-
LOG
Log per debug in produzione -
SALT_LENGTH
public static final int SALT_LENGTHCostante 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:
initin interfacejavax.servlet.Servlet- Overrides:
initin classjavax.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:
doGetin classjavax.servlet.http.HttpServlet- Parameters:
req- la HttpServletRequest contenente la richiesta del clientres- 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/rispostaIOException- eccezione che viene sollevata se si verifica un problema nell'inoltro (forward) della richiesta/risposta- See Also:
-
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:
doPostin classjavax.servlet.http.HttpServlet- Parameters:
req- la HttpServletRequest contenente la richiesta del clientres- 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/rispostaIOException- 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 loginpassword- password inserita ai fini di loginreq- HttpServletRequest per la creazione della sessionedb- DataBound per la query riguardo le credenzialimessage- 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 riferimentoByRef.- Parameters:
username- nome utente inserito ai fini di loginpassword- password inserita ai fini di loginreq- HttpServletRequest per la creazione della sessionedb- DataBound per la query riguardo le credenzialimessage- 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 forniteInvalidKeySpecException- se la chiave non è valida (codifica non valida, lunghezza non valida, non inizializzata, ...)NoSuchAlgorithmException- se non è disponibile l'algoritmo di criptaggio nell'ambiente
-
generateSalt
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'utentesalt- 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'ambienteInvalidKeySpecException- 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'utenteencryptedPassword- 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 valorizzatoInvalidKeySpecException- 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
-