ekrem özer

her yerde olan şeyler.

.Net Core Secret Protection (secrets.json) Kullanımı

Merhaba arkadaşlar bu makalede projemizde zaman zaman ihtiyaç duyacağımız secrets.json dosyasının kullanımı ve amacından bahsedeceğim. Connection String, Token ve diğer özel bilgilerimizi bazen appsettings.json dosyasına yazarız ve projeyi git gibi herhangi bir source control'e ittiğimiz zaman bu bilgilerde repoya gönderilmiş olur ve güvenlik zaafiyeti oluştutur. İşte bunun önüne geçmek için .net core'da secrets.json diye localinizde oluşan bir dosya var.

Öncelikle bu dosyayı açmak için, projeye say tuş yapıp Manage User Secrets diyoruz.

ve karşımıza boş bir json dosyası çıkıyor, ve dosyanın fiziksel yoluna baktığımız zaman projenin dizininde olmadığını görüyoruz.

Dosyanın fiziksel yolu;
 

C:\Users\ekrem.ozer\AppData\Roaming\Microsoft\UserSecrets\c6d95e65-636b-4c51-bea2-c641d959ff54\secrets.json

Dosya AppData klasöründe oluştu, kalın olarak yazdığım Guid ise projenin csproj dosyasını açtığım da karşımıza çıkan UserSecretsId ile aynıdır.

Dosyanın nerde oluştuğuna ve kullanım amacına değindikten sonra gelelim çalışma prensibine. Bu json dosyasına yazdığımız içerikler runtime'da appsetting.json ile birleşir ve appsettingse ulaştığınız yöntemle bu dosyayı okuyabilirsiniz. Şimdi örnek olarak ben bu dosyaya ConnectionString ekliyorum.

{
   "ConnectionString": "Server=ekrem.ozer\\SQLEXPRESS;Database=master;Trusted_Connection=True;Database=EkremOzer;"
}

Şimdi Startup.cs de yazdığım ConnectionStringe erişmek için  ConfigureServices fonksiyonunda aşağıdaki kodu kullanıyorum;

        public void ConfigureServices(IServiceCollection services)
        {
            var connectionString = Configuration["ConnectionString"];
            services.AddControllersWithViews();
        }

Projeyi debug modda çalıştırdığımda appsetting.json dan okuyabiliyormuş gibi değerime ulaşabildim.

Kodları ihtiyaç duymayacağınızı düşünerek github'a atmıyorum. Umarım faydalı olmuştur.