Backend

Sistemler Arası Güvenli XML Taşıma İşlemini Nasıl Yapabiliriz? – XML Signing (XML İmzalama)

Bu yazımda size daha önceki Elektronik/Sayısal İmzaların Özellikleri ve Güvenilirlikleri yazımda söylediğim dijital imza demosunu yapacağım. Bir sonraki imza yazımda harici bir sertifika kullanarak 3 farklı imzalama stilinden bahsedeceğim. Ancak bu yazımda hızlıca XML imzalama işlemine aşina olunması için basit bir demo yapacağım. Fazla uzatmadan koda(C#) geçelim 🙂

Adım 1: demo.xml dosyasının oluşturulması

Adım 2: RSA Anahtar oluşturma

RSA ile anahtar üreteceğimiz adım burası. RSA yöntemi daha önceki yazımda da bahsettiğim gibi açık anahtar algoritmaları uygulamalarında kullanılmaktadır.

Burada System.Security.Cryptography referansından CspParameters sınıfını kullanacağız. Bu sınıf sayesinde anahtar oluşturabileceğiz.

Oluşan anahtarımızın çıktısına bakabiliriz. Ya da anahtarı bir yere kaydedebilirsiniz.

Adım 3: demo.xml dosyamızı okuyalım

demo.xml dosyamızı içeri alalım. Uzantıyı kendi bilgisayarınıza göre ayarlamanız gerekmektedir.

Adım 4: İmzanın basılacağı XML dökümanını oluşturalım.

SignedXml classından bir nesne olusturuyoruz. Bu class System.Security.Cryptography.Xml referansıyla birlikte kullanılabilir. Anahtara ise daha önce oluşturduğumuz rsa key’ini atıyoruz.

Adım 5: Referans Oluşturma

İmzalanacak XML dökümanının hangi bölümünün imzalanacağını burada belirtiyoruz uri=”” ise tüm xml imzalanacak demektir. Ayrıca referans ile imzanın hangi stilde olduğuna(3 çeşit : Enveloped, Enveloping, Detached) karar veririz. Bu bölümü bir sonraki yazımda daha net anlatacağım.

Adım 6: İmza stilimizi setleme

Bu yazıda enveloped(zarflanmış) türünde imzalama kullanacağız. Yani xml dökümanında bizim imzalanmamış xml bloklarının dışında yeni bir xml atacağız. Append direk altına olacak gibi düşünebilirsiniz. Bu yöntemi burada setliyoruz. XmlDsigEnvelopedSignatureTransform classı enveloped türünde imzalama işlemi yapacaktır. Enveloped türü seçildikten sonra referans nesnemize bunu transform ediyoruz. Not: Daha sonra imzalanmıs xml çıktısında transform alanını buradan alacaktır.

Adım 7: Oluşturduğumuz referansı imzalı olacak XML’imize atama

5 ve 6. adımlarda yaptığımız işlemleri imzalı olacak “imzalıXml” nesnesine atarız. Artık imza xml dosyası oluşturulacak duruma geldi.

Adım 8 : İmza Oluşturma 

Yukarıda yaptığımız adımlardan sonra imzamızı oluşturabiliriz.

Adım 9: Oluşturduğumuz imza XML’ini demo.xml dosyasına append etme 

XMLElement class’ı kullanarak 3. adımda içeri aldığımız demo.xml dökümanına child olarak ekleyerek kaydederiz.

Adım 10: İmzalanmış XML 

Yorum Yap

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Giriş Yap/Kayıt Ol