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:

  1. ç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..

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

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

    YanıtlaSil
  4. 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

    YanıtlaSil
  5. 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.

    YanıtlaSil
  6. [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..

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

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

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

    YanıtlaSil
  10. 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;
    ///////////////////////////

    YanıtlaSil
  11. 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

    YanıtlaSil