Ejemplo n.º 1
0
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //Getting secret from query
            string secret = req.Query["secret"];

            //Validating if secret is empty
            if (string.IsNullOrEmpty(secret))
                return new BadRequestObjectResult("Request does not contain a valid Secret");

            SecretRequest secretRequest = new SecretRequest(secret);

            log.LogInformation($"GetKeyVaultSecret request received for secret { secretRequest.Secret}");

            //Creating keyvault object
            var keyvault = new KeyVault();

            log.LogInformation("Secret Value retrieved from KeyVault.");

            //Getting secret information
            var secretBundle = await keyvault.GetSecret(secret);

            //Returning secret data
            var secretResponse = new SecretResponse { Secret = secretRequest.Secret, Value = secretBundle.Value };

            return new OkObjectResult(secretResponse);

        }
Ejemplo n.º 2
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();

            log.LogInformation($"Body --> {requestBody}");

            SecretRequest secretRequest = JsonConvert.DeserializeObject <SecretRequest>(requestBody);

            if (string.IsNullOrEmpty(secretRequest.Secret))
            {
                return(new BadRequestObjectResult("Request does not contain a valid Secret."));
            }

            log.LogInformation($"GetKeyVaultSecret request received for secret { secretRequest.Secret}");

            var serviceTokenProvider = new AzureServiceTokenProvider();

            var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));

            string secretUri = SecretUri((string)secretRequest.Secret);

            log.LogInformation($"Key Vault URI {secretUri} generated");
            SecretBundle secretValue;

            try
            {
                secretValue = await keyVaultClient.GetSecretAsync(secretUri);
            }
            catch (KeyVaultErrorException kex)
            {
                return(new NotFoundObjectResult(kex.Message));
            }
            log.LogInformation("Secret Value retrieved from KeyVault.");

            var secretResponse = new SecretResponse {
                Secret = secretRequest.Secret, Value = secretValue.Value
            };

            return(new OkObjectResult(JsonConvert.SerializeObject(secretResponse)));
        }