Cryptography for appsettings

AtlasX Web Service รองรับการเข้ารหัสไฟล์ appsettings.json ด้วย AES เพื่อป้องกันข้อมูลสำคัญใน configuration เมื่อ deploy ขึ้น production โดยไฟล์ที่เข้ารหัสแล้วจะมีนามสกุล .enc

Encrypt / Decrypt

ใช้ command line arguments ในการเข้ารหัสและถอดรหัสไฟล์ โดยระบุ --crypto-mode และ --filename

Encrypt

dotnet run --crypto-mode encrypt --filename appsettings.json

ผลลัพธ์จะได้ไฟล์ appsettings.json.enc

Decrypt

dotnet run --crypto-mode decrypt --filename appsettings.json.enc

ผลลัพธ์จะได้ไฟล์ appsettings.json

Service Registration

เรียก CryptoConfigurationUtils.TryProcessCryptoAsync() ใน Program.cs ก่อน build application เพื่อตรวจสอบว่า request นี้เป็นการเข้ารหัสหรือถอดรหัสไฟล์ ถ้าใช่จะดำเนินการแล้วหยุดทำงานทันที ไม่ start web server

if (await CryptoConfigurationUtils.TryProcessCryptoAsync(args))
{
    return;
}

var builder = WebApplication.CreateBuilder(args);
await builder.Configuration.AddAppSettings(builder.Environment);