🔐 Kimlik Doğrulama

Kimlik Doğrulama: API kimlik doğrulaması, bir banka kasasının çift anahtarlı kilitlemesine benzer: kasayı açmak için hem banka yöneticisinin anahtarı (server secret) hem senin an

API kimlik doğrulaması, bir banka kasasının çift anahtarlı kilitlemesine benzer: kasayı açmak için hem banka yöneticisinin anahtarı (server secret) hem senin anahtarın (token/API key) aynı anda dönmek zorundadır — biri olmadan diğeri işe yaramaz. Peki Postman'da zaten "Authorization" sekmesine token yazıyorum; neden REST Assured'da ayrıca `.auth().bearer(token)` yazmak gerekiyor? Çünkü Postman'ın auth ayarı o koleksiyona özeldir ve CI/CD'ye entegre değildir; REST Assured'da token BaseTest'in `@BeforeAll` metodunda çekilen environment variable'dan gelir ve pipeline her tetiklendiğinde güvenli şekilde rotasyona girer. Java'da Spring Security'nin `@WithMockUser` annotasyonuyla test ederken gerçek HTTP katmanını atlarsın — REST Assured'daki `.auth().oauth2(token)` ise gerçek HTTP katmanında token'ı gönderir ve API'nin gerçek auth middleware'ini test eder. QA açısından kritik risk: token'ı hardcode ederek test yazarsan, token expire olduğunda tüm test suite kırılır; en kötüsü CI pipeline saat 03:00'te çöker ve sabah ekip panikler. `System.getenv("API_TOKEN")` bu riski tamamen ortadan kaldırır.

Basic Authentication

Micro Lab: REST Assured assertion yazma

TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.

preemptive() Olmadan İlk İstek Neden Fazladan Bir Round-Trip Yapar?

.auth().basic("admin"…

`.auth().basic("admin", "secret123")` "username:password" metnini Base64'e ÇEVİRİR ve `Authorization: Basic ...` header'ı olarak EKLER — bu şifreleme DEĞİL, sadece kodlamadır.

NORMAL .basic() ÖNCE auth'suz bir istek…

NORMAL `.basic()` ÖNCE auth'suz bir istek gönderir, sunucu 401 döner, SONRA auth ile yeniden dener — bu 2 round-trip DEMEKTIR.

.preemptive() bu bekleme oyununu ATLAR…

`.preemptive()` bu bekleme oyununu ATLAR — auth header'ı DAHA İLK istekte gönderir, sunucu asla 401 döndürmez.

Sonuç: her testte 1 EKSİK HTTP…

Sonuç: her testte 1 EKSİK HTTP round-trip = daha hızlı test suite VE sunucu loglarında gereksiz 401 gürültüsü OLMAZ.

Bearer Token — Login → Token Al → Kullan