Esempio n. 1
0
        //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);
        }
Esempio n. 2
0
        public static ServiceResponse RemoveToken()
        {
            ObjectCache cache = MemoryCache.Default;

            cache.Remove(Token);
            ITokenDataProvider _securityDataProvider = new TokenDataProvider();

            return(_securityDataProvider.RemoveToken(Token));
        }
Esempio n. 3
0
        public static void Initialize(string connectionString, string databaseName)
        {
            DataProviderConfiguration.Instance = new DataProviderConfiguration(connectionString, databaseName);

            ClientInformationDataProvider.Initialize();
            ScopeDataProvider.Initialize();
            TokenDataProvider.Initialize();
            AccessCodeDataProvider.Initialize();
        }
Esempio n. 4
0
        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
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        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;
            }
        }