//public static long UserId //{ // get // { // var cacheModel = AuthenticateToken(); // if (cacheModel != null) // return cacheModel.UserId; // return 0; // } //} public static LoginTokenModel AuthenticateToken() { ObjectCache cache = MemoryCache.Default; if (!string.IsNullOrEmpty(Token)) { if (cache.Contains(Token)) { LoginTokenModel tokenvalue = (LoginTokenModel)cache.Get(Token); //Code For Making Cache Extended. CacheItem item = cache.GetCacheItem(Token); CacheItemPolicy cacheItemPolicy = new CacheItemPolicy(); cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddMinutes(ConfigSettings.CacheExpiryPeriod); cache.Set(item, cacheItemPolicy); return(tokenvalue); } else { ITokenDataProvider _securityDataProvider = new TokenDataProvider(); ServiceResponse response = _securityDataProvider.AuthenticateToken(Token); if (response.IsSuccess) { LoginTokenModel tokenvalue = (LoginTokenModel)response.Data; CacheItemPolicy cacheItemPolicy = new CacheItemPolicy(); cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddMinutes(ConfigSettings.CacheExpiryPeriod); cache.Add(Token, tokenvalue, cacheItemPolicy); return(tokenvalue); } } } Common.ThrowErrorMessage("Invalid token or token expired.", HttpStatusCode.Unauthorized); return(null); }
public static ServiceResponse RemoveToken() { ObjectCache cache = MemoryCache.Default; cache.Remove(Token); ITokenDataProvider _securityDataProvider = new TokenDataProvider(); return(_securityDataProvider.RemoveToken(Token)); }
public static void Initialize(string connectionString, string databaseName) { DataProviderConfiguration.Instance = new DataProviderConfiguration(connectionString, databaseName); ClientInformationDataProvider.Initialize(); ScopeDataProvider.Initialize(); TokenDataProvider.Initialize(); AccessCodeDataProvider.Initialize(); }
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { long userId = 0; //if (!CheckAllowedActions()) // userId = CacheApiHelper.UserId; #region LogApiResponse //Only For Testing Log Each Request in DB if (ConfigSettings.IsLoggedAPIRequest) { if (actionExecutedContext.Exception != null) { RequestResponseLog requestResponseLog = new RequestResponseLog { Type = "Response", Data = "ERRORRESPONSE:" + Common.SerializeObject(actionExecutedContext.Exception), Url = actionExecutedContext.Request.RequestUri.AbsolutePath, RefRequestResponseLogID = Convert.ToInt64(HttpContext.Current.Request.ServerVariables["RequestResponseLogID"]), UserId = userId }; ITokenDataProvider _tokenDataProvider = new TokenDataProvider(); _tokenDataProvider.SaveRequestResponselog(requestResponseLog, userId); } else { var objectContent = actionExecutedContext.Response.Content as ObjectContent; if (objectContent != null) { //var type = objectContent.ObjectType; //type of the returned object var value = objectContent.Value; //holding the returned value var str = Common.SerializeObject(value); RequestResponseLog requestResponseLog = new RequestResponseLog { Type = "Response", Data = str, Headers = actionExecutedContext.Response.Headers.ToString(), Url = actionExecutedContext.Request.RequestUri.AbsolutePath, RefRequestResponseLogID = Convert.ToInt64(HttpContext.Current.Request.ServerVariables["RequestResponseLogID"]), UserId = userId }; ITokenDataProvider _tokenDataProvider = new TokenDataProvider(); _tokenDataProvider.SaveRequestResponselog(requestResponseLog, userId); } } } #endregion LogApiResponse }
/// <summary> /// OnSuccess /// Step 1: Validate JWT Token and store UserName in variable /// Step 2: Get user token details from Server cache and extend expire time duration. /// Step 3: If #2 not found, Validate username -> Save token details in server cache for next request -> Return token details. /// OnFail /// Bypass request from here using Throws an exception /// </summary> /// <returns></returns> public static TokenModel AuthenticateToken() { ObjectCache cache = MemoryCache.Default; if (!string.IsNullOrEmpty(Token)) { //Step 1 var userName = ValidateJwtToken(Token); if (!string.IsNullOrEmpty(userName)) { if (cache.Contains(userName)) { //Step 2 TokenModel tokenvalue = (TokenModel)cache.Get(userName); //Code For Making Cache Extended. CacheItem item = cache.GetCacheItem(userName); CacheItemPolicy cacheItemPolicy = new CacheItemPolicy(); cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddMinutes(Constants.CacheExpiryPeriod); cache.Set(item, cacheItemPolicy); return(tokenvalue); } else { ITokenDataProvider _securityDataProvider = new TokenDataProvider(); //Step 3 ApiResponse response = _securityDataProvider.AuthenticateUserName(userName); if (response.IsSuccess) { var user = (User)response.Data; TokenModel tokenvalue = new TokenModel { UserId = user.UserId, Token = Token, UserName = user.UserName }; CacheItemPolicy cacheItemPolicy = new CacheItemPolicy(); cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddMinutes(Constants.CacheExpiryPeriod); cache.Add(userName, tokenvalue, cacheItemPolicy); return(tokenvalue); } } } } Common.ThrowErrorMessage(Resource.InvalidToken, HttpStatusCode.Unauthorized); return(null); }
public override void OnActionExecuting(HttpActionContext actionContext) { long userId = 0; #region LogApiRequest //Only For Testing Log Each Request in DB string filePath = HttpContext.Current.Request.FilePath; if (ConfigSettings.IsLoggedAPIRequest) { if (filePath.Length > 1) { //if (!CheckAllowedActions()) // userId = CacheApiHelper.UserId; var strrequest = string.Empty; var strheaders = string.Empty; if (HttpContext.Current.Request.ContentLength > 0) { HttpContext.Current.Request.InputStream.Position = 0; var inputStream = new StreamReader(HttpContext.Current.Request.InputStream); strrequest = inputStream.ReadToEnd();//actionContext.ActionArguments.Count == 0 ? "NODATA" : Common.SerializeObject(actionContext.ActionArguments[Constants.RequestModelName]); } if (HttpContext.Current.Request.Headers.Count > 0) { strheaders = HttpContext.Current.Request.Headers.ToString(); } var requestResponseLog = new RequestResponseLog { Type = "Request", Data = strrequest, Headers = strheaders, Url = filePath, UserId = userId }; ITokenDataProvider _tokenDataProvider = new TokenDataProvider(); _tokenDataProvider.SaveRequestResponselog(requestResponseLog, userId); HttpContext.Current.Request.ServerVariables["RequestResponseLogID"] = requestResponseLog.RequestResponseLogID.ToString(); } } #endregion if (CacheApiHelper.IsValidKey()) { if (CheckAllowedActions()) { base.OnActionExecuting(actionContext); return; } if (!CacheApiHelper.IsAuthorizedUser()) { Common.SendApiResponse(actionContext, new ServiceResponse { IsSuccess = false, Message = string.Format("'{0}' Header is not passed or invalid.", Constants.KeyHeaderName) }, HttpStatusCode.Unauthorized); } else { base.OnActionExecuting(actionContext); return; } //} //else //{ // Common.BadRequest(Common.ApiBadResponse(new ApiResponse()), actionContext); //} } else { Common.SendApiResponse(actionContext, new ServiceResponse { IsSuccess = false, Message = string.Format("'{0}' Header is not passed or invalid.", Constants.KeyHeaderName) }, HttpStatusCode.NotAcceptable); return; } }