MonixOne.Infisical.Configuration 1.1.3

dotnet add package MonixOne.Infisical.Configuration --version 1.1.3
                    
NuGet\Install-Package MonixOne.Infisical.Configuration -Version 1.1.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MonixOne.Infisical.Configuration" Version="1.1.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MonixOne.Infisical.Configuration" Version="1.1.3" />
                    
Directory.Packages.props
<PackageReference Include="MonixOne.Infisical.Configuration" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MonixOne.Infisical.Configuration --version 1.1.3
                    
#r "nuget: MonixOne.Infisical.Configuration, 1.1.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MonixOne.Infisical.Configuration@1.1.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MonixOne.Infisical.Configuration&version=1.1.3
                    
Install as a Cake Addin
#tool nuget:?package=MonixOne.Infisical.Configuration&version=1.1.3
                    
Install as a Cake Tool

Infisical configuration for ASP.NET Core

  • MonixOne.Infisical.Configuration — переиспользуемая библиотека для .NET 9/10;

Библиотека один раз загружает секреты из Infisical во время старта приложения и:

  1. добавляет их в IConfiguration;
  2. копирует их в EnvironmentVariableTarget.Process;
  3. выполняет обязательное периодическое обновление с повторным Universal Auth login.

Библиотека читает настройки из секции Infisical в IConfiguration; если значение в секции отсутствует, используется прежний fallback к переменной окружения INFISICAL_*. Делегат configure в AddInfisical применяется последним и может переопределить оба источника. Копирование полученных секретов выполняется только в окружение текущего процесса приложения.

builder.Services.AddInfisical(builder.Configuration);
builder.Services.Configure<DemoOptions>(builder.Configuration.GetSection("Demo"));

// Старый consumer-код продолжает работать.
public sealed class SomeService(IOptions<DemoOptions> options)
{
    public string? ApiUrl => options.Value.ApiUrl;
}

AddInfisical нужно вызвать до Configure<T>, BindConfiguration и других регистраций, которые читают секретные настройки.

appsettings.json

Помимо переменных окружения можно задать настройки в appsettings.json:

{
  "Infisical": {
    "ClientId": "replace-with-machine-identity-client-id",
    "ClientSecret": "replace-with-machine-identity-client-secret",
    "ProjectId": "replace-with-project-id",
    "EnvironmentSlug": "dev",
    "SecretPath": "/",
    "RefreshIntervalSeconds": 86400,
    "Url": "http://infisical01.infra.home.arpa:8888",
    "Recursive": false
  }
}

EnvironmentSlug остаётся обязательным параметром Infisical API. Не добавляйте рабочий ClientSecret в репозиторий: для production предпочтительнее передать его через secret store хоста или переменную окружения.

Чтобы полностью отключить библиотеку для конкретного запуска, передайте Enabled = false при подключении:

builder.Services.AddInfisical(builder.Configuration, options => options.Enabled = false);

В этом режиме библиотека не читает переменные INFISICAL_*, не валидирует credentials, не обращается к Infisical, не добавляет provider в IConfiguration и не регистрирует background refresh.

Доступ Infisical

В Infisical создайте Machine Identity с Universal Auth, создайте для неё Client Secret и добавьте identity в проект с ролью read. EnvironmentSlug — точный slug окружения из Project Settings → Environments (dev, staging, prod или другой slug проекта).

Скопируйте шаблон:

cp .env.example .env

Обязательные значения:

INFISICAL_CLIENT_ID=<Machine Identity Client ID>
INFISICAL_CLIENT_SECRET=<Machine Identity Client Secret>
INFISICAL_PROJECT_ID=<Project ID>
INFISICAL_ENVIRONMENT=dev
INFISICAL_SECRET_PATH=/
INFISICAL_REFRESH_INTERVAL_SECONDS=86400

INFISICAL_REFRESH_INTERVAL_SECONDS — обязательный параметр контракта: положительное целое количество секунд. Значение 86400 — один день и используется библиотекой по умолчанию, если переменная не была установлена хостом.

INFISICAL_URL нужен для self-hosted Infisical; для Cloud его можно не указывать. До вызова AddInfisical эти переменные должны уже находиться в process environment.

Обновление

Access Token является короткоживущим. AddInfisical не сохраняет его на диске: при каждом RefreshAsync выполняется login по постоянным CLIENT_ID и CLIENT_SECRET.

Background refresh регистрируется всегда. По умолчанию он выполняется раз в сутки; для другого интервала задайте переменную окружения хоста:

INFISICAL_REFRESH_INTERVAL_SECONDS=43200

Каждый refresh получает новый Access Token через Universal Auth. Поэтому даже редко используемый сервис не зависит от токена, который мог истечь в памяти.

Обновление вызывает IConfigurationRoot.Reload. IOptionsMonitor<T> увидит новые значения, а уже созданный IOptions<T> остаётся снимком, как и в стандартной модели ASP.NET Core.

Если Infisical вернул ошибку, отмену или пустой список секретов, обновление считается неуспешным: библиотека сохраняет последнее успешно загруженное значение конфигурации и повторит попытку на следующем интервале.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.3 367 9/1/2026
1.1.2 112 8/31/2026
1.1.1 98 8/30/2026
1.1.0 95 8/30/2026
1.0.4 101 8/29/2026