/// <summary> /// Autenticazione Sistemi Esterni R.2 /// </summary> /// <param name="token"></param> /// <param name="username"></param> /// <param name="tknDuration"></param> /// <returns></returns> public static string CtrlAuthToken(string token, string username, string tknDuration) { string retval = "OK"; CryptoString crypto = new CryptoString(username.ToUpper()); string encodedValue = token.Substring(TOKEN_PREFIX.Length); try { string decodedValue = crypto.Decrypt(encodedValue); string[] valori = decodedValue.Split(';'); if (valori[0].Substring(4).Equals(username.ToUpper())) { string tct = valori[2].Replace("\0", "").Substring(DATETIME.Length + 1); DateTime TknCreationTime = DateTime.Parse(tct); System.TimeSpan timespan = DateTime.Now - TknCreationTime; if (timespan.TotalMinutes > Int32.Parse(tknDuration)) { retval = "TKN_EXPIRED"; } } else { retval = "WRONG_USER"; } } catch (Exception e) { retval = "WRONG_USER"; } return(retval); }
/// <summary> /// Ripristino del token di autenticazione per l'utente fornito /// </summary> /// <param name="userId"></param> /// <param name="token"></param> /// <returns></returns> public static string Restore(string userId, string token) { if (IsAuthToken(token)) { CryptoString crypto = new CryptoString(userId); string decryptedValue = string.Empty; try { decryptedValue = crypto.Decrypt(token.Replace(TOKEN_PREFIX, string.Empty)); } catch (Exception ex) { throw new ApplicationException("Si è verificato un errore nella decifratura del token di autenticazione", ex); } Dictionary <string, string> keyValuePairs = GetTokenKeyValuePairs(decryptedValue); if (string.Compare(userId, keyValuePairs[UID], true) == 0) { string sessionId = keyValuePairs[SESSIONID]; // GESTIONE SCADENZA TOKEN: PROBABILE EVOLUZIONE, DA ATTIVARE //DateTime date; //if (DateTime.TryParse(values[2], out date)) //{ // TimeSpan ts = DateTime.Now.Subtract(date); // if (ts.Minutes > 10) // throw new ApplicationException("Il token di autenticazione risulta scaduto"); //} return(sessionId); } else { throw new ApplicationException(string.Format("Il token di autenticazione non risulta associato all'utente {0}", userId)); } } else { throw new ApplicationException("Formato token di autenticazione non valido"); } }