© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•2y ago•
270 replies
Ryalia

Clone

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        builder.AddAzureClients();
        var secretClient = AzureKeyVaultExtensions.GetSecretClient(builder.Configuration);

        builder.Services.AddGoogleOpenIdConnect(
            options => // options...
        )
    }
}

public static class AzureKeyVaultExtensions
{
    public static void AddAzureClients(this WebApplicationBuilder builder)
    {
        builder.Services.AddAzureClients(clientBuilder =>
        {
            clientBuilder.AddClient<SecretClient, SecretClientOptions>(_ => GetSecretClient(builder.Configuration));
        });
    }

    public static SecretClient GetSecretClient(IConfiguration configuration)
    {
        var azureConfiguration = GetConfiguration(configuration);
        var uri = new Uri(azureConfiguration.Url);
        var clientSecretCredential = GetCredential(azureConfiguration);
        return new SecretClient(uri, clientSecretCredential);
    }

    private static ClientSecretCredential GetCredential(AzureKeyVaultConfiguration azureConfiguration)
    {
        return new ClientSecretCredential(
            azureConfiguration.DirectoryId,
            azureConfiguration.ClientId,
            azureConfiguration.ClientSecret
        );
    }

    private static AzureKeyVaultConfiguration GetConfiguration(IConfiguration configuration)
    {
        return configuration
            .GetRequiredSection($"Authentication:{AzureKeyVaultConfiguration.SectionName}")
            .Get<AzureKeyVaultConfiguration>()
            ?? throw new ApplicationException("Azure Key Vault Configuration is not set");
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        builder.AddAzureClients();
        var secretClient = AzureKeyVaultExtensions.GetSecretClient(builder.Configuration);

        builder.Services.AddGoogleOpenIdConnect(
            options => // options...
        )
    }
}

public static class AzureKeyVaultExtensions
{
    public static void AddAzureClients(this WebApplicationBuilder builder)
    {
        builder.Services.AddAzureClients(clientBuilder =>
        {
            clientBuilder.AddClient<SecretClient, SecretClientOptions>(_ => GetSecretClient(builder.Configuration));
        });
    }

    public static SecretClient GetSecretClient(IConfiguration configuration)
    {
        var azureConfiguration = GetConfiguration(configuration);
        var uri = new Uri(azureConfiguration.Url);
        var clientSecretCredential = GetCredential(azureConfiguration);
        return new SecretClient(uri, clientSecretCredential);
    }

    private static ClientSecretCredential GetCredential(AzureKeyVaultConfiguration azureConfiguration)
    {
        return new ClientSecretCredential(
            azureConfiguration.DirectoryId,
            azureConfiguration.ClientId,
            azureConfiguration.ClientSecret
        );
    }

    private static AzureKeyVaultConfiguration GetConfiguration(IConfiguration configuration)
    {
        return configuration
            .GetRequiredSection($"Authentication:{AzureKeyVaultConfiguration.SectionName}")
            .Get<AzureKeyVaultConfiguration>()
            ?? throw new ApplicationException("Azure Key Vault Configuration is not set");
    }
}


{
  "Authentication": {
    "AzureKeyVault": {
      "Url": "https://<sensitive>.vault.azure.net/",
      "ClientId": "<sensitive>",
      "ClientSecret": "<sensitive>",
      "DirectoryId": "<sensitive>"
    }
  }
}
{
  "Authentication": {
    "AzureKeyVault": {
      "Url": "https://<sensitive>.vault.azure.net/",
      "ClientId": "<sensitive>",
      "ClientSecret": "<sensitive>",
      "DirectoryId": "<sensitive>"
    }
  }
}
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

clone
C#CC# / help
3y ago
Sharplab Clone Prototype
C#CC# / help
9mo ago
❔ Deep clone variable
C#CC# / help
3y ago
Next page