Tīmekļa pakalpojuma (WS) drošības apmācība ar SOAP piemēru

Satura rādītājs:

Anonim

Kas ir WS drošība?

WS Security ir standarts, kas pievērš uzmanību drošībai, kad dati tiek apmainīti kā daļa no tīmekļa pakalpojuma. Šī ir galvenā SOAP iezīme, kas padara to ļoti populāru tīmekļa pakalpojumu izveidē.

Drošība ir svarīga iezīme jebkurā tīmekļa lietojumprogrammā. Tā kā gandrīz visas tīmekļa lietojumprogrammas ir pakļautas internetam, vienmēr pastāv iespēja, ka tīmekļa lietojumprogrammas apdraud drošību. Tādējādi, izstrādājot tīmekļa lietojumprogrammas, vienmēr ieteicams pārliecināties, ka lietojumprogrammas tiek izstrādātas un izstrādātas, ņemot vērā drošību.

Šajā apmācībā jūs uzzināsiet

  • Drošības draudi un pretpasākumi
  • Tīmekļa pakalpojumu drošības standarti
  • Kā izveidot drošus tīmekļa pakalpojumus
  • Tīmekļa pakalpojumu drošības paraugprakse

Drošības draudi un pretpasākumi

Lai saprastu drošības draudus, kas var būt naidīgi pret tīmekļa lietojumprogrammu, apskatīsim vienkāršu tīmekļa lietojumprogrammas scenāriju un redzēsim, kā tā darbojas drošības ziņā.

Viens no HTTP pieejamiem drošības pasākumiem ir HTTPS protokols. HTTPS ir drošs saziņas veids starp klientu un serveri tīmeklī. HTTPS drošai saziņai izmanto slāni Secure Sockets vai SSL. Gan klientam, gan serverim būs digitālais sertifikāts, lai identificētu sevi kā īstus, kad notiek kāda saziņa starp klientu un serveri.

Standarta HTTPS saziņā starp klientu un serveri tiek veiktas šādas darbības

  1. Klients nosūta pieprasījumu serverim, izmantojot klienta sertifikātu. Kad serveris redz klienta sertifikātu, tas savā kešatmiņas sistēmā veic piezīmi, lai zinātu, ka atbildei jāatgriežas tikai pie šī klienta.
  2. Pēc tam serveris autentificējas klientam, nosūtot tā sertifikātu. Tas nodrošina, ka klients sazinās ar pareizo serveri.
  3. Visa saziņa pēc tam starp klientu un serveri tiek šifrēta. Tas nodrošina, ka, ja citi lietotāji mēģina pārtraukt drošību un iegūt nepieciešamos datus, viņi nevarēs tos nolasīt, jo tie būtu šifrēti.

Bet iepriekš minētais drošības veids nedarbosies visās situācijās. Var pienākt brīdis, kad klients var sarunāties ar vairākiem serveriem. Zemāk sniegtajā piemērā redzams, kā klients vienlaikus runā gan ar datu bāzi, gan ar tīmekļa serveri. Šādos gadījumos ne visa informācija var iziet caur https protokolu.

Šeit SOAP rīkojas, lai pārvarētu šādus šķēršļus, uzstādot WS drošības specifikāciju. Izmantojot šo specifikāciju, visi ar drošību saistītie dati ir definēti SOAP galvenes elementā.

Galvenes elements var saturēt tālāk minēto informāciju

  1. Ja ziņojums SOAP pamattekstā ir parakstīts ar jebkuru drošības atslēgu, šo atslēgu var definēt galvenes elementā.
  2. Ja kāds no SOAP Body elementiem ir šifrēts, galvenē būtu nepieciešamās šifrēšanas atslēgas, lai ziņojumu varētu atšifrēt, kad tas sasniedz galamērķi.

Vairāku serveru vidēs iepriekš minētā SOAP autentifikācijas tehnika palīdz šādā veidā.

  • Tā kā SOAP pamatteksts ir šifrēts, to varēs atšifrēt tikai tīmekļa serveris, kas mitina tīmekļa pakalpojumu. Tas notiek tāpēc, ka tiek veidots SOAP protokols.
  • Pieņemsim, ja ziņojums tiek nosūtīts datu bāzes serverim HTTP pieprasījumā, to nevar atšifrēt, jo datu bāzei nav pareizu mehānismu, lai to izdarītu.
  • Tikai tad, kad pieprasījums faktiski nonāks Web serverī kā SOAP protokols, tas varēs atšifrēt ziņojumu un nosūtīt klientam atbilstošu atbildi.

