diff --git a/lib/http/server.py b/lib/http/server.py
index 6a359df0be850a4255138d039c2cbd83d1c50e5a..a751a15a9688ce22a9744f1f978e85e8745e38a0 100644
--- a/lib/http/server.py
+++ b/lib/http/server.py
@@ -308,6 +308,10 @@ class _HttpServerRequestExecutor(object):
     handler_context = _HttpServerRequest(self.request_msg)
 
     try:
+      # Authentication, etc.
+      self.server.PreHandleRequest(handler_context)
+
+      # Call actual request handler
       result = self.server.HandleRequest(handler_context)
     except (http.HttpException, KeyboardInterrupt, SystemExit):
       raise
@@ -501,6 +505,13 @@ class HttpServer(http.HttpBase):
     else:
       self._children.append(pid)
 
+  def PreHandleRequest(self, req):
+    """Called before handling a request.
+
+    Can be overriden by a subclass.
+
+    """
+
   def HandleRequest(self, req):
     """Handles a request.