diff --git a/acquia_search/acquia_search.module b/acquia_search/acquia_search.module
index e8c4ed7..524809c 100644
--- a/acquia_search/acquia_search.module
+++ b/acquia_search/acquia_search.module
@@ -428,7 +428,7 @@ function _acquia_search_create_derived_key($salt, $id, $key) {
 /**
  * Creates an authenticator based on a data string and HMAC-SHA1.
  */
-function acquia_search_authenticator($string, $nonce, $derived_key = NULL, $env_id = NULL) {
+function acquia_search_authenticator($string, $nonce, $derived_key = NULL, $env_id = NULL, $time = NULL) {
   if (empty($derived_key)) {
     $derived_key = _acquia_search_derived_key($env_id);
   }
@@ -437,7 +437,15 @@ function acquia_search_authenticator($string, $nonce, $derived_key = NULL, $env_
     return '';
   }
   else {
-    $time = REQUEST_TIME;
+    // @see http://stackoverflow.com/questions/2524680/check-whether-the-string-is-a-unix-timestamp
+    if (!(is_numeric($time) && (int)$time == $time )) {
+      // Use time() instead of REQUEST_TIME so that long-running operations like
+      // `drush solr-index` continually have fresh request times. Use of
+      // REQUEST_TIME will cause Acquia Search to respond with a 403 Forbidden
+      // after the acquia_solr_time value is older than 15 minutes.
+      $time = time();
+    }
+
     return 'acquia_solr_time='. $time .'; acquia_solr_nonce='. $nonce .'; acquia_solr_hmac='. hash_hmac('sha1', $time . $nonce . $string, $derived_key) .';';
   }
 }
diff --git a/acquia_search/tests/acquia_search.test b/acquia_search/tests/acquia_search.test
index c7955f8..28dad1d 100644
--- a/acquia_search/tests/acquia_search.test
+++ b/acquia_search/tests/acquia_search.test
@@ -59,19 +59,20 @@ class AcquiaSearchUnitTestCase extends DrupalUnitTestCase {
    */
   public function testHMACCookie() {
     // Generate the expected hash.
-    $time = REQUEST_TIME;
+    $time = time();
     $nonce = $this->randomName(32);
     $string = $time . $nonce . $this->randomName();
     $hmac = hash_hmac('sha1', $time . $nonce . $string, $this->derivedKey);
 
     // @todo Make the API function more testable.
-    $authenticator = acquia_search_authenticator($string, $nonce, $this->derivedKey);
+    $authenticator = acquia_search_authenticator($string, $nonce, $this->derivedKey, $time);
     preg_match('/acquia_solr_hmac=([a-zA-Z0-9]{40});/', $authenticator, $matches);
     $this->assertEqual($hmac, $matches[1], t('HMAC API function generates the expected hmac hash.'), 'Acquia Search');
     preg_match('/acquia_solr_time=([0-9]{10});/', $authenticator, $matches);
     $this->assertNotNull($matches, t('HMAC API function generates a timestamp.'), 'Acquia Search');
     preg_match('/acquia_solr_nonce=([a-zA-Z0-9]{32});/', $authenticator, $matches);
     $this->assertEqual($nonce, $matches[1], t('HMAC API function generates the expected nonce.'), 'Acquia Search');
+
   }
 
   /**
