diff --git a/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/RequestInfoImpl.java b/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/RequestInfoImpl.java index 12fd218f826bc9ea1177e433d305cbc951571605..6ddf941be1f763557bce5904cd290ff22cd34ef8 100644 --- a/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/RequestInfoImpl.java +++ b/provider/indexer-ibm/src/main/java/org/opengroup/osdu/indexer/ibm/util/RequestInfoImpl.java @@ -53,10 +53,14 @@ public class RequestInfoImpl implements IRequestInfo { @Inject private TenantInfo tenantInfo; - + @Value("${DEPLOYMENT_ENVIRONMENT}") private String DEPLOYMENT_ENVIRONMENT; + private static final String INDEXER_API_KEY_HEADER="x-api-key"; + + @Value("${INDEXER_API_KEY}") + private String tokenFromProperty; @Override public DpsHeaders getHeaders() { @@ -65,9 +69,19 @@ public class RequestInfoImpl implements IRequestInfo { // throw to prevent null reference exception below throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Invalid Headers", "Headers Map DpsHeaders is null"); } - DpsHeaders headers = this.getCoreServiceHeaders(headersMap.getHeaders()); - return headers; - } + DpsHeaders headers = this.getCoreServiceHeaders(headersMap.getHeaders()); + + if (headers.getHeaders().containsKey(INDEXER_API_KEY_HEADER)) { + String apiToken = headers.getHeaders().get(INDEXER_API_KEY_HEADER); + if (!apiToken.equals(tokenFromProperty)) { + logger.error("Indexer API Token in header is mismatched"); + throw new AppException(HttpStatus.SC_UNAUTHORIZED, "Indexer API Token in header mismatched.", "Indexer API Token in header mismatched."); + } + } else { + throw new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Missing Header", "The headers "+ INDEXER_API_KEY_HEADER + " is missing!"); + } + return headers; + } @Override public String getPartitionId() { @@ -95,7 +109,8 @@ public class RequestInfoImpl implements IRequestInfo { @Override public boolean isTaskQueueRequest() { - //if (!this.dpsHeaders.getHeaders().containsKey(INDEXER_QUEUE_KEY)) return false; + //if (!this.dpsHeaders.getHeaders().containsKey(INDEXER_API_KEY_HEADER)) return false; + // String queueId = this.headersInfo.getHeadersMap().get(AppEngineHeaders.TASK_QUEUE_NAME); // return queueId.endsWith(Constants.INDEXER_QUEUE_IDENTIFIER); diff --git a/provider/indexer-ibm/src/main/resources/application.properties b/provider/indexer-ibm/src/main/resources/application.properties index d01f70fee512758c2f6543d56218831ee9a3d472..701f7c8469bb6482eb765eef9d2a948971fb5c4e 100644 --- a/provider/indexer-ibm/src/main/resources/application.properties +++ b/provider/indexer-ibm/src/main/resources/application.properties @@ -67,4 +67,5 @@ ELASTIC_USER_PASSWORD=REPLACE_ME:REPLACE_ME #requeue logic INDEXER_QUEUE_HOST="" -ibm.env.prefix=oc-local \ No newline at end of file +ibm.env.prefix=oc-local +INDEXER_API_KEY=abcds