public override Task ValidateIdentity(OAuthValidateIdentityContext context)
        {
            var ipToken   = context.Ticket.Properties.Dictionary["UserIp"];
            var ipRequest = context.Request.RemoteIpAddress;

            if (!ipToken.Equals(ipRequest))
            {
                context.Rejected();
                context.SetError("MENSAJE_ERROR_TOKEN_IP_INVALIDA");
                return(Task.FromResult <object>(null));
            }
            if (context.Request.Headers.ContainsKey("Authorization"))
            {
                var tokenRequest = context.Request.Headers["Authorization"].Replace("Bearer ", "").Trim();
                var strIdUsuario = context.Ticket.Properties.Dictionary["IdUsuario"];
                //var tokenTaskHelper = TokenTaskHelper.GetInstance();
                var tokenUsuario = TokenTaskHelper.GetToken(strIdUsuario);
                if (tokenUsuario == null || !tokenUsuario.Equals(tokenRequest))
                {
                    var login     = new LoginController();
                    var idUsuario = Int64.Parse(strIdUsuario);
                    var tokenAux  = login.GetTokenUsuario(idUsuario);
                    tokenUsuario = TokenTaskHelper.SetToken(strIdUsuario, tokenAux);
                }
                if (!tokenUsuario.Equals(tokenRequest))
                {
                    context.Rejected();
                    context.SetError("MENSAJE_ERROR_TOKEN_USUAIRO_INCONSISTENTE");
                    return(Task.FromResult <object>(null));
                }
            }


            return(base.ValidateIdentity(context));
        }
        /// <summary>
        /// Actualiza el token antes de retornar la respuesta.
        /// </summary>
        /// <param name="context">Contexto actual de la solicitud.</param>
        /// <returns>Task retornado por la clase padre.</returns>
        public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
        {
            var token        = context.AccessToken;
            var strIdUsuario = context.Properties.Dictionary["IdUsuario"];
            var idUsuario    = Int64.Parse(context.Properties.Dictionary["IdUsuario"]);
            var login        = new LoginController();

            login.ActualizaToken(idUsuario, token);
            //var tokenTaskHelper = TokenTaskHelper.GetInstance();
            TokenTaskHelper.SetToken(strIdUsuario, token);
            return(base.TokenEndpointResponse(context));
        }