diff --git a/src/Access/WebformNodeAccessCheck.php b/src/Access/WebformNodeAccessCheck.php
new file mode 100644
index 0000000..426c0fc
--- /dev/null
+++ b/src/Access/WebformNodeAccessCheck.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\webform\Access\WebformNodeAccessCheck.
+ */
+
+namespace Drupal\webform\Access;
+
+use Drupal\Core\Access\AccessResult;
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
+use Drupal\Core\Session\AccountInterface;
+use Drupal\node\NodeInterface;
+use Symfony\Component\Routing\Route;
+
+/**
+ * Determines access to routes based on webform enabled content type.
+ */
+class WebformNodeAccessCheck implements AccessInterface {
+  /**
+   * The node storage.
+   *
+   * @var \Drupal\node\NodeStorageInterface
+   */
+  protected $nodeStorage;
+
+  /**
+   * Constructs a new WebformNodeAccessCheck.
+   *
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager.
+   */
+  public function __construct(EntityManagerInterface $entity_manager) {
+    $this->nodeStorage = $entity_manager->getStorage('node');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function access(Route $route, AccountInterface $account, NodeInterface $node = NULL) {
+    if (!$node->bundle() || !\Drupal::config('webform.settings')->get('node_' . $node->bundle())) {
+      return AccessResult::allowed();
+    }
+    return AccessResult::forbidden();
+  }
+
+}
diff --git a/webform.routing.yml b/webform.routing.yml
index ad1307e..a0cc4c1 100644
--- a/webform.routing.yml
+++ b/webform.routing.yml
@@ -13,14 +13,13 @@ webform.settings:
   requirements:
     _permission: 'administer site configuration'
 
-# @todo Only show on webform enabled node types
 entity.node.webform:
   path: '/node/{node}/webform'
   defaults:
     _title: 'Webform'
     _form: '\Drupal\webform\Form\WebformComponentsForm'
   requirements:
-    # @todo This needs to call/replicate webform_node_update_access().
     _permission: 'edit webform components'
+    _access_check_token: 'TRUE'
   options:
     _node_operation_route: TRUE
diff --git a/webform.services.yml b/webform.services.yml
new file mode 100644
index 0000000..ec7e1b4
--- /dev/null
+++ b/webform.services.yml
@@ -0,0 +1,6 @@
+services:
+  webform.webform_node:
+    class: Drupal\webform\Access\WebformNodeAccessCheck
+    tags:
+      - {name: access_check, applies_to: _access_check_token}
+    arguments: ['@entity.manager']
