Безопасная передача пароля в asp.net core 6.0 через переменную среды

appsettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "MailSettings": {
    "SmtpLogin": "[email protected]",
    "Password": "",
    "Host": "smtp.server.com",
    "Port": 465
  }
}

MailSettings.cs:

public class MailSettings
    {
        public string SmtpLogin { get; set; }
        public string Password { get; set; }
        public string Host { get; set; }
        public int Port { get; set; }
    }

program.cs:

IConfigurationSection conf = builder.Configuration.GetSection("MailSettings");

builder.Services.Configure<MailSettings>(conf);

MailController.cs:

public class MailController : ControllerBase
{
    private readonly IOptions<MailSettings> demoOptions;

    public MailController(IOptions<MailSettings> demoOptions)
        {

            this.demoOptions = demoOptions;
        }
}

в переменных среды есть переменная:

PASS=1234

При запуске приложения, строка

builder.Services.Configure<MailSettings>(conf);

передает в контроллер заполненный объект MailSettings, данные для которого берутся из appsettings.json, где поле Password пустое. Это хорошо, но я хочу до передачи данных в контроллер полю MailSettings.Password присвоить значение переменной среды PASS, чтобы контроллер получил объект demoOptions.Password == 1234

Кто знает как это сделать? Как заменить значение поля Password="" из appsettings.json значением переменной среды?


Ответы (0 шт):