Bir web servis için web.config dosyası gerekli yapılandırma ayarlarını içerir. Bu yapılandırma ayarlarından bazıları hassas bilgiler içerebilir, örneğin web servis bir veritabanına bağlanıyor ise bu veritabanı için gerekli bağlantı dizesi (connection string) web.config içerisinde plain text olarak durur ve veritabanının bulunduğu sunucu için gerekli kullanıcı adı ve şifreyi içerir. Bu durum tabi ki olası bir güvenlik açığıdır; eğer web servisi bir üçüncü parti sunucuda tutmayı planlıyorsak, ya da kaynak koduna bu bilgiye sahip olmasını istemediğiniz kişilerin erişmesi gerekiyorsa, ekstra bir güvenlik katmanı sağlamak için bu bilgiyi şifreleyebiliriz.
<connectionStrings> <add name="DatabaseConnectionString" connectionString="Data Source=blablabla.database.windows.net;Initial Catalog=BlaBlaDB;User ID=kullaniciadi;Password=sifre" providerName="System.Data.SqlClient" /> </connectionStrings>
.NET Framework, bilgilerimizin yukarıdaki gibi gözükmemesini sağlamak için “protected configuration” adı verilen bir özellik ile şifreleme imkanı sağlar ve bu şifrelemeyi DpapiProtectedConfigurationProvider veya RsaProtectedConfigurationProvider sınıflarını kullanarak gerçekleştirir. Ancak bu iki yöntemde de şifrelemenin web servisin bulunacağı sunucu üzerinde uygulanması gerekir, çünkü şifreleme için makineye özel bir anahtar değeri kullanılır ve bu durum da Azure üzerinde bu özelliği kullanamayacağımız anlamına gelir.
Azure üzerinde web.config dosyasını şifrelemek istiyorsak özel bir “protected configuration provider” kullanmamız gerekli. Bu yazımda, şifreleme için bir “.pfx” uzantılı sertifika ve Windows Azure Certificate Store kullanarak şifreleme yapan özel “Pkcs12 Protected Configuration Provider” ile Azure üzerindeki web servisimizin web.config dosyasını şifreleyeceğiz.