Turpmākajās tēmās mēs redzēsim, kā WS drošības standartu var izmantot SOAP.

Tīmekļa pakalpojumu drošības standarti

Kā tika apspriests iepriekšējā sadaļā, WS-Security standarts ir saistīts ar drošības definīcijas iekļaušanu SOAP galvenē.

SOAP galvenes akreditācijas dati tiek pārvaldīti divos veidos.

Pirmkārt, tas nosaka īpašu elementu ar nosaukumu UserToken. To izmanto, lai nodotu lietotājvārdu un paroli tīmekļa pakalpojumam.

Otrs veids ir izmantot bināro marķieri, izmantojot BinarySecurityToken. To lieto situācijās, kad tiek izmantotas tādas šifrēšanas metodes kā Kerberos vai X.509.

Zemāk redzamā diagramma parāda, kā drošības modelis darbojas WS Security

Tālāk ir norādītas darbības, kas notiek iepriekš minētajā darbplūsmā

  1. Pieprasījumu no tīmekļa pakalpojuma klienta var nosūtīt uz drošības marķieru pakalpojumu. Šis pakalpojums var būt starpposma tīmekļa pakalpojums, kas ir īpaši izveidots, lai piegādātu lietotājvārdus / paroles vai sertifikātus faktiskajam SOAP tīmekļa pakalpojumam.
  2. Pēc tam drošības marķieris tiek nosūtīts tīmekļa pakalpojuma klientam.
  3. Pēc tam tīmekļa pakalpojuma klients izsauca tīmekļa pakalpojumu, taču šoreiz nodrošinot, ka drošības marķieris ir iegults SOAP ziņojumā.
  4. Pēc tam tīmekļa pakalpojums saprot SOAP ziņojumu ar autentifikācijas marķieri un pēc tam var sazināties ar drošības marķiera pakalpojumu, lai noskaidrotu, vai drošības marķieris ir autentisks vai nav.

Zemāk esošajā fragmentā parādīts autentifikācijas daļas formāts, kas ir daļa no WSDL dokumenta. Tagad, pamatojoties uz zemāk redzamo fragmentu, SOAP ziņojumā būs 2 papildu elementi, no kuriem viens ir Lietotājvārds un otrs Parole.

Kad SOAP ziņojums faktiski tiek nodots starp klientiem un serveri, ziņojuma daļa, kurā ir lietotāja akreditācijas dati, varētu izskatīties kā parādīts iepriekš. Wsse elementa nosaukums ir īpašs elements, kas definēts SOAP, un nozīmē, ka tas satur uz drošību balstītu informāciju.

Kā izveidot drošus tīmekļa pakalpojumus

Tagad aplūkosim SOAP tīmekļa pakalpojumu drošības piemēru. Tīmekļa pakalpojuma drošība tiks veidota pēc piemēra, kas parādīts iepriekš SOAP nodaļā, un tam pievienosim drošības slāni.

Šajā piemērā mēs izveidosim vienkāršu tīmekļa pakalpojumu, kas tiks izmantots, lai atgrieztu virkni lietojumprogrammai, kas izsauc tīmekļa pakalpojumu. Bet šoreiz, kad tiek izmantots tīmekļa pakalpojums, akreditācijas dati jāsniedz zvanīšanas dienestam. Izpildīsim tālāk norādītās darbības, lai izveidotu mūsu SOAP tīmekļa pakalpojumu un pievienotu tam drošības definīciju.

1. solis . Pirmais solis ir tukšas Asp.Net tīmekļa lietojumprogrammas izveide. Programmā Visual Studio 2013 noklikšķiniet uz izvēlnes opcijas Fails-> Jauns projekts.

Noklikšķinot uz opcijas Jauns projekts, Visual Studio jums parādīs vēl vienu dialoglodziņu, lai izvēlētos projekta veidu un sniegtu nepieciešamo informāciju par projektu. Tas ir izskaidrots nākamajā solī

2. solis) Šajā solī

  1. Pārliecinieties, vai vispirms izvēlaties C # tīmekļa veidni ASP.NET tīmekļa lietojumprogrammai. Projektam jābūt šāda veida, lai izveidotu tīmekļa pakalpojumu projektu. Izvēloties šo opciju, Visual Studio veiks nepieciešamās darbības, lai pievienotu nepieciešamos failus, kas nepieciešami jebkurai tīmekļa lietojumprogrammai.
  2. Piešķiriet savam projektam nosaukumu, kas mūsu gadījumā ir piešķirts kā " webservice.asmx ". Pēc tam pārliecinieties, ka norādāt vietu, kur tiks glabāti projekta faili.

Kad tas būs izdarīts, redzēsit projekta failu, kas izveidots jūsu risinājumu pārlūkprogrammā Visual Studio 2013.

3. solis) Šajā solī

Mēs savam projektam pievienosim tīmekļa pakalpojumu failu

  1. Vispirms ar peles labo pogu noklikšķiniet uz projekta faila, kā parādīts zemāk
  1. Kad ar peles labo pogu noklikšķiniet uz projekta faila, jums būs iespēja izvēlēties opciju "Pievienot -> Web pakalpojums (ASMX), lai pievienotu tīmekļa pakalpojuma failu. Vienkārši norādiet apmācības pakalpojuma nosaukumu tīmekļa pakalpojuma nosaukuma failam.

Veicot iepriekš minēto darbību, tiks parādīts dialoglodziņš, kurā var ievadīt tīmekļa pakalpojuma faila nosaukumu. Tātad zemāk esošajā dialoglodziņā kā faila nosaukumu ievadiet TutorialService nosaukumu.

4. solis. Pievienojiet šo kodu savam apmācības pakalpojuma asmx failam. Tālāk redzamais koda fragments tiek izmantots, lai pievienotu pielāgotu klasi, kas tiks izmantota, lai mainītu SOAP galveni, kad tiek ģenerēts SOAP ziņojums. Tā kā mēs tagad vēlamies SOAP galvenei pievienot drošības akreditācijas datus, šī darbība ir nepieciešama.

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

Koda skaidrojums: -

  1. Tagad mēs izveidojam atsevišķu klasi ar nosaukumu AuthHeader, kas ir SoapHeader klases tips . Ikreiz, kad vēlaties mainīt to, kas tiek nodots SOAP galvenē, ir jāizveido klase, kas izmanto iebūvēto .Net SoapHeader klasi. Pielāgojot SOAPheader, mums tagad ir iespēja nodot “Lietotājvārdu” un “Paroli”, kad tiek izsaukts tīmekļa pakalpojums.
  2. Pēc tam mēs definējam “UserName” un “Password” mainīgos, kuru tips ir virkne. Tie tiks izmantoti, lai saglabātu tīmekļa pakalpojumam nodotās lietotājvārda un paroles vērtības.

5. solis) Kā nākamo soli tam pašam failam TutorialService.asmx jāpievieno šāds kods . Šis kods faktiski nosaka mūsu tīmekļa pakalpojuma funkciju. Šī funkcija klientam atgriež virkni "Šis ir Guru99 tīmekļa pakalpojums". Bet šoreiz virkne tiks atgriezta tikai tad, ja klienta lietojumprogramma nodos akreditācijas datus tīmekļa pakalpojumam.

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";}

Koda skaidrojums: -

  1. Šeit mēs izveidojam AuthHeader klases objektu, kas tika izveidots iepriekšējā posmā. Šis objekts tiks nodots mūsu Guru99Webservice , kurā var rūpīgi pārbaudīt lietotājvārdu un paroli.
  2. Atribūts [SoapHeader] tagad tiek izmantots, lai norādītu, ka, izsaucot tīmekļa pakalpojumu, tam ir jānorāda lietotāja vārds un parole.
  3. Šajā koda blokā mēs faktiski pārbaudām lietotāja vārdu un paroli, kas piešķirta, kad tiek izsaukts tīmekļa pakalpojums. Ja lietotājvārds ir vienāds ar "Guru99" un parole ir vienāda ar "Guru99Password", klientam tiek nosūtīts ziņojums "Šis ir Guru99 tīmekļa pakalpojums". Ja tiek nodots nepareizs lietotāja ID un parole, klientam tiks nosūtīta kļūda.

Ja kods ir veiksmīgi izpildīts, palaižot kodu pārlūkprogrammā, tiks parādīta šāda izeja.

Izeja:

Iepriekš minētā izeja tiek parādīta, palaižot programmu, kas nozīmē, ka tīmekļa pakalpojums tagad ir pieejams. Noklikšķiniet uz saites Pakalpojuma apraksts.

Pēc pakalpojuma apraksta jūs tagad varēsit redzēt, ka lietotājvārds un parole ir WSDL faila elementi. Šie parametri ir jānosūta, kad tiek izmantota Web pakalpojums.

Tīmekļa pakalpojumu drošības paraugprakse

Tālāk ir norādīti drošības apsvērumi, kas jāņem vērā, strādājot ar tīmekļa pakalpojumiem

  1. Audits un žurnāla pārvaldība - izmantojiet lietojumprogrammu reģistrēšanu, lai reģistrētu visus pieprasījumus, kas nāk uz tīmekļa pakalpojumiem. Tādējādi tiek sniegts detalizēts ziņojums par to, kas ir izmantojis tīmekļa pakalpojumu, un tas var palīdzēt ietekmes analīzē, ja rodas kādi drošības pārkāpumi.

  2. Zvanu plūsma uz tīmekļa pakalpojumu - mēģiniet atzīmēt zvanu plūsmu tīmekļa pakalpojumos. Pēc noklusējuma lietojumprogramma var izsaukt vairākus tīmekļa pakalpojumu pieprasījumus, izmantojot autentifikācijas marķierus, kas nodoti starp šiem tīmekļa pakalpojumiem. Visi zvani starp tīmekļa pakalpojumiem ir jāuzrauga un jāreģistrē.

  3. Sensitīva informācija - žurnāla ierakstos neiekļaujiet slepenu informāciju, piemēram, paroles vai kredītkaršu numurus vai jebkādu citu konfidenciālu informāciju. Ja ir notikums, kurā ir kāda no šīm ziņām, pirms reģistrēšanās tas ir jāiznīcina.

  4. Izsekot biznesa operācijas - izsekot nozīmīgām biznesa operācijām. Piemēram, ierakstiet savu lietojumprogrammu, lai reģistrētu piekļuvi īpaši jutīgām metodēm un biznesa loģikai. Ņemsim piemēru tiešsaistes iepirkšanās lietojumprogrammai. Tipiskā lietojumprogrammā ir vairākas darbības, piemēram, iegādājamo priekšmetu izvēle, grozā ievietotās preces un pēc tam pēdējais pirkums. Tīmekļa pakalpojumam ir jāizseko visa šī biznesa darbplūsma.

  5. Pareiza autentifikācija - autentifikācija ir mehānisms, ar kura palīdzību klienti var noteikt savu identitāti ar tīmekļa pakalpojumu, izmantojot noteiktu akreditācijas datu kopumu, kas var pierādīt šo identitāti. Nekad nevajadzētu glabāt lietotāja akreditācijas datus, un tādēļ, ja WS Security tiek izmantots, lai izsauktu tīmekļa pakalpojumu, jāatzīmē, ka tīmekļa pakalpojumam nevajadzētu saglabāt akreditācijas datus, kas tiek nosūtīti SOAP galvenē. Tīmekļa pakalpojums tos jāizmet.

Kopsavilkums

  • SOAP nodrošina papildu slāni ar nosaukumu WS Security, lai nodrošinātu papildu drošību, veicot zvanus uz tīmekļa pakalpojumiem.
  • WS Security var izsaukt, izmantojot vienkāršu lietotājvārdu vai paroli, vai arī to var izmantot kopā ar bināro sertifikātu autentifikācijai
  • Mēs esam redzējuši, ka .Net mēs varam pielāgot tīmekļa pakalpojumu, lai lietotāja vārds un parole tiktu nodoti kā daļa no SOAP galvenes elementa.