Jmeter ile Front-end Kerberos sistemlerde yük testi nasıl yapılır?

Oğuz Bor
3 min readNov 30, 2021

--

Öncelikle Kerberos’u bilmeyenler için özetlemek gerekiyor; Adını Yunan mitolojisinden alan bu servis windows 2000 server ve sonrası için default kimlik doğrulama yöntemidir. Temel amacı kimlik doğrulama ve network üzerinde yapılan geçişlerin kontrolü diyebiliriz. Bu kontrolü yaparken, client ve server arasında güvenli bir iletişimin kurulmasını sağlayan kdc (key distribution center) dan yardım alır.

Windows tabanlı tek bir api ile çalışan bu sistemin Jmeter ile yük testini gerçekleştirmek istiyorsanız aşağıdaki konfigürasyonu yapmalısınız.

Teste başlamadan önce mutlaka güncel Jmeter versiyonunu indirin ve bin/ folder altındaki system.properties dosyasını editleyerek aşağıdaki scriptleri yazmalısınız.

-Djava.security.krb5.conf=krb5.conf

-Djava.security.auth.login.config=jaas.conf

kerberos.spnego.strip_port=false

Güncel Jmeter versiyonunda krb5.conf and jaas.conf adı altında bir yapılandırma dosyası vardır ve bu dosya içeriğini dilerseniz kendi kerberos konfigürasyonunuza göre yapılandırabilirsiniz ancak amacınız sadece test etmek ise herhangi bir yapılandırmaya gerek yoktur.

Yapılandırma dan sonra ilk olarak test edeceğiniz servis url bilginizi aşağıdaki gibi test ettiğiniz de 401 alacaksınız.

Bu adımdan sonra test edeceğimiz url bilgisini tarayıcı üzerinden F12 ile developer modunu açarak isteği gönderip, servisin Request Headers’ın da yer alan değerleri kontrol ediyoruz.

Genel de yukarıdaki şekilde bir headers olduğunu göreceksiniz.

HTTP/1.1 401 Unauthorized
Content-Type: text/html
Server: Microsoft-IIS/7.5
Cookie: 2fb59c553f9ee876416137a5ed3e21ccbb217e17a-16386879862022
WWW-Authenticate: Negotiate 2fb59c553f9ee876416137a5ed3e21ccbb217e17a-163868798620222fb59c553f9ee876416137a5ed3e21ccbb217e17a63868798620222fb59c553f9ee876416137a5ed3e21ccbb217e17a-163868798620222fb59c553f9ee876416137a5ed3e21ccbb217e17a-16386879862022

X-Powered-By: ASP.NET
Date: Wed, 22 Aug 2012 17:41:09 GMT
Content-Length: 1293
Proxy-Support: Session-Based-Authentication

Bu kısımdaki işimize yarayacak olan sadece Cookie, Host ve WWW-Authenticate: Negotiate değerleridir. Bu bilgileri Thread grup altına Add>Config Element>Http Header Manager altına setliyoruz ve tek thread ile pilot testimizi tekrar run ediyoruz.

200 Ok response gördüğümüz de testimizin başarılı şekilde sonlandığını anlıyoruz.

Bazı kaynaklarda testlerinize Authorization Manager ekleyerek ilerlemenizi tavsiye ediyor ancak alt yapınızda güvenlik policy ve farklı kurallarınız var ise bu eklenti çok işe yaramayacaktır.

Eğer lokalde sadece Jmeter değilde Blazemeter yada Loadium gibi runner ürünleri kullanıyorsanız krb5.conf dosyası içerisine aşağıdaki gibi bir yapılandırma isteyecektir.

[libdefaults]
default_realm = Loadium.LOCAL
[realms]
Loadium.LOCAL = {
kdc = 172.30.40.84
admin_server = 172.30.40.84
}
[domain_realm]
172.30.40.84= Loadium.LOCAL
.172.30.40.84= Loadium.LOCAL

Kerberos + Windows Authentication testleri ile ilgili derleyebildiğim ve işe yarayan kaynakları da paylaşıyorum ancak her kurumun yapılandırması aynı olmayacaktır. Setlenen değerler ve request & response’ları kontrol etmekte fayda var.

Bu arada en önemli kısım ise setlediğiniz cookie sadece 1 kulllanıcı (1 thread) için geçerli olacaktır, Kerberos sistemler LDAP ve AD gibi kullanıcı etkileşimli sistemler ile birlikte çalıştığı için gerçek dataya ihtiyaç duyabilir bu yüzden dağıtık olarak birden fazla thread ile test koşulacaksa Cookie değerlerini .csv üzerinden verilmesi gerekir.

Corona’sız günler dilerim 😊

https://octoperf.com/blog/2018/04/24/jmeter-basic-authentication/#running-the-test

https://stackoverflow.com/questions/44072896/jmeter-authentication-error-401

http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Authorization_Manager

https://www.rfc-editor.org/rfc/rfc4559

https://en.wikipedia.org/wiki/Kerberos_(protocol)

https://www.blazemeter.com/blog/windows-authentication-apache-jmeter

https://mail-archives.apache.org/mod_mbox/jmeter-user/201711.mbox/%3C1511775893431-0.post@n5.nabble.com%3E

https://user.jmeter.apache.narkive.com/R4kyqegw/jmeter-kerberos

https://electroanswers.com/miscellaneous/how-do-i-fix-unauthorized-401/

https://tipsfordev.com/jmeter-windows-authentication-error-401

https://octoperf.com/blog/2018/04/24/jmeter-basic-authentication/#running-the-test

https://docs.microsoft.com/en-us/troubleshoot/iis/401-error-preauthentication-header

https://www.adoclib.com/blog/jmeter-script-recording-ntlm-windows-authentication-fails-401-error.html

https://knowledge.broadcom.com/external/article/139378/kerberos-authentication-performance-issu.html

--

--