Tutorial Keselamatan Perkhidmatan Web (WS) dengan Contoh SOAP

Isi kandungan:

Anonim

Apa itu Keselamatan WS?

WS Security adalah standard yang menangani keselamatan ketika data ditukar sebagai sebahagian daripada perkhidmatan Web. Ini adalah ciri utama dalam SOAP yang menjadikannya sangat popular untuk membuat perkhidmatan web.

Keselamatan adalah ciri penting dalam mana-mana aplikasi web. Oleh kerana hampir semua aplikasi web terkena internet, selalu ada kemungkinan ancaman keselamatan terhadap aplikasi web. Oleh itu, semasa mengembangkan aplikasi berasaskan web, selalu disarankan untuk memastikan bahawa aplikasi dirancang dan dikembangkan dengan mempertimbangkan keselamatan.

Dalam tutorial ini, anda akan belajar-

  • Ancaman dan Penanggulangan Keselamatan
  • Piawaian Keselamatan Perkhidmatan Web
  • Cara membina perkhidmatan web yang selamat
  • Amalan Terbaik Keselamatan Perkhidmatan Web

Ancaman dan Penanggulangan Keselamatan

Untuk memahami ancaman keselamatan yang dapat memusuhi aplikasi web, mari kita lihat senario ringkas aplikasi web dan melihat bagaimana ia berfungsi dari segi Keselamatan.

Salah satu langkah keselamatan yang tersedia untuk HTTP adalah protokol HTTPS. HTTPS adalah cara komunikasi yang selamat antara pelanggan dan pelayan melalui web. HTTPS menggunakan lapisan Secure Sockets atau SSL untuk komunikasi yang selamat. Kedua-dua pelanggan dan pelayan akan mempunyai sijil digital untuk mengidentifikasi diri mereka sebagai asli apabila sebarang komunikasi berlaku antara pelanggan dan pelayan.

Dalam komunikasi HTTPS standard antara klien dan pelayan, langkah-langkah berikut berlaku

  1. Pelanggan menghantar permintaan ke pelayan melalui sijil klien. Apabila pelayan melihat sijil klien, ia membuat catatan dalam sistem cache-nya sehingga tahu bahawa respons hanya perlu kembali kepada klien ini.
  2. Pelayan kemudian mengesahkan dirinya kepada pelanggan dengan menghantar sijilnya. Ini memastikan bahawa pelanggan berkomunikasi dengan pelayan yang betul.
  3. Semua komunikasi selepas itu antara pelanggan dan pelayan disulitkan. Ini memastikan bahawa jika ada pengguna lain yang berusaha memecahkan keselamatan dan mendapatkan data yang diperlukan, mereka tidak akan dapat membacanya kerana akan dienkripsi.

Tetapi jenis keselamatan di atas tidak akan berfungsi dalam semua keadaan. Ada masanya pelanggan dapat bercakap dengan beberapa pelayan. Contoh yang diberikan di bawah menunjukkan pelanggan bercakap dengan pangkalan data dan pelayan web pada satu masa. Dalam kes seperti itu, tidak semua maklumat dapat melalui protokol https.

Di sinilah SOAP bertindak untuk mengatasi halangan tersebut dengan menetapkan spesifikasi WS Security. Dengan spesifikasi ini, semua data berkaitan keselamatan ditentukan dalam elemen tajuk SOAP.

Elemen tajuk boleh mengandungi maklumat yang disebutkan di bawah

  1. Sekiranya mesej dalam badan SOAP telah ditandatangani dengan kunci keselamatan apa pun, kunci itu dapat ditentukan dalam elemen tajuk.
  2. Sekiranya ada unsur dalam Badan SOAP yang dienkripsi, tajuk akan mengandungi kunci enkripsi yang diperlukan sehingga mesej dapat didekripsi ketika sampai ke tujuan.

