Swagger UI’da Authorization Bilgilerinin Girilmesi

Mennan Köse
2 min readAug 28, 2019

--

ASP.NET Core’da oluşturuşmuş bir Web API’ın dökümantasyonu için Swagger ve Swagger UI kullandığınızda varsayılan olarak güvenlik ile ilgili HTTP header’larını arayüz üzerinden girememektesiniz.

Örnek vermek gerekirse geliştirmiş olduğunuz API güvenliğini sağlayabilmek için Client-Id ve Client-Secret isminde iki tane HTTP header’ından gelen bilgileri kontrol ettiğini varsayalım.

44 ve 67. satırlar arasında API’ı kullanan kullanıcıdan gelen HTTP header’larının içerisindeki değerleri kontrol edecek bir middleware yazdık. Kullanıcı eğer Client-Id veya Client-Secret bilgilerini göndermezse veya istediğimiz değerleri göndermezse HTTP 401 Unauthorized durum kodunu göndermekteyiz.

API’ımızı Swagger üzerinden test ettiğimizde de sunucudan bize HTTP 401 durum kodunun geldiğini görmekteyiz.

SwaggerUI’ı kullanan kullanıcıdan gerekli güvenlik bilgilerini kullanabilmek için Swashbuckle’ın SecurityDefinition tipinden yararlanmamız gerekmektedir.

Gerekli tanımlamaları yapabilmek için Startup.cs dosyamızı aşağıdaki şekilde düzenleyelim.

41 ve 68. satırlar arasında HTTP header tanımlamalarını gerçekleştirdik. İlk önce Client-Id ve Client-Secret isminde Security Definition tanımlarını yaparak ilgili Dictionary’e ekledik. Sonrasındaysa 60. satırdaki tanımlamayla hangi Security Definiton’ların ekranda görünmesi gerektiğini belirledik.

İlgili değişiklikleri yaptıktan sonra API projemizi tekrar çalıştırıyoruz ve http://localhost:5000/help adresine giderek sayfanın sağ tarafında kalan Authorize düğmesine basıyoruz.

Ekrana Client-Id ve Client-Secret bilgilerini girebileceğimiz bir pencere gelecektir. İlgili değerleri alana girdikten sonra ekrandaki Authorize düğmelerine basarak bilgilerin Swagger UI üzerinde saklanmasını sağlayalım.

Eğer girmiş olduğumuz bilgileri değiştirmek istiyorsak Logout düğmesine basmamız yeterlidir. Bilgilerimizin doğruluğundan emin olduktan sonra Close düğmesine basarak pencereyi kapatabiliriz.

Şimdi API’ımızın herhangi bir endpoint’ini Try it out düğmesine basarak test edelim. Girdiğimiz bilgiler doğru ise HTTP 200 durum kodunu ve endpoint’ten gelen cevabı görebileceğiz.

Uygulamaya ait örnek kodlara https://github.com/mennan/aspnetcore-swaggerui-authorization adresinden ulaşabilirsiniz.

Originally published at https://mennankose.com on August 28, 2019.

--

--