diff options
Diffstat (limited to 'vespa-athenz/src/main/java/com/yahoo')
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); } |