diff --git a/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php b/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
index 09111bf..84d6d03 100644
--- a/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
+++ b/core/modules/rest/lib/Drupal/rest/Plugin/views/display/RestExport.php
@@ -87,6 +87,13 @@ class RestExport extends PathPluginBase {
   protected $request;
 
   /**
+   * The available Authentication Providers.
+   *
+   * @var array
+   */
+  protected $authenticationProviders;
+
+  /**
    * Constructs a Drupal\rest\Plugin\ResourceBase object.
    *
    * @param array $configuration
@@ -104,10 +111,11 @@ class RestExport extends PathPluginBase {
    * @param \Symfony\Component\HttpFoundation\Request $request
    *   The request object.
    */
-  public function __construct(array $configuration, $plugin_id, array $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, ContentNegotiation $content_negotiation, Request $request) {
+  public function __construct(array $configuration, $plugin_id, array $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, ContentNegotiation $content_negotiation, Request $request, array $authenticationProviders) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $route_provider, $state);
     $this->contentNegotiation = $content_negotiation;
     $this->request = $request;
+    $this->authenticationProviders = $authenticationProviders;
   }
 
   /**
@@ -121,7 +129,8 @@ public static function create(ContainerInterface $container, array $configuratio
       $container->get('router.route_provider'),
       $container->get('state'),
       $container->get('content_negotiation'),
-      $container->get('request')
+      $container->get('request'),
+      array_keys($container->get('authentication')->getSortedProviders())
     );
   }
 
@@ -217,6 +226,7 @@ protected function defineOptions() {
     $options['row']['contains']['type']['default'] = 'data_entity';
     $options['defaults']['default']['style'] = FALSE;
     $options['defaults']['default']['row'] = FALSE;
+    $options['auth']['default'] = array();
 
     // Remove css/exposed form settings, as they are not used for the data display.
     unset($options['exposed_form']);
@@ -247,6 +257,21 @@ public function optionsSummary(&$categories, &$options) {
     $options['path']['category'] = 'path';
     $options['path']['title'] = t('Path');
 
+    // Authentication.
+    $auth = array_filter($this->getOption('auth'));
+    if (empty($auth)) {
+      $auth = t('No authentication is set');
+    }
+    else {
+      $auth = implode(', ', $auth);
+    }
+
+    $options['auth'] = array(
+      'category' => 'path',
+      'title' => t('Authentication'),
+      'value' => views_ui_truncate($auth, 24),
+    );
+
     // Remove css/exposed form settings, as they are not used for the data
     // display.
     unset($options['exposed_form']);
@@ -255,6 +280,35 @@ public function optionsSummary(&$categories, &$options) {
   }
 
   /**
+   * Overrides \Drupal\views\Plugin\views\display\DisplayPluginBase::buildOptionsForm().
+   */
+  public function buildOptionsForm(&$form, &$form_state) {
+    parent::buildOptionsForm($form, $form_state);
+
+    if ($form_state['section'] == 'auth') {
+      $form['#title'] .= t('The supported authentication methods of this view');
+      $form['auth'] = array(
+        '#type' => 'checkboxes',
+        '#title' => t('Autentication methods'),
+        '#description' => t('These are the supported authentication providers for this view. When this view is requested, the client will be forced to authenticate himself with one of the selected providers.'),
+        '#options' => array_combine($this->authenticationProviders, $this->authenticationProviders),
+        '#default_value' => array_filter($this->getOption('auth')),
+      );
+    }
+  }
+
+  /**
+   * Overrides \Drupal\views\Plugin\views\display\DisplayPluginBase::submitOptionsForm().
+   */
+  public function submitOptionsForm(&$form, &$form_state) {
+    parent::submitOptionsForm($form, $form_state);
+
+    if ($form_state['section'] == 'auth') {
+      $this->setOption('auth', $form_state['values']['auth']);
+    }
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function collectRoutes(RouteCollection $collection) {
@@ -270,6 +324,16 @@ public function collectRoutes(RouteCollection $collection) {
       // Format as a string using pipes as a delimeter.
       $requirements['_format'] = implode('|', $style_plugin->getFormats());
 
+      // Add authentication to the route if it was set.
+      $auth = array_filter($this->getOption('auth'));
+      if (!empty($auth)) {
+        $options = array(
+          '_auth' => $auth,
+        );
+        $requirements['_user_is_logged_in'] = 'TRUE';
+        $route->addOptions($options);
+      }
+
       // Add the new requirements to the route.
       $route->addRequirements($requirements);
     }
diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php
old mode 100644
new mode 100755
