membrane / api-gateway

API gateway for REST, OpenAPI, GraphQL and SOAP written in Java.
https://membrane-api.io
Apache License 2.0
457 stars 137 forks source link

Azure DNS API is broken #1167

Closed rrayst closed 3 weeks ago

rrayst commented 3 months ago
java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asText()" because the return value of "com.fasterxml.jackson.databind.JsonNode.get(String)" is null
        at com.predic8.membrane.core.transport.ssl.acme.AcmeAzureTableApiStorageEngine.provisionDns(AcmeAzureTableApiStorageEngine.java:245)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeClient.provisionDns(AcmeClient.java:298)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeClient.provision(AcmeClient.java:285)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeRenewal.fulfillChallenges(AcmeRenewal.java:165)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeRenewal.makeOrderValid(AcmeRenewal.java:122)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeRenewal.tryGetCertificate(AcmeRenewal.java:97)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeRenewal.lambda$doWork$0(AcmeRenewal.java:61)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeRenewal.lambda$withMasterLease$8(AcmeRenewal.java:292)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asText()" because the return value of "com.fasterxml.jackson.databind.JsonNode.get(String)" is null
        at com.predic8.membrane.core.azure.api.auth.AuthenticationApi.accessToken(AuthenticationApi.java:55)
        at com.predic8.membrane.core.azure.api.dns.DnsRecordApi.requestBuilder(DnsRecordApi.java:38)
        at com.predic8.membrane.core.azure.api.dns.DnsRecordCommandExecutor.create(DnsRecordCommandExecutor.java:62)
        at com.predic8.membrane.core.transport.ssl.acme.AcmeAzureTableApiStorageEngine.provisionDns(AcmeAzureTableApiStorageEngine.java:240)
        ... 8 more
predic8 commented 3 months ago

@t-burch

Plz in AuthenticationApi:

public String accessToken() throws Exception {
    var response = http.call(tokenExchange()).getResponse();
    return new ObjectMapper()
            .readTree(response.getBodyAsStringDecoded())
            .get("access_token")
            .asText();
}

try-catch around the return and in the catch clause dump the response status and body.