summaryrefslogtreecommitdiffstats
path: root/vespa-athenz/src/main/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'vespa-athenz/src/main/java/com/yahoo')
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java28
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java3
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/IdentityDocumentApi.java6
3 files changed, 33 insertions, 4 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java
index e591105eed1..f879c2fa672 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/EntityBindingsMapper.java
@@ -4,9 +4,14 @@ package com.yahoo.vespa.athenz.identityprovider.api;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.yahoo.vespa.athenz.api.AthenzIdentity;
+import com.yahoo.vespa.athenz.api.AthenzService;
import com.yahoo.vespa.athenz.identityprovider.api.bindings.IdentityDocumentEntity;
import com.yahoo.vespa.athenz.identityprovider.api.bindings.VespaUniqueInstanceIdEntity;
import com.yahoo.vespa.athenz.identityprovider.api.bindings.SignedIdentityDocumentEntity;
+import com.yahoo.vespa.athenz.utils.AthenzIdentities;
+
+import java.util.Base64;
/**
* Utility class for mapping objects model types and their Jackson binding versions.
@@ -32,6 +37,27 @@ public class EntityBindingsMapper {
entity.clusterIndex, entity.clusterId, entity.instance, entity.application, entity.tenant, entity.region, entity.environment);
}
+ private static IdentityDocument toIdentityDocument(IdentityDocumentEntity entity) {
+ return new IdentityDocument(
+ toVespaUniqueInstanceId(entity.providerUniqueId),
+ entity.configServerHostname,
+ entity.instanceHostname,
+ entity.createdAt,
+ entity.ipAddresses);
+ }
+
+ public static SignedIdentityDocument toSignedIdentityDocument(SignedIdentityDocumentEntity entity) {
+ return new SignedIdentityDocument(
+ toIdentityDocument(entity.identityDocument),
+ entity.signature,
+ entity.signingKeyVersion,
+ VespaUniqueInstanceId.fromDottedString(entity.providerUniqueId),
+ entity.dnsSuffix,
+ (AthenzService) AthenzIdentities.from(entity.providerService),
+ entity.ztsEndpoint,
+ entity.documentVersion);
+ }
+
public static VespaUniqueInstanceIdEntity toVespaUniqueInstanceIdEntity(VespaUniqueInstanceId model) {
return new VespaUniqueInstanceIdEntity(
model.tenant(), model.application(), model.environment(), model.region(),
@@ -50,7 +76,7 @@ public class EntityBindingsMapper {
public static SignedIdentityDocumentEntity toSignedIdentityDocumentEntity(SignedIdentityDocument model) {
try {
IdentityDocumentEntity identityDocumentEntity = toIdentityDocumentEntity(model.identityDocument());
- String rawDocument = mapper.writeValueAsString(identityDocumentEntity);
+ String rawDocument = Base64.getEncoder().encodeToString(mapper.writeValueAsString(identityDocumentEntity).getBytes());
return new SignedIdentityDocumentEntity(
rawDocument,
model.signature(),
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java
index f9562c05c5d..d184efc0221 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/SignedIdentityDocument.java
@@ -11,6 +11,9 @@ import java.net.URI;
* @author bjorncs
*/
public class SignedIdentityDocument {
+ public static final int DEFAULT_KEY_VERSION = 0;
+ public static final int DEFAULT_DOCUMENT_VERSION = 1;
+
private final IdentityDocument identityDocument;
private final String signature;
private final int signingKeyVersion;
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/IdentityDocumentApi.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/IdentityDocumentApi.java
index 80aaa72d4bf..775a49349a3 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/IdentityDocumentApi.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/api/bindings/IdentityDocumentApi.java
@@ -17,16 +17,16 @@ public interface IdentityDocumentApi {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Deprecated
- SignedIdentityDocument getIdentityDocument(@QueryParam("hostname") String hostname);
+ SignedIdentityDocumentEntity getIdentityDocument(@QueryParam("hostname") String hostname);
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/node/{host}")
- SignedIdentityDocument getNodeIdentityDocument(@PathParam("host") String host);
+ SignedIdentityDocumentEntity getNodeIdentityDocument(@PathParam("host") String host);
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/tenant/{host}")
- SignedIdentityDocument getTenantIdentityDocument(@PathParam("host") String host);
+ SignedIdentityDocumentEntity getTenantIdentityDocument(@PathParam("host") String host);
}