diff options
author | Bjørn Christian Seime <bjorncs@oath.com> | 2017-10-27 14:09:45 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2017-10-27 14:15:18 +0200 |
commit | 62c71c21fe10ceebd79f5cb0c75f9a1af67ea53a (patch) | |
tree | 746ecc8a80fd913850dab2458cb1151274a0c9ab /container-disc | |
parent | 86c963239dee5d57953fa40ea6a99759d928e6aa (diff) |
Use Jackson object mapping for identity document
Diffstat (limited to 'container-disc')
2 files changed, 42 insertions, 32 deletions
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/AthenzIdentityProviderImpl.java b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/AthenzIdentityProviderImpl.java index 37ea465758c..d2c914fc209 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/AthenzIdentityProviderImpl.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/AthenzIdentityProviderImpl.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.jdisc.athenz.impl; -import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.inject.Inject; import com.yahoo.component.AbstractComponent; @@ -16,6 +15,8 @@ import java.security.KeyPair; */ public final class AthenzIdentityProviderImpl extends AbstractComponent implements AthenzIdentityProvider { + private final ObjectMapper objectMapper = new ObjectMapper(); + private InstanceIdentity instanceIdentity; private final String dnsSuffix; @@ -29,47 +30,26 @@ public final class AthenzIdentityProviderImpl extends AbstractComponent implemen } // Test only - AthenzIdentityProviderImpl(IdentityConfig config, ServiceProviderApi serviceProviderApi, AthenzService athenzService) throws IOException { + AthenzIdentityProviderImpl(IdentityConfig config, + ServiceProviderApi serviceProviderApi, + AthenzService athenzService) throws IOException { KeyPair keyPair = CryptoUtils.createKeyPair(); this.domain = config.domain(); this.service = config.service(); - String signedIdentityDocument = serviceProviderApi.getSignedIdentityDocument(); - String ztsEndpoint = getZtsEndpoint(signedIdentityDocument); - this.dnsSuffix = getDnsSuffix(signedIdentityDocument); - this.providerUniqueId = getProviderUniqueId(signedIdentityDocument); - String providerServiceName = getProviderServiceName(signedIdentityDocument); + String rawDocument = serviceProviderApi.getSignedIdentityDocument(); + SignedIdentityDocument document = objectMapper.readValue(rawDocument, SignedIdentityDocument.class); + this.dnsSuffix = document.dnsSuffix; + this.providerUniqueId = document.providerUniqueId; InstanceRegisterInformation instanceRegisterInformation = new InstanceRegisterInformation( - providerServiceName, + document.providerService, this.domain, this.service, - signedIdentityDocument, + rawDocument, CryptoUtils.toPem(CryptoUtils.createCSR(domain, service, dnsSuffix, providerUniqueId, keyPair)), true ); - instanceIdentity = athenzService.sendInstanceRegisterRequest(instanceRegisterInformation, ztsEndpoint); - } - - private static String getProviderUniqueId(String signedIdentityDocument) throws IOException { - return getJsonNode(signedIdentityDocument, "provider-unique-id"); - } - - private static String getDnsSuffix(String signedIdentityDocument) throws IOException { - return getJsonNode(signedIdentityDocument, "dns-suffix"); - } - - private static String getProviderServiceName(String signedIdentityDocument) throws IOException { - return getJsonNode(signedIdentityDocument, "provider-service"); - } - - private static String getZtsEndpoint(String signedIdentityDocument) throws IOException { - return getJsonNode(signedIdentityDocument, "zts-endpoint"); - } - - private static String getJsonNode(String jsonString, String path) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - JsonNode jsonNode = mapper.readTree(jsonString); - return jsonNode.get(path).asText(); + instanceIdentity = athenzService.sendInstanceRegisterRequest( instanceRegisterInformation, document.ztsEndpoint); } @Override diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/SignedIdentityDocument.java b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/SignedIdentityDocument.java new file mode 100644 index 00000000000..d302b3d96ce --- /dev/null +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/SignedIdentityDocument.java @@ -0,0 +1,30 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.container.jdisc.athenz.impl; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @author bjorncs + */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +class SignedIdentityDocument { + public final String providerUniqueId; + public final String dnsSuffix; + public final String providerService; + public final String ztsEndpoint; + + public SignedIdentityDocument(@JsonProperty("provider-unique-id") String providerUniqueId, + @JsonProperty("dns-suffix") String dnsSuffix, + @JsonProperty("provider-service") String providerService, + @JsonProperty("zts-endpoint") String ztsEndpoint) { + this.providerUniqueId = providerUniqueId; + this.dnsSuffix = dnsSuffix; + this.providerService = providerService; + this.ztsEndpoint = ztsEndpoint; + } + +} + |