Dalam pelbagai persekitaran pelayan, teknik pengesahan SOAP di atas membantu dengan cara berikut.

  • Oleh kerana badan SOAP dienkripsi, ia hanya dapat didekripsi oleh pelayan web yang menghoskan perkhidmatan web. Ini kerana bagaimana protokol SOAP dirancang.
  • Anggaplah jika pesan tersebut dikirimkan ke pelayan pangkalan data dalam permintaan HTTP, tidak dapat didekripsi kerana pangkalan data tidak memiliki mekanisme yang tepat untuk melakukannya.
  • Hanya apabila permintaan itu benar-benar sampai ke pelayan Web sebagai protokol SOAP, ia akan dapat menguraikan mesej dan menghantar respons yang sesuai kembali kepada klien.

Kami akan melihat dalam topik seterusnya mengenai bagaimana standard Keselamatan WS dapat digunakan untuk SOAP.

Piawaian Keselamatan Perkhidmatan Web

Seperti yang dibahas di bahagian sebelumnya, standard WS-Security berkisar mengenai definisi keselamatan yang termasuk dalam Header SOAP.

Kredensial dalam tajuk SOAP diuruskan dengan 2 cara.

Pertama, ia menentukan elemen khas yang dipanggil UsernameToken. Ini digunakan untuk menyampaikan nama pengguna dan kata laluan ke perkhidmatan web.

Cara lain adalah dengan menggunakan Binary Token melalui BinarySecurityToken. Ini digunakan dalam situasi di mana teknik penyulitan seperti Kerberos atau X.509 digunakan.

Gambar rajah di bawah menunjukkan aliran bagaimana model keselamatan berfungsi di WS Security

Berikut adalah langkah-langkah yang berlaku dalam aliran kerja di atas

  1. Permintaan boleh dihantar dari klien perkhidmatan Web ke Security Token Service. Perkhidmatan ini boleh menjadi perkhidmatan web perantaraan yang secara khusus dibina untuk membekalkan nama pengguna / kata laluan atau sijil kepada perkhidmatan web SOAP yang sebenarnya.
  2. Token keselamatan kemudian diserahkan kepada pelanggan perkhidmatan Web.
  3. Pelanggan perkhidmatan Web kemudian memanggil perkhidmatan web, tetapi, kali ini, memastikan bahawa token keselamatan disertakan dalam mesej SOAP.
  4. Perkhidmatan Web kemudian memahami mesej SOAP dengan token pengesahan dan kemudian dapat menghubungi perkhidmatan Security Token untuk mengetahui sama ada token keselamatan itu sahih atau tidak.

Coretan di bawah menunjukkan format bahagian pengesahan yang merupakan sebahagian daripada dokumen WSDL. Sekarang berdasarkan coretan di bawah, mesej SOAP akan mengandungi 2 elemen tambahan, satu adalah Nama Pengguna dan yang lain adalah Kata Laluan.

Apabila Mesej SOAP benar-benar disampaikan antara klien dan pelayan, bahagian mesej yang mengandungi bukti pengguna dapat kelihatan seperti yang ditunjukkan di atas. Nama elemen wsse adalah elemen khas yang dinamakan didefinisikan untuk SOAP dan bermaksud bahawa ia mengandungi maklumat berdasarkan keselamatan.

Cara membina perkhidmatan web yang selamat

Sekarang mari kita lihat contoh keselamatan perkhidmatan web SOAP. Kami akan membina keselamatan perkhidmatan web berdasarkan contoh yang ditunjukkan sebelumnya dalam bab SOAP dan akan menambahkan lapisan keselamatan kepadanya.

Dalam contoh kami, kami akan membuat perkhidmatan web sederhana, yang akan digunakan untuk mengembalikan rentetan ke aplikasi yang memanggil perkhidmatan web. Tetapi kali ini, ketika perkhidmatan web dipanggil, tauliah perlu diberikan kepada perkhidmatan panggilan. Mari ikuti langkah-langkah berikut untuk membuat perkhidmatan web SOAP kami dan menambahkan definisi keselamatan kepadanya.

Langkah 1) Langkah pertama adalah membuat aplikasi Web Asp.Net kosong. Dari Visual Studio 2013, klik pada pilihan menu Fail-> Projek baru.

Sebaik sahaja anda mengklik pilihan Projek Baru, Visual Studio kemudian akan memberi anda kotak dialog lain untuk memilih jenis projek dan memberikan butiran projek yang diperlukan. Ini dijelaskan pada langkah seterusnya

