diff --git a/glanceclient/common/http.py b/glanceclient/common/http.py
index 11573815..4549669e 100644
--- a/glanceclient/common/http.py
+++ b/glanceclient/common/http.py
@@ -124,10 +124,6 @@ class HTTPClient(_BaseHTTPClient):
         self.session = requests.Session()
         self.session.headers["User-Agent"] = USER_AGENT
 
-        if self.auth_token:
-            self.session.headers["X-Auth-Token"] = encodeutils.safe_encode(
-                self.auth_token)
-
         if self.language_header:
             self.session.headers["Accept-Language"] = self.language_header
 
@@ -226,6 +222,10 @@ class HTTPClient(_BaseHTTPClient):
 
         data = self._set_common_request_kwargs(headers, kwargs)
 
+        # add identity header to the request
+        if not headers.get('X-Auth-Token'):
+            headers['X-Auth-Token'] = self.auth_token
+
         if osprofiler_web:
             headers.update(osprofiler_web.get_trace_id_headers())
 
diff --git a/glanceclient/tests/unit/test_http.py b/glanceclient/tests/unit/test_http.py
index c18660e1..2182f85d 100644
--- a/glanceclient/tests/unit/test_http.py
+++ b/glanceclient/tests/unit/test_http.py
@@ -210,14 +210,6 @@ class TestClient(testtools.TestCase):
         self.assertEqual(b"ni\xc3\xb1o", encoded[b"test"])
         self.assertNotIn("none-val", encoded)
 
-    def test_auth_token_header_encoding(self):
-        # Tests that X-Auth-Token header is converted to ascii string, as
-        # httplib in python 2.6 won't do the conversion
-        value = u'ni\xf1o'
-        http_client_object = http.HTTPClient(self.endpoint, token=value)
-        self.assertEqual(b'ni\xc3\xb1o',
-                         http_client_object.session.headers['X-Auth-Token'])
-
     def test_raw_request(self):
         """Verify the path being used for HTTP requests reflects accurately."""
         headers = {"Content-Type": "text/plain"}
@@ -382,3 +374,26 @@ class TestClient(testtools.TestCase):
         self.assertThat(mock_log.call_args[0][0],
                         matchers.Not(matchers.MatchesRegex(token_regex)),
                         'token found in LOG.debug parameter')
+
+    def test_expired_token_has_changed(self):
+        # instantiate client with some token
+        fake_token = b'fake-token'
+        http_client = http.HTTPClient(self.endpoint,
+                                      token=fake_token)
+        path = '/v1/images/my-image'
+        self.mock.get(self.endpoint + path)
+        http_client.get(path)
+        headers = self.mock.last_request.headers
+        self.assertEqual(fake_token, headers['X-Auth-Token'])
+        # refresh the token
+        refreshed_token = b'refreshed-token'
+        http_client.auth_token = refreshed_token
+        http_client.get(path)
+        headers = self.mock.last_request.headers
+        self.assertEqual(refreshed_token, headers['X-Auth-Token'])
+        # regression check for bug 1448080
+        unicode_token = u'ni\xf1o'
+        http_client.auth_token = unicode_token
+        http_client.get(path)
+        headers = self.mock.last_request.headers
+        self.assertEqual(b'ni\xc3\xb1o', headers['X-Auth-Token'])