27 Şubat 2012 Pazartesi

T.C. Kimlik Numarası Doğrulama - XML Web Servisi

Bu yazımızda, C# ile XML Web Servislerini kullanarak http://tckimlik.nvi.gov.tr adresinde hizmete sunulan vatandaşlık numarası doğrulama hizmetini ele alan bir örnek proje geliştireceğiz.

“TCKimlikDogrulama” adında bir Windows Forms projesi oluşturarak başlayalım.

image

Proje açıldıktan sonra, doğrulama için web servisine gönderilecek olan bilgileri kullanıcıdan almak üzere aşağıdaki gibi bir form tasarımı yapalım.

image

Şimdi sıra geldi servis referansını projemize eklemeye…

T.C. İçişleri Bakanlığı Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü tarafından kullanıma sunulan web servisinin adresini aşağıda bulabilirsiniz.
https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx

DİKKAT: KPS Servisi yalnızca SSL (https adresi) üzerinden hizmet veriyor.

Bu servisi proje içerisinde kullanabilmek için öncelikle Solution Explorer içerisinde yer alan References alanına sağ tıklayalım ve Add Service Reference… seçeneğini seçelim.

image

Açılan ekranda Address bölümüne servisin WSDL dosyasının adresini(https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL) verelim, Namespace bilgisi olarak “Kimlik” kullanalım ve GO butonuna tıklayıp, servisin Services bölümünde listelenmesini sağlayalım.

image

Bu işlemlerin ardından OK butonuna tıklayarak servis referansının projeye eklenme sürecini tamamlayalım. Şimdi de, servise çağrı yapıp sonucu alacak olan kodları projeye ekleyelim. Bunun için btnDogrula isimli buton kontrolünün Click olayına aşağıdaki metodu bağlayalım.

image

Bu son işlemin ardından artık projeyi derleyip kullanmaya başlayabiliriz.

ÖNEMLİ NOT: Servise doğrulama için gönderilecek ad ve soyad bilgileri tamamen büyük harflerle yazılmış olarak gönderilmelidir.

T.C. Kimlik No doğrulama algoritması için buradan bilgi alabilirsiniz.

11 yorum:

Adsız dedi ki...

çok teşekkürler hocam..
keşke web servisleri win formlardan kullanmak ile ilgili bir yazı dizisi hazırlasanız özellikle kamu sektöründe sağlık bakanlığı vb. yerlerde hep servisler var..

Ercan Bozkurt dedi ki...

Eğer bahsettiğiniz servisler halka açık servisler ise hazırlayabilirim birşeyler.

Adsız dedi ki...

Blogunuzdaki paylaşımlar çok önemli ve ilginç grand ofis mobilyaları olarak uzun süredir,sitenizin takipçisiyiz.

Unknown dedi ki...

merhaba Ercan Hocam,
bir projemde, web sitemde tc kimlik sorgulaması yapıp,dogrulama sağlandıktan sonra isim,soyadı,d.tarihi v.b gibi bilgileri veritabanıma nasıl ekleyebilirim.nereden destek alırım

Administrator dedi ki...

Merhaba, teknoloji halen kullanıldığı için konu güncelliğini yitirmiyor.

Yukarıdaki yorumlarda da belirtildiği gibi Sağlık Bakanlığı ve diğer bakanlıklarda ilgili web servislerinin kullanımı gittikçe artmaya başladı. Eğer çeşitli web servislerine ara ara değinirseniz memnun oluruz.

Örnek: http://mhrsws.sagliknet.saglik.gov.tr/PRSC_MHRS_WS?wsdl

bu adresteki web servis üzerinden bir class oluşturup listeleme ve sorgu gönderme tekniklerini anlatırsanız seviniriz.

Selamlar.

n.a dedi ki...

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula", RequestNamespace="http://tckimlik.nvi.gov.tr/WS", ResponseNamespace="http://tckimlik.nvi.gov.tr/WS", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public bool TCKimlikNoDogrula(long TCKimlikNo, string Ad, string Soyad, int DogumYili) {
object[] results = this.Invoke("TCKimlikNoDogrula", new object[] {
TCKimlikNo,
Ad,
Soyad,
DogumYili});
return ((bool)(results[0]));
}

///
public System.IAsyncResult BeginTCKimlikNoDogrula(long TCKimlikNo, string Ad, string Soyad, int DogumYili, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("TCKimlikNoDogrula", new object[] {
TCKimlikNo,
Ad,
Soyad,
DogumYili}, callback, asyncState);
}

///
public bool EndTCKimlikNoDogrula(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));









bu kodlara göre düzenleme yapamadım yardımcı olursadnız..

Unknown dedi ki...

'tckimlik.nvi.gov.tr' yetkisiyle SSL/TLS için güvenli kanal kurulamadı. hatası alıyoruz bunu nasıl çözebiliriz. ?

Unknown dedi ki...

Recep Bey bu sorun bende de mevcut. Nasıl düzeltileceği ile ilgili bir bilgiye ulaşabildiniz mi acaba??

Unknown dedi ki...

Yılmaz Bey maalesef çözüm sağlayamadım. Tahminimce sertifika hatası olduğundan bilgisayara muhtemelen NVİ.GOV.TR sertifikasını gömmek gerekiyor.

Unknown dedi ki...

Merhaba
aynı sorunu bende yaşadım. Framework eski olduğu için,
doğrulama yapmadan önce Tls12 aktif etmek için aşağıdaki kodu eklemeniz gerekli

///////////////////////////
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
///////////////////////////

Unknown dedi ki...

There was an error downloading 'https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL/_vti_bin/ListData.svc/$metadata'.
The request was aborted: Could not create SSL/TLS secure channel.
Metadata contains a reference that cannot be resolved: 'https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL'.
Could not establish secure channel for SSL/TLS with authority 'tckimlik.nvi.gov.tr'.
The request was aborted: Could not create SSL/TLS secure channel.
If the service is defined in the current solution, try building the solution and adding the service reference again.


hatası alıyorum