Langkah 2) Dalam langkah ini,

  1. Pastikan anda memilih templat web C # untuk aplikasi Web ASP.NET terlebih dahulu. Projek mestilah jenis ini untuk membuat projek perkhidmatan web. Dengan memilih pilihan ini, Visual Studio kemudian akan melakukan langkah-langkah yang diperlukan untuk menambahkan fail yang diperlukan yang diperlukan oleh aplikasi berbasis web apa pun.
  2. Beri nama untuk projek anda yang dalam kes kami telah diberikan sebagai " webservice.asmx. " Kemudian pastikan untuk memberikan lokasi, di mana fail projek akan disimpan.

Setelah selesai, anda akan melihat fail projek yang dibuat dalam penjelajah penyelesaian anda di Visual Studio 2013.

Langkah 3) Dalam langkah ini,

Kami akan menambahkan fail perkhidmatan Web ke projek kami

  1. Klik kanan pertama pada fail projek seperti gambar di bawah
  1. Sebaik sahaja anda klik kanan pada fail projek, anda berpeluang memilih pilihan "Tambah-> Perkhidmatan Web (ASMX) untuk menambahkan fail perkhidmatan web. Cukup berikan nama Perkhidmatan Tutorial untuk fail nama perkhidmatan web.

Langkah di atas akan meminta kotak dialog, di mana seseorang boleh memasukkan nama fail perkhidmatan web. Jadi dalam kotak dialog di bawah, masukkan nama TutorialService sebagai nama fail.

Langkah 4) Tambahkan kod berikut ke fail asmx Perkhidmatan Tutorial anda. Coretan kod di bawah digunakan untuk menambahkan kelas khusus yang akan digunakan untuk mengubah Header SOAP ketika pesan SOAP dihasilkan. Oleh kerana sekarang kami ingin menambahkan kelayakan keselamatan ke tajuk SOAP, langkah ini diperlukan.

return "This is a Guru99 Web Service";}public class AuthHeader : SoapHeader{public string UserName;public string Password;}}

Penjelasan Kod: -

  1. Kami kini membuat kelas berasingan yang dipanggil AuthHeader yang merupakan kelas kelas SoapHeader . Bila-bila masa anda ingin mengubah apa yang akan dilalui dalam tajuk SOAP, seseorang perlu membuat kelas yang menggunakan kelas SoapHeader terbina dalam. Dengan menyesuaikan SOAPheader, kita sekarang memiliki kemampuan untuk meneruskan 'Username' dan 'Password' ketika perkhidmatan web dipanggil.
  2. Kami kemudian menentukan pemboleh ubah 'UserName' dan 'Password' yang jenis rentetan. Mereka akan digunakan untuk menyimpan nilai-nilai nama pengguna dan kata laluan yang diteruskan ke perkhidmatan web.

Langkah 5) Sebagai langkah seterusnya, kod berikut perlu ditambahkan ke fail TutorialService.asmx yang sama . Kod ini sebenarnya menentukan fungsi perkhidmatan web kami. Fungsi ini mengembalikan rentetan "Ini adalah perkhidmatan Web Guru99" kepada pelanggan. Tetapi kali ini, rentetan hanya akan dikembalikan jika aplikasi klien memberikan kelayakan ke perkhidmatan web.

public class TutorialService : System.Web.Services.WebService{public AuthHeader Credentials;[SoapHeader("Credentials")][WebMethod]public string Guru99WebService(){if (Credentials.UserName.ToLower() != "Guru99" ||Credentials.Password.ToLower() != "Guru99Password"){throw new SoapException("Unauthorized",SoapException.ClientFaultCode);}eisereturn "This is a Guru99 Web service";}

Penjelasan Kod: -

