diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php
index 035f282..04dc60b 100644
--- a/core/lib/Drupal/Core/CoreBundle.php
+++ b/core/lib/Drupal/Core/CoreBundle.php
@@ -223,6 +223,10 @@ public function build(ContainerBuilder $container) {
     $container->register('view_subscriber', 'Drupal\Core\EventSubscriber\ViewSubscriber')
       ->addArgument(new Reference('content_negotiation'))
       ->addTag('event_subscriber');
+
+    $container->register('http_authentication', 'Drupal\Core\EventSubscriber\HttpBasicAuthenticationSubscriber')
+      ->addTag('event_subscriber');
+
     $container->register('legacy_access_subscriber', 'Drupal\Core\EventSubscriber\LegacyAccessSubscriber')
       ->addTag('event_subscriber');
     $container->register('access_manager', 'Drupal\Core\Access\AccessManager')
diff --git a/core/lib/Drupal/Core/EventSubscriber/HttpBasicAuthenticationSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/HttpBasicAuthenticationSubscriber.php
new file mode 100644
index 0000000..60c6198
--- /dev/null
+++ b/core/lib/Drupal/Core/EventSubscriber/HttpBasicAuthenticationSubscriber.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\EventSubscriber\HttpBasicAuthenticationSubscriber.
+ */
+
+namespace Drupal\Core\EventSubscriber;
+
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
+use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Drupal\Core\Routing\RoutingEvents;
+use Drupal\Core\Access\AccessManager;
+use Drupal\Core\Routing\RouteBuildEvent;
+
+/**
+ * Access subscriber for controller requests.
+ */
+class HttpBasicAuthenticationSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
+   *   The Event to process.
+   */
+  public function onKernelRequestAccessCheck(GetResponseEvent $event) {
+    global $user;
+    if (!$user->uid) {
+      $request = $event->getRequest();
+      $username = $request->server->get ('PHP_AUTH_USER');
+      $password = $request->server->get ('PHP_AUTH_PW');
+      if ($username && $password) {
+
+        $uid = user_authenticate ($username, $password);
+        if ($uid) {
+          $user = user_load($uid);
+          // call user_login_finalize (); ?
+        }
+      }
+    }
+  }
+
+  /**
+   * Registers the methods in this class that should be listeners.
+   *
+   * @return array
+   *   An array of event listener definitions.
+   */
+  static function getSubscribedEvents() {
+    $events[KernelEvents::REQUEST][] = array('onKernelRequestAccessCheck', 30);
+    return $events;
+  }
+}
diff --git a/core/lib/Drupal/Core/ExceptionController.php b/core/lib/Drupal/Core/ExceptionController.php
index c8c6a34..05862be 100644
--- a/core/lib/Drupal/Core/ExceptionController.php
+++ b/core/lib/Drupal/Core/ExceptionController.php
@@ -120,7 +120,14 @@ public function on403Html(FlattenException $exception, Request $request) {
       $page = element_info('page');
       $content = drupal_render_page($page);
 
-      $response = new Response($content, 403);
+      global $user;
+      if (!$user->uid) {
+        $realm = config('system.site')->get('name');
+        header('WWW-Authenticate: Basic realm="'. $realm . '"');
+        $response = new Response($content, 401);
+      }
+      else
+        $response = new Response($content, 403);
     }
 
     return $response;
