diff --git a/qa/pom.xml b/qa/pom.xml
index f945456bbef..026c0758c50 100644
--- a/qa/pom.xml
+++ b/qa/pom.xml
@@ -320,6 +320,7 @@
smoke-test-plugins
+ shield-core-rest-tests
smoke-test-watcher-with-shield
diff --git a/qa/shield-core-rest-tests/integration-tests.xml b/qa/shield-core-rest-tests/integration-tests.xml
new file mode 100644
index 00000000000..4da32222a8f
--- /dev/null
+++ b/qa/shield-core-rest-tests/integration-tests.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/qa/shield-core-rest-tests/pom.xml b/qa/shield-core-rest-tests/pom.xml
new file mode 100644
index 00000000000..92868396962
--- /dev/null
+++ b/qa/shield-core-rest-tests/pom.xml
@@ -0,0 +1,149 @@
+
+
+
+ 4.0.0
+
+
+ org.elasticsearch.qa
+ x-plugins-qa
+ 2.0.0-SNAPSHOT
+
+
+
+
+ shield-core-rest-tests
+ QA: Shield core REST tests
+ Run core REST tests with Shield enabled
+
+
+ true
+ ${project.basedir}/integration-tests.xml
+ true
+ indices.get/10_basic/*allow_no_indices*,cat.count/10_basic/Test cat count output,cat.aliases/10_basic/Empty cluster,indices.segments/10_basic/no segments test,indices.clear_cache/10_basic/clear_cache test,indices.status/10_basic/Indices status test,cat.indices/10_basic/Test cat indices output,cat.recovery/10_basic/Test cat recovery output,cat.shards/10_basic/Test cat shards output,termvector/20_issue7121/*,index/10_with_id/Index with ID,indices.get_alias/20_emtpy/*,cat.segments/10_basic/Test cat segments output,indices.put_settings/10_basic/Test indices settings allow_no_indices,indices.put_settings/10_basic/Test indices settings ignore_unavailable,indices.refresh/10_basic/Indices refresh test no-match wildcard,indices.stats/10_index/Index - star*,indices.recovery/10_basic/Indices recovery test*,template/30_render_search_template/*,indices.shard_stores/10_basic/no indices test,cat.nodeattrs/10_basic/Test cat nodes attrs output
+ elasticsearch-license,elasticsearch-shield
+
+
+
+
+ org.elasticsearch.plugin
+ elasticsearch-shield
+ ${elasticsearch.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ integ-setup-dependencies
+ pre-integration-test
+
+ copy
+
+
+ ${skip.integ.tests}
+ true
+ ${integ.deps}/plugins
+
+
+
+
+ org.elasticsearch.distribution.zip
+ elasticsearch
+ ${elasticsearch.version}
+ zip
+ true
+ ${integ.deps}
+
+
+
+
+ org.elasticsearch.plugin
+ elasticsearch-license
+ ${elasticsearch.version}
+ zip
+ true
+
+
+
+ org.elasticsearch.plugin
+ elasticsearch-shield
+ ${elasticsearch.version}
+ zip
+ true
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+
+
+
+ integ-setup
+ pre-integration-test
+
+ run
+
+
+
+
+
+
+
+
+
+ ${skip.integ.tests}
+
+
+
+
+ integ-teardown
+ post-integration-test
+
+ run
+
+
+
+
+
+ ${skip.integ.tests}
+
+
+
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+ org.apache.ant
+ ant-nodeps
+ 1.8.1
+
+
+
+
+
+
+
diff --git a/qa/shield-core-rest-tests/src/test/java/org/elasticsearch/shield/RestIT.java b/qa/shield-core-rest-tests/src/test/java/org/elasticsearch/shield/RestIT.java
new file mode 100644
index 00000000000..a0b1de402e0
--- /dev/null
+++ b/qa/shield-core-rest-tests/src/test/java/org/elasticsearch/shield/RestIT.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License;
+ * you may not use this file except in compliance with the Elastic License.
+ */
+package org.elasticsearch.shield;
+
+import com.carrotsearch.randomizedtesting.annotations.Name;
+import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
+
+import org.elasticsearch.client.support.Headers;
+import org.elasticsearch.common.settings.Settings;
+import org.elasticsearch.shield.ShieldPlugin;
+import org.elasticsearch.shield.authc.support.SecuredString;
+import org.elasticsearch.test.rest.ESRestTestCase;
+import org.elasticsearch.test.rest.RestTestCandidate;
+import org.elasticsearch.test.rest.parser.RestTestParseException;
+
+import java.io.IOException;
+
+import static org.elasticsearch.shield.authc.support.UsernamePasswordToken.basicAuthHeaderValue;
+
+public class RestIT extends ESRestTestCase {
+
+ private static final String USER = "test_user";
+ private static final String PASS = "changeme";
+
+ public RestIT(@Name("yaml") RestTestCandidate testCandidate) {
+ super(testCandidate);
+ }
+
+ @ParametersFactory
+ public static Iterable