The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault

The.Net Aspire framework is used to develop cloud and production-ready distributed applications. It consists of components to handle cloud-native concerns such as Redis, Postgres etc. The solution structure is divided into the following projects: DotnetAspireChallenge.ApiService, Dotnet aspire.AppHost, and Dotnet Aspire.Web.


This content originally appeared on HackerNoon and was authored by Sukhpinder Singh

Introduction

.Net Aspire framework is used to develop cloud and production-ready distributed applications. It consists of components to handle cloud-native concerns such as Redis, Postgres etc.

Prerequisites

Objectives

Learn how to create a starter project using .Net Aspire with the Azure Key Vault.

Github Sample: The solution structure is divided into the following projects

  • DotnetAspireChallenge.ApiService
  • DotnetAspireChallenge.AppHost
  • DotnetAspireChallenge.ServiceDefaults
  • DotnetAspireChallenge.Web

Getting Started

Step 1: Install the following NuGet package

Install the following Nuget package into the subsequent project “DotnetAspireChallenge.AppHost

dotnet add package Aspire.Hosting.Azure.KeyVault

In the above project, register the Azure Key Vault

    var secrets = builder.ExecutionContext.IsPublishMode
        ? builder.AddAzureKeyVault("secrets")
        : builder.AddConnectionString("secrets");

Note: A keyVault connection string is required, which means an Azure KeyVault service should be UP and RUNNING on the Azure cloud.

Step 2: Install another NuGet package

Install the following Nuget package into the subsequent project “DotnetAspireChallenge.ApiService

dotnet add package Aspire.Azure.Security.KeyVault

There are two ways to use Azure KeyVault

  • Using Configuration
  • Using SecretClient

For Configuration

Register the context of the Program.cs file as follows

    builder.Configuration.AddAzureKeyVaultSecrets("secrets")

then retrieve the secrets using the IConfiguration class as follows

    public class ExampleService(IConfiguration configuration)
    {
        string secretValue = configuration["secretKey"];
        // Use secretValue ...
    }

For SecretClient

Create an extension class and register a minimal API GET method to demonstrate the SecretClient usage in the API Service

    public static class AspireKeyVaultExtension
    {

        public static void MapKeyVaultEndpoint(this WebApplication app)
        {
            app.MapGet("/vault", async (SecretClient secretClient) =>
            {

                try
                {
                    // Define the secret name and value
                    string secretName = "mySecret";
                    string secretValue = "This is a secret value";

                    // Set the secret
                    KeyVaultSecret secret = new KeyVaultSecret(secretName, secretValue);

                    await secretClient.SetSecretAsync(secret);
                    return Results.Ok(await secretClient.GetSecretAsync(secretName));

                }
                catch (RequestFailedException e)
                {
                    Console.WriteLine("HTTP error code {0}: {1}", e.Status, e.ErrorCode);
                    Console.WriteLine(e.Message);
                    return Results.Problem($"HTTP error code {e.Status}: {e.Message}");
                }
            });
        }
    }

and finally, register in the Program.cs file

    app.MapKeyVaultEndpoint();

Add additional connection string properties using the JSON syntax

    {
      "Aspire": {
        "Azure": {
          "Security": {
            "KeyVault": {
              "VaultUri": "YOUR_VAULT_URI",
              "DisableHealthChecks": false,
              "DisableTracing": true,
              "ClientOptions": {
                "DisableChallengeResourceVerification": true
              }
            }
          }
        }
      }
    }

Congratulations..!! You’ve successfully integrated the Azure KeyVault component into the .Net Aspire project.

Github Project

GitHub - ssukhpinder/DotnetAspireChallenge: 10 Day .Net Aspire Challenge

More Cheatsheets

Cheat Sheets — .Net

C# Programming🚀

Thank you for being a part of the C# community! Before you leave:

Follow us: Youtube | X | LinkedIn | Dev.to Visit our other platforms: GitHub More content at C# Programming


This content originally appeared on HackerNoon and was authored by Sukhpinder Singh


Print Share Comment Cite Upload Translate Updates
APA

Sukhpinder Singh | Sciencx (2024-09-06T19:51:47+00:00) The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault. Retrieved from https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/

MLA
" » The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault." Sukhpinder Singh | Sciencx - Friday September 6, 2024, https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/
HARVARD
Sukhpinder Singh | Sciencx Friday September 6, 2024 » The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault., viewed ,<https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/>
VANCOUVER
Sukhpinder Singh | Sciencx - » The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/
CHICAGO
" » The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault." Sukhpinder Singh | Sciencx - Accessed . https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/
IEEE
" » The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault." Sukhpinder Singh | Sciencx [Online]. Available: https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/. [Accessed: ]
rf:citation
» The 10-Day .Net Aspire Challenge – Day 9: Azure Key Vault | Sukhpinder Singh | Sciencx | https://www.scien.cx/2024/09/06/the-10-day-net-aspire-challenge-day-9-azure-key-vault/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.