summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2017-10-27 14:09:45 +0200
committerBjørn Christian Seime <bjorncs@oath.com>2017-10-27 14:15:18 +0200
commit62c71c21fe10ceebd79f5cb0c75f9a1af67ea53a (patch)
tree746ecc8a80fd913850dab2458cb1151274a0c9ab
parent86c963239dee5d57953fa40ea6a99759d928e6aa (diff)
Use Jackson object mapping for identity document
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/AthenzIdentityProviderImpl.java44
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/SignedIdentityDocument.java30
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;
+ }
+
+}
+