54 lines
No EOL
1.9 KiB
C#
54 lines
No EOL
1.9 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using JD.SecretsManager;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace JD.Vault
|
|
{
|
|
public static class SecretsManagement
|
|
{
|
|
private sealed class NoLogger : ILogger<OidcTokenProvider>, ILogger<EnvironmentVariableTokenProvider>, ILogger<VaultTokenSecretsManager>
|
|
{
|
|
public IDisposable BeginScope<TState>(TState state) => null;
|
|
|
|
public bool IsEnabled(LogLevel logLevel) => false;
|
|
|
|
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
|
|
{ }
|
|
}
|
|
|
|
private readonly static object _secretsManagerLock = new object();
|
|
private static ISecretsManager _secretsManager;
|
|
|
|
public static ISecretsManager GetSecretsManager()
|
|
{
|
|
lock (_secretsManagerLock)
|
|
{
|
|
if (_secretsManager != null)
|
|
{
|
|
return _secretsManager;
|
|
}
|
|
|
|
IVaultConfiguration vaultConfiguration = new DefaultVaultConfiguration();
|
|
|
|
NoLogger logger = new NoLogger();
|
|
|
|
IVaultTokenProvider backupTokenProvider = new OidcTokenProvider(logger, vaultConfiguration);
|
|
IVaultTokenProvider tokenProvider = new EnvironmentVariableTokenProvider(logger, backupTokenProvider);
|
|
_secretsManager = new VaultTokenSecretsManager(
|
|
logger,
|
|
tokenProvider,
|
|
vaultConfiguration);
|
|
|
|
bool isInitialised = Task.Run(() => _secretsManager.InitialiseAsync()).Result;
|
|
|
|
if (!isInitialised)
|
|
{
|
|
throw new Exception("Failed to initialise the secrets manager. Please contact support.");
|
|
}
|
|
|
|
return _secretsManager;
|
|
}
|
|
}
|
|
}
|
|
} |