  1. Di sini, kami membuat objek kelas AuthHeader yang dibuat pada langkah sebelumnya. Objek ini akan dihantar ke Perkhidmatan Guru99Web kami di mana nama pengguna dan kata laluan dapat diperiksa dengan teliti.
  2. Atribut [SoapHeader] digunakan sekarang untuk menentukan bahawa apabila perkhidmatan Web dipanggil, ia harus memberikan nama pengguna dan kata laluan.
  3. Dalam sekatan kod ini, kami sebenarnya memeriksa nama pengguna dan kata laluan yang dilalui semasa perkhidmatan web dipanggil. Sekiranya Nama Pengguna sama dengan "Guru99" dan kata laluan sama dengan "Kata99Password" maka mesej "Ini adalah perkhidmatan Web Guru99" akan dihantar kepada pelanggan. Jika tidak, ralat akan dihantar kepada pelanggan sekiranya id dan kata laluan pengguna yang salah diteruskan.

Sekiranya kod berjaya dilaksanakan, Keluaran berikut akan ditunjukkan semasa anda menjalankan kod anda di penyemak imbas.

Pengeluaran:

Output di atas ditunjukkan semasa program dijalankan, yang bermaksud bahawa perkhidmatan Web kini tersedia. Mari klik pada pautan Penerangan Perkhidmatan.

Dari keterangan perkhidmatan, anda sekarang dapat melihat bahawa nama pengguna dan kata laluan adalah elemen dari fail WSDL. Parameter ini perlu dihantar semasa perkhidmatan web dipanggil.

Amalan Terbaik Keselamatan Perkhidmatan Web

Berikut adalah pertimbangan keselamatan yang harus diberi perhatian semasa bekerja dengan perkhidmatan Web

  1. Pengauditan dan pengurusan Log - Gunakan log aplikasi untuk mencatat semua permintaan, yang datang ke perkhidmatan web. Ini memberikan laporan terperinci mengenai siapa yang menggunakan perkhidmatan web dan dapat membantu dalam analisis Impak sekiranya berlaku pelanggaran keselamatan.

  2. Aliran panggilan ke perkhidmatan web - Cuba perhatikan aliran panggilan dalam perkhidmatan web. Secara lalai, aplikasi dapat memanggil beberapa permintaan perkhidmatan web dengan token Pengesahan yang diberikan antara perkhidmatan web ini. Semua panggilan antara perkhidmatan web perlu dipantau dan dicatat.

  3. Maklumat Sensitif - Jangan memasukkan maklumat sensitif dalam entri log anda seperti kata laluan atau nombor kad kredit atau apa-apa maklumat sulit lain. Sekiranya terdapat peristiwa yang mempunyai maklumat ini, ia mesti dibuang sebelum masuk.

  4. Jejak Operasi Perniagaan - Jejaki operasi perniagaan yang ketara. Sebagai contoh, instrumen aplikasi anda untuk merakam akses ke kaedah dan logik perniagaan yang sangat sensitif. Mari kita ambil contoh aplikasi membeli-belah dalam talian. Terdapat beberapa langkah dalam aplikasi biasa seperti memilih barang yang akan dibeli, barang yang dimasukkan ke dalam troli dan kemudian pembelian terakhir. Aliran kerja keseluruhan perniagaan ini perlu dijejaki oleh perkhidmatan web.

  5. Pengesahan yang Betul - Pengesahan adalah mekanisme yang membolehkan pelanggan dapat membuktikan identiti mereka dengan perkhidmatan web menggunakan set kelayakan tertentu yang dapat membuktikan identiti itu. Seseorang tidak boleh menyimpan bukti kelayakan pengguna, dan oleh itu, jika WS Security digunakan untuk memanggil perkhidmatan web, perlu diperhatikan bahawa perkhidmatan web tidak boleh menyimpan bukti yang dikirimkan dalam tajuk SOAP. Perkara ini harus dibuang oleh perkhidmatan web.

Ringkasan

  • SOAP menyediakan lapisan tambahan yang disebut WS Security untuk memberikan keselamatan tambahan ketika panggilan dibuat ke perkhidmatan Web.
  • Keselamatan WS boleh dipanggil dengan nama pengguna atau kata laluan yang mudah atau boleh digunakan dengan sijil Binari untuk pengesahan
  • Kita telah melihatnya di. Bersih kita dapat menyesuaikan perkhidmatan Web agar nama pengguna dan kata laluan dilewatkan sebagai bagian dari elemen tajuk SOAP.