diff --git a/core/modules/rest/lib/Drupal/rest/FileAccessController.php b/core/modules/rest/lib/Drupal/rest/FileAccessController.php
new file mode 100644
index 0000000..b676797
--- /dev/null
+++ b/core/modules/rest/lib/Drupal/rest/FileAccessController.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\rest\FileAccessController
+ */
+
+namespace Drupal\rest;
+
+use Drupal\Core\Entity\EntityAccessController;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Session\AccountInterface;
+
+/**
+ * Access controller for the file entity.
+ *
+ * @see \Drupal\file\Entity\File.
+ */
+class FileAccessController extends EntityAccessController {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) {
+    if (($operation == 'view') && (file_uri_scheme($entity->getFileUri()) == 'public')) {
+      return TRUE;
+    }
+    else {
+      return parent::checkAccess($entity, $operation, $langcode, $account);
+    }
+  }
+
+}
diff --git a/core/modules/rest/rest.module b/core/modules/rest/rest.module
index 086961a..4f2c24d 100644
--- a/core/modules/rest/rest.module
+++ b/core/modules/rest/rest.module
@@ -34,3 +34,14 @@ function rest_help($path, $arg) {
       return $output;
   }
 }
+
+/**
+ * Implements hook_entity_info_alter().
+ */
+function rest_entity_info_alter(&$entity_info) {
+  if (isset($entity_info['file'])) {
+    $controllers = $entity_info['file']->get('controllers');
+    $controllers['access'] = 'Drupal\\rest\\FileAccessController';
+    $entity_info['file']->set('controllers', $controllers);
+  }
+}
