.Net Core - Mernis (TC Kimlik) Doğrulama Örnek Uygulama (Blazor)

Bu yazımda Mernis web servisleri arasında bulunan TC Kimlik Doğrulamasının .NET Core alt yapısında kullanılmasını inceleyeceğiz. 

Mernis, Merkezi Nüfus İdaresi Sistemi anlamına gelir. Buradan sağlanan web servislerini C#,Java gibi farklı programlama dilleri ile entegre edebiliriz. 

C# dili ile entegrasyon sırasında .NET Core alt yapısını kullanarak Blazor projesi oluşturup bir form tasarlayacağız. Bu form üzerinden gönderilen verileri servisteki TCKimlikDogrula metoduna göndererek kullanıcıya ait TC kimlik numarasının doğrulanabilirliği test edilecektir.

Öncelikle aşağıdaki adımları sırası ile takip ederek Blazor projesini oluşturalım. Blazor Server App seçtikten sonra .NET 5.0 framework ile projemi ayarladım.




Proje oluşturulduktan sonra, solution altındaki Connected Services sekmesine sağ tıklayıp Add Connected Service diyoruz.


Tanımlayacağımız servis OtherServices -> Microsoft WCF Web Service Reference Provider kısmı için uygundur. Bu kısım seçilir.


TC Kimlik doğrulama servisinin linkini URI alanına girip Go butonuna tıkladıktan sonra aşağıdaki gibi servis ve metotları görünecektir. Bizim kullanacağımız metot, TCKimlikNoDogrula olacaktır. Namespace alanına istediğimiz ismi tanımlayabiliriz.


Mernis'e ait diğer servislerin linki: https://tckimlik.nvi.gov.tr/Home 


Tanımlama sonrası aşağıdaki gibi görünmesi beklenir. 


İstekte kullanacağımız TCKimlikNoDogrulaAsync metodu Ad, Soyad, TC Kimlik No ve Doğum Yılı parametrelerini alacaktır. Gelen parametreler servisin kendi metoduna TCKimlikNoDogrulaRequestBody nesnesindeki propertylere atanır. Bu kod Reference.cs dosyasında bulunur. 


Servisin tanımlanması bittikten sonra Blazor tarafından servise istek gönderme işlemini kodlayalım. 
Form göndereceğimiz için bir tane Kullanici.cs model sınıfı oluşturduk. Servise göndereceğimiz parametreler Ad, Soyad, TC Kimlik No ve Doğum Yılı olmalıdır.

MernisService.cs ile formdan gönderilen parametreleri servis metodumuza gönderiyoruz. TC Kimlik No değeri serviste long olarak aldığı için long parse işlemine tabi tuttuk. Doğum yılı ise tarihin yıl kısmını alarak gönderdik. Doğrulamanın sonucunu servisin sonuç nesnesi olan TCKimlikDogrulaResponse nesnesindeki TCKimlikNoDogrulaResult değerinden okuyacağız.


Startup.cs dosyasında ise MernisService sınıfını AddSingleton ile inject ettik.


Oluşturduğumuz form aşağıdaki gibidir. Blazorda C# ile HTML/JS/CSS kodları bir arada olabiliyor ve butonun/formun eventleri ile C# metodu çağırabiliyoruz. Aşağıdaki formu submit ettiğimizde @code etiketindeki Dogrula C# metodu çağrılır. Form verileri MernisService.cs deki TcKimlikDogrula metoduna gönderiliyor. 

@bind form-tag-helperda, Model kısmına tanımladığımız kullanıcı değişkeninin propertylerini bind ettik. (MVC'deki Model Binding mantığı) @code kısmındaki Dogrula metodunda Kullanici tipindeki kullanici nesnesi ile aynı nesnedir. 



Submit sonucu bilgileri kullanici nesnesine bind edilmesinin görüntüsü aşağıdaki gibidir. 


TC Doğrulanamazsa aşağıdaki gibi doğrulanamadı uyarısını verecektir. Tam tersi durumda başarılı olduğu uyarısını verecektir. TCKimlikNoDogrulaResult değeri boolean olduğu için bu sonucu göstereceğimiz mesajda kullanıyoruz. 



Projenin Github linkine tıklayarak projeyi inceleyebilirsiniz.

Yorumlar