diff --git a/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityInBasicRestTestCase.java b/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityInBasicRestTestCase.java index e9271ddf5ed4a..0b09384daafff 100644 --- a/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityInBasicRestTestCase.java +++ b/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityInBasicRestTestCase.java @@ -15,8 +15,6 @@ import java.util.List; -import static org.elasticsearch.xpack.core.security.authc.support.UsernamePasswordToken.basicAuthHeaderValue; - public abstract class SecurityInBasicRestTestCase extends ESRestTestCase { private RestHighLevelClient highLevelAdminClient; diff --git a/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityWithBasicLicenseIT.java b/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityWithBasicLicenseIT.java index e2a43bfba7997..c44918ac8443f 100644 --- a/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityWithBasicLicenseIT.java +++ b/x-pack/plugin/security/qa/security-basic/src/javaRestTest/java/org/elasticsearch/xpack/security/SecurityWithBasicLicenseIT.java @@ -39,6 +39,10 @@ public void testWithBasicLicense() throws Exception { assertAuthenticateWithApiKey(keyAndId, true); assertFailToGetToken(); + // Service account token works independently to oauth2 token service + final String bearerString = createServiceAccountToken(); + assertAuthenticateWithServiceAccountToken(bearerString); + assertAddRoleWithDLS(false); assertAddRoleWithFLS(false); } @@ -222,6 +226,23 @@ private void assertAuthenticateWithApiKey(Tuple keyAndId, boolea } } + private String createServiceAccountToken() throws IOException { + final Request request = new Request("POST", "_security/service/elastic/fleet-server/credential/token/api-token-1"); + final Response response = adminClient().performRequest(request); + assertOK(response); + @SuppressWarnings("unchecked") + final Map tokenMap = (Map) responseAsMap(response).get("token"); + return String.valueOf(tokenMap.get("value")); + } + + private void assertAuthenticateWithServiceAccountToken(String bearerString) throws IOException { + Request request = new Request("GET", "/_security/_authenticate"); + request.setOptions(RequestOptions.DEFAULT.toBuilder().addHeader("Authorization", "Bearer " + bearerString)); + final Response response = client().performRequest(request); + assertOK(response); + assertEquals("elastic/fleet-server", responseAsMap(response).get("username")); + } + private void assertAddRoleWithDLS(boolean shouldSucceed) throws IOException { final Request addRole = new Request("POST", "/_security/role/dlsrole"); addRole.setJsonEntity("{\n" +