У меня есть значение объекта в ключе хранилища ключей Azure, и я пытаюсь прочитать значение в классе запуска, но значение всегда равно нулю.
Program.cs
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
config.AddAzureKeyVault(
vaultConfig.AzureVaultUrl,
keyVaultClient,
new DefaultKeyVaultSecretManager());
Startup.cs
public virtual void ConfigureSettings(IServiceCollection services)
{
services.AddOptions();
services.Configure<OktaConfig>(Configuration.GetSection("OktaConfig")); // Read the value from Azure Key Vault or %APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json for Dev Environment
}
Controller.cs
public class SystemController
{
private readonly IConfiguration _config;
private readonly OktaConfig _oktaConfig;
public SystemController(IConfiguration config, IOptions<OktaConfig> oktaConfig)
{
_config = config;
_oktaConfig = oktaConfig.Value; // This value is null
}
[HttpGet("Vaults")]
public IActionResult GetVaultValues()
{
var OktaConfig = JsonConvert.DeserializeObject<OktaConfig>(_config["OktaConfig"]);
return Ok(OktaConfig);
}
Значение _oktaConfig всегда равно нулю.
Здесьмое хранилище ключей Azure Key
Структура секретного значения ключа Json
{
"OktaDomain": "https://dev-166545.okta.com/oauth2/XXXXXXXXXXXXXXXXX/v1/authorize",
"ClientId": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"ClientSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"redirectUrl": "https://localhost:44307"
}
ViewModel.cs
public class OktaConfig
{
public string RedirectUrl { get; set; }
public string OktaDomain { get; set; }
public string ClientId { get; set; }
public string ClientSecret { get; set; }
public string ClientName { get; set; }
}
С помощью этого кода _config ["OktaConfig"] я могу получить значение, но я хочу сделать внедрение зависимости для этого.