Ağ güvenliği yapılandırılmasıyla HTTP & Cleartext trafiğinin yönetimi

Android Pie (API 28) ile birlikte artık cleartext (non-HTTPS) desteği artık default olarak disable hale getirildi. Sebebi güvenlik. HTTPS üzerinden güvenli bağlantılar kurabiliyoruz. İşlemlerini sadece HTTPS trafiği üzerinden yürütmek isteyenler bu özelliği kullanarak uygulamalarını daha güvenli hale getirebilirler.

Disable iken HTTP trafiğini kullanırsak bu hatayı alırız:

“java.io.IOException: Cleartext HTTP traffic to http://{yourdomainname.com} not permitted”

Cleartext trafiğini tekrar etkinleştirmenin yollarına bakacak olursak,

Birincisi, manifest dosyası içerisinde usesCleartextTraffic  değişken değerini true değerine çekmek. Bu değişken Android 6 ile birlikte geldi, false olarak atandığında tüm compile veya target sdk versiyonu ayırt etmeksizin tüm Android versiyonlarında cleartext devre dışı bırakılabilir.  

Aşağıdakini manifest dosyasına eklediğiniz takdirde. tüm cleartext trafiğini etkin kılar.

<application
android: usesCleartextTraffic = “true”
…

İkincisi ise Android 7 ile birlikte gelen bir seçenek: Uygulamaya network_security_config.xml dosyasını entegre etmek. Bu ayarlamayla cleartext trafiğini sadece belirlediğiniz domain üzerinden yürütmenizi sağlayacaktır.

  1. Resources altında xml adında bir resource directory oluşturuyoruz.
  2. İçerisine network_security_config.xml isminde dosyamızı koyuyoruz.
  3. İçerisinde cleartextTrafficPermitted değişkenini true olarak atıyoruz.
<?xml version=”1.0" encoding=“utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted=“true”>
<domain includeSubdomains=“true”>www.yourdomainname.com</domain>
</domain-config>
</network-security-config>

Son olarak da bu dosyayı manifest içinde güvenlik dosyası olarak işaretliyoruz.

<application
android:name=“.MyApplication”
android:networkSecurityConfig=”@xml/network_security_config”
…

Tabii ki burada anlattığım şeylerden daha fazlası var. Trust anchor’ların ayarlanması, debug amaçlı entegreler, sertifika ekleme gibi birçok şey mümkün şuanda.