From e58140e4d02104d637e8ccecfbd380fb09a50cb0 Mon Sep 17 00:00:00 2001 From: antoniotarricone Date: Mon, 11 Dec 2023 11:23:48 +0100 Subject: [PATCH] [TEST] Added stuff to retrieve certificates from Azure Key Vault. --- .../keyvault/client/AzureKeyVaultClient.java | 15 +++++ .../service/AzureKeyVaultService.java | 11 ++++ .../auth/resource/CertificateResource.java | 62 +++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 src/main/java/it/pagopa/swclient/mil/auth/resource/CertificateResource.java diff --git a/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/client/AzureKeyVaultClient.java b/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/client/AzureKeyVaultClient.java index 9b6ad623..7454c1b4 100644 --- a/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/client/AzureKeyVaultClient.java +++ b/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/client/AzureKeyVaultClient.java @@ -24,6 +24,7 @@ import jakarta.ws.rs.PathParam; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * @author Antonio Tarricone @@ -120,4 +121,18 @@ Uni verifySignature( @PathParam("keyName") String keyName, @PathParam("keyVersion") String keyVersion, VerifySignatureRequest verifySignatureRequest); + + /** + * @param authorization + * @param keyName + * @param createKeyRequest + * @return + */ + @Path("/certificates/{certificateName}") + @GET + @Produces(MediaType.APPLICATION_JSON) + @ClientQueryParam(name = "api-version", value = "${azure-key-vault-api.version}") + Uni getCertificate( + @HeaderParam("Authorization") String authorization, + @PathParam("certificateName") String certificateName); } diff --git a/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/service/AzureKeyVaultService.java b/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/service/AzureKeyVaultService.java index 00831e82..51d02536 100644 --- a/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/service/AzureKeyVaultService.java +++ b/src/main/java/it/pagopa/swclient/mil/auth/azure/keyvault/service/AzureKeyVaultService.java @@ -18,6 +18,7 @@ import it.pagopa.swclient.mil.auth.azure.keyvault.bean.VerifySignatureResponse; import it.pagopa.swclient.mil.auth.azure.keyvault.client.AzureKeyVaultClient; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.ws.rs.core.Response; /** * @author Antonio Tarricone @@ -99,4 +100,14 @@ public Uni verifySignature(String accessToken, String k Log.debugf("Verifing signature with key [%s/%s]: [%s]", keyName, keyVersion, verifySignatureRequest); return client.verifySignature(BEARER + accessToken, keyName, keyVersion, verifySignatureRequest); } + + /** + * @param accessToken + * @param certificateName + * @return + */ + public Uni getCertificate(String accessToken, String certificateName) { + Log.debugf("Retrieving certificate [%s].", certificateName); + return client.getCertificate(BEARER + accessToken, certificateName); + } } diff --git a/src/main/java/it/pagopa/swclient/mil/auth/resource/CertificateResource.java b/src/main/java/it/pagopa/swclient/mil/auth/resource/CertificateResource.java new file mode 100644 index 00000000..5712f85f --- /dev/null +++ b/src/main/java/it/pagopa/swclient/mil/auth/resource/CertificateResource.java @@ -0,0 +1,62 @@ +/* + * CertificateResource.java + * + * 21 mar 2023 + */ +package it.pagopa.swclient.mil.auth.resource; + +import java.util.UUID; + +import org.jboss.logging.MDC; + +import io.quarkus.logging.Log; +import io.smallrye.mutiny.Uni; +import it.pagopa.swclient.mil.auth.azure.auth.service.AzureAuthService; +import it.pagopa.swclient.mil.auth.azure.keyvault.service.AzureKeyVaultService; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +/** + * @author Antonio Tarricone + */ +@Path("/certificates") +public class CertificateResource { + /* + * + */ + AzureAuthService authService; + + /* + * + */ + AzureKeyVaultService keyVaultService; + + /** + * + * @param authService + * @param keyVaultService + */ + @Inject + CertificateResource(AzureAuthService authService, AzureKeyVaultService keyVaultService) { + this.authService=authService; + this.keyVaultService=keyVaultService; + } + + /** + * @return + */ + @Path("/{certificateName}") + @GET + @Produces(MediaType.APPLICATION_JSON) + public Uni get(@PathParam("certificateName") String certificateName) { + String correlationId = UUID.randomUUID().toString(); + MDC.put("requestId", correlationId); + Log.debug("get - Input parameters: n/a"); + return authService.getAccessToken().chain(x -> keyVaultService.getCertificate(x.getToken(), certificateName)); + } +} \ No newline at end of file