ASP.Net Core Projelerinde Güvenlik — CORS Uygulamaları

Herkese Merhabalar,

Önceki yazımda ASP.Net Core projelerinde CORS(Cross-Origin Resource Sharing)konusuna değinmiştim. Bu yazımda ise projemizde CORS ile uygulamalar gerçekleştirerek konuyu pekiştirmeye çalışacağız. Faydalı olması dileğiyle . 🙂

Not: Öncelikle API projesi içerisindeki metotlar üzerinden tetikleme işlemi gerçekleştireceğimiz için bir API projesi açmanız gerekmektedir. Ve bir de bu API projenizdeki metotları tetikleyeceğiniz Web projesine de ihtiyacınız var. Tercihen MVC projesi açabilirsiniz 🙂

  • Açmış olduğunuz API ve Web projesini ayağa kaldırmamız gerekmektedir. Ancak buradaki Same Origin Policy kuralını test etmeniz için _Layout’ a aşağıdaki gibi API URL’ini çağırma işlemi sağlamanız gerekir. Bu sayede API’yi ayağa kaldırdığımız zaman; Web projeniz, API projenizi tetikleyip, ilgili datayı konsola yazdıracaktır.
  • Browser tarafından farklı bir Domain’e istek yapıldığı için aşağıdaki gibi bir hata yansıtılmaktadır. Same Origin Policy nedeniyle tetikleme işlemi engellenir. Kaynakta da No ‘Access-Control-Allow-Origin’ header hatasının geldiğini göreceksiniz. (Bu testi yapabilmeniz için yapmanız gereken, hem API hem de Web projenizi aynı aynda ayağa kaldırmaktır.)
  • Bu güvenlik politikasını esnetebilmek için CORS özelliğinden faydalanacağız. CORS ile güvenlik politikasını esnetme işlemlerini Startup.cs tarafında gerçekleştirmek gerekmektedir.
  • Öncelikli olarak bu yazımızda API projemize nereden istek gelirse gelsin kabul edecek şekilde ayarlamalar gerçekleştirelim.

Startup.cs içerisine aşağıdaki gibi bir kod bloğu yazdığımızda, anlamı aslında şudur;

  • Hangi Origin’den gelirse gelsin isteklere cevap versin.
  • Header ne olursa olsun API uygulaması cevap versin.
  • Bu API uygulamasına GET, POST, PUT ne metotu gelirse gelsin onaylansın.
  • Bu işlemi servis olarak ekledikten sonra, bir de Middleware olarak eklemek gerekir.
  • Bu Middleware’yi ekleceğimiz kısım önem teşkil etmektedir. Routing altına, Authorization üstüne eklenmesi gerekir. Aşağıdaki gibi çağırdığımızda, ConfigureServices içerisine yazmış olduğumuz kural tanımlanmış olacaktır. Middleware çalıştığında ise otomatik olarak Policy de çalışacaktır.
  • Web uygulamanızı tekrar ayağa kaldırıp, API projesine istekte bulunulduğunda önceki aldığımız hatayı almayacağımızı görürüz. Ekran görüntüleri aşağıdaki gibidir.

https://github.com/KardelRuveyda/ASPNetSecurity kodları Github ‘da oluşturduğum Repository’den inceleyebilisiniz.

Kaynakça