Veebiteenuse (WS) turvalisuse õpetus SOAP-i näitega

Lang L: none (table-of-contents):

Anonim

Mis on WS Security?

WS Security on standard, mis tegeleb turvalisusega, kui andmeid vahetatakse veebiteenuse osana. See on SOAPi põhifunktsioon, mis muudab selle veebiteenuste loomiseks väga populaarseks.

Turvalisus on mis tahes veebirakenduse oluline funktsioon. Kuna peaaegu kõik veebirakendused on Internetis, on veebirakendustele alati oht turvaohule. Seega on veebipõhiste rakenduste väljatöötamisel soovitatav alati tagada, et rakendus oleks loodud ja arendatud turvalisust silmas pidades.

Selles õpetuses saate teada

  • Julgeolekuohud ja vastumeetmed
  • Veebiteenuse turvanormid
  • Kuidas luua turvalisi veebiteenuseid
  • Veebiteenuse turvalisuse parimad tavad

Julgeolekuohud ja vastumeetmed

Veebirakenduse vastu vaenulike turvaohtude mõistmiseks vaatame veebirakenduse lihtsat stsenaariumi ja vaatame, kuidas see turvalisuse mõttes töötab.

Üks HTTP jaoks saadaolevatest turvameetmetest on HTTPS-protokoll. HTTPS on turvaline viis suhelda kliendi ja serveri vahel veebi kaudu. HTTPS kasutab turvaliseks suhtlemiseks kihti Secure Sockets või SSL-i. Nii kliendil kui ka serveril on digitaalne sertifikaat, et identifitseerida end ehtsana, kui kliendi ja serveri vahel tekib igasugune side.

Kliendi ja serveri vahelises standardses HTTPS-suhtluses toimuvad järgmised sammud

  1. Klient saadab kliendile sertifikaadi kaudu päringu serverile. Kui server näeb kliendi sertifikaati, teeb ta oma vahemälusüsteemi märkuse, et ta teaks, et vastus peaks selle kliendi juurde tagasi minema.
  2. Seejärel autentib server end kliendile, saates selle sertifikaadi. See tagab, et klient suhtleb õige serveriga.
  3. Kogu järgnev kliendi ja serveri vaheline suhtlus on krüptitud. See tagab, et kui mõni teine ​​kasutaja üritab turvalisust rikkuda ja vajalikke andmeid saada, ei saaks nad neid lugeda, kuna need on krüptitud.

Kuid ülaltoodud turvalisuse tüüp ei tööta kõigis olukordades. Võib tulla aeg, mil klient saab rääkida mitme serveriga. Allpool toodud näide näitab, kuidas klient räägib korraga nii andmebaasi kui veebiserveriga. Sellistel juhtudel ei saa kogu teave läbida https-protokolli.

Siin tegutseb SOAP selliste takistuste ületamiseks WS Security spetsifikatsiooni abil. Selle spetsifikatsiooniga on kõik turvalisusega seotud andmed määratletud SOAP-päise elemendis.

Päiseelement võib sisaldada allpool mainitud teavet

  1. Kui SOAP-kehas olevale sõnumile on alla kirjutatud mis tahes turvavõti, saab selle võtme päise elemendis määratleda.
  2. Kui mõni SOAP-keha element on krüptitud, sisaldab päis vajalikke krüptovõtmeid, nii et sõnumit saab sihtkohta jõudes dekrüpteerida.

Mitmes serveri keskkonnas aitab ülaltoodud SOAP-i autentimise tehnika järgmist.

  • Kuna SOAP-keha on krüpteeritud, saab seda dešifreerida ainult veebiserver, mis veebiteenust majutab. Selle põhjuseks on SOAP-protokolli kujundamine.
  • Oletame, et kui sõnum edastatakse HTTP-päringus andmebaasiserverile, ei saa seda dešifreerida, kuna andmebaasil pole selleks õigeid mehhanisme.
  • Alles siis, kui päring jõuab SOAP-protokollina veebiserverisse, saab see sõnumi dešifreerida ja kliendile vastava vastuse saata.

Järgmistes teemades näeme, kuidas WS Security standardit saab SOAP-i jaoks kasutada.

Veebiteenuse turvanormid

Nagu eelmises jaotises räägiti, pöörleb WS-Security standard selle ümber, et turva määratlus sisaldaks SOAP-päist.

SOAP-päise mandaate hallatakse kahel viisil.

Esiteks määratleb see spetsiaalse elemendi nimega UsernameToken. Seda kasutatakse kasutajanime ja parooli edastamiseks veebiteenusele.

Teine võimalus on kasutada binaarset märki BinarySecurityToken'i kaudu. Seda kasutatakse olukordades, kus kasutatakse selliseid krüptimistehnikaid nagu Kerberos või X.509.

Alloleval diagrammil on näha, kuidas turvamudel WS Security-s töötab

Allpool on toodud ülaltoodud töövoo toimingud

  1. Veebiteenuse kliendilt saab päringu saata Security Token Service'ile. See teenus võib olla vahepealne veebiteenus, mis on loodud spetsiaalselt kasutajanimede / paroolide või sertifikaatide edastamiseks tegelikule SOAP-i veebiteenusele.
  2. Seejärel edastatakse turbetunnus veebiteenuse kliendile.
  3. Veebiteenuse klient helistas seejärel veebiteenusele, kuid seekord tagades, et turvakood on SOAP-i sõnumisse manustatud.
  4. Veebiteenus saab seejärel aru SOAP-sõnumist koos autentimismärgiga ja saab seejärel ühendust võtta turvaturni teenusega, et näha, kas turbemärk on autentne või mitte.

Allolev koodilõik näitab WSDL-i dokumendi osa autentimisosa vormingut. Nüüd põhineb allpool oleval koodilõigul SOAP-teade 2 täiendavat elementi, millest üks on kasutajanimi ja teine ​​parool.

Kui klientide ja serveri vahel on SOAP-teade tegelikult edastatud, võib kasutaja mandaate sisaldav sõnumi osa välja näha nagu ülal näidatud. Elementi wsse nimi on SOAP-i jaoks määratletud spetsiaalne element ja see tähendab, et see sisaldab turbepõhist teavet.

Kuidas luua turvalisi veebiteenuseid

Nüüd vaatame SOAP-i veebiteenuse turvalisuse näidet. Ehitame veebiteenuse turvalisuse varem SOAP-peatükis näidatud näite põhjal ja lisame sellele turbekihi.

Meie näites loome lihtsa veebiteenuse, mida kasutatakse stringi tagastamiseks rakendusele, mis helistab veebiteenusele. Kuid seekord tuleb veebiteenuse kasutamisel volitused esitada helistamisteenusele. Järgime alltoodud samme meie SOAP-i veebiteenuse loomiseks ja lisage sellele turva definitsioon.

Samm 1) Esimene samm on luua tühi Asp.Net veebirakendus. Klõpsake Visual Studio 2013-s menüüvalikut Fail-> Uus projekt.

Kui klõpsate suvandil Uus projekt, annab Visual Studio teile uue dialoogiboksi projekti tüübi valimiseks ja projekti vajalike üksikasjade esitamiseks. Seda selgitatakse järgmises etapis

2. samm. Selles etapis

  1. Veenduge, et valisite kõigepealt CP veebimalli ASP.NET-i veebirakenduse jaoks. Veebiteenuste projekti loomiseks peab projekt olema seda tüüpi. Selle suvandi valimisel teeb Visual Studio vajalikud toimingud kõigi veebipõhiste rakenduste jaoks nõutavate failide lisamiseks.
  2. Pange oma projektile nimi, mis on antud juhul " webservice.asmx ". Seejärel andke kindlasti asukoht, kuhu projekti failid salvestatakse.

Kui olete valmis, näete Visual Studio 2013 oma lahenduste avastajaga loodud projektifaili.

3. samm. Selles etapis

Lisame oma projekti veebiteenuse faili

  1. Kõigepealt paremklõpsake projektifailil, nagu allpool näidatud
  1. Kui paremklõpsate projektifailil, on teil võimalus valida veebiteenuse faili lisamiseks suvand "Lisa-> Veebiteenus (ASMX). Sisestage lihtsalt veebiteenuse nimefaili jaoks Juhendamisteenuse nimi.

Ülaltoodud samm palub dialoogiboksi, kus saab sisestada veebiteenuse faili nime. Nii sisestage allpool dialoogiboksi faili nimeks TutorialService nimi.

Samm 4) Lisage oma juhendamisteenuse asmx-faili järgmine kood. Allolevat koodijuppi kasutatakse kohandatud klassi lisamiseks, mida kasutatakse SOAP-päise muutmiseks, kui SOAP-teade luuakse. Kuna tahame nüüd SOAP-päisesse lisada turvakrediidid, on see samm vajalik.

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

Koodi selgitus: -

  1. Loome nüüd eraldi klassi AuthHeader, mis on klassi SoapHeader . Kui soovite muuta seda, mida SOAP-päises edastatakse, tuleb luua klass, mis kasutab sisseehitatud klassi SoapHeader .Net. SOAPheaderi kohandamisel on meil nüüd võimalus edastada "kasutajanimi" ja "parool", kui veebiteenust kutsutakse.
  2. Seejärel määratleme muutujad "Kasutajanimi" ja "Parool", mis on tüüpi stringid. Neid kasutatakse veebiteenusele edastatud kasutajanime ja parooli väärtuste hoidmiseks.

Samm 5) Järgmise sammuna tuleb samasse faili TutorialService.asmx lisada järgmine kood . See kood määratleb tegelikult meie veebiteenuse funktsiooni. See funktsioon tagastab kliendile stringi "See on Guru99 veebiteenus". Kuid seekord tagastatakse string ainult siis, kui kliendirakendus edastab volitused veebiteenusele.

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

Koodi selgitus: -

  1. Siin loome AuthHeaderi klassi objekti, mis loodi varasemas etapis. See objekt edastatakse meie Guru99Webservice'ile , kus saab kasutajanime ja parooli hoolikalt uurida.
  2. Atribuuti [SoapHeader] kasutatakse nüüd selleks, et täpsustada, et kui veebiteenust kutsutakse, peab sellel olema kasutajanimi ja parool.
  3. Selles koodiplokis uurime tegelikult veebiteenuse kutsumisel edastatud kasutajanime ja parooli. Kui kasutajanimi on võrdne väärtusega "Guru99" ja parool on võrdne väärtusega "Guru99Password", edastatakse kliendile teade "See on Guru99 veebiteenus". Vale kasutaja ID ja parooli edastamisel saadetakse kliendile viga.

Kui kood on edukalt käivitatud, kuvatakse brauseris koodi käivitamisel järgmine väljund.

Väljund:

Eespool nimetatud väljund kuvatakse programmi käivitamisel, mis tähendab, et veebiteenus on nüüd saadaval. Klõpsame lingil Teenuse kirjeldus.

Teenuse kirjeldusest näete nüüd, et kasutajanimi ja parool on WSDL-faili elemendid. Need parameetrid tuleb saata veebiteenuse käivitamisel.

Veebiteenuse turvalisuse parimad tavad

Järgnevalt on toodud turvalisuse kaalutlused, mida tuleks veebiteenustega töötamisel arvesse võtta

  1. Auditeerimine ja logihaldus - rakenduste logimise abil saate logida kõik veebiteenustesse saabuvad taotlused. See annab üksikasjaliku aruande selle kohta, kes on veebiteenust kasutanud, ja võib turvarikkumise ilmnemisel aidata mõjuanalüüsil.

  2. Veebiteenuse kõnede voog - proovige märkida veebiteenuste kõnede voog. Vaikimisi võib rakendus helistada mitmele veebiteenuse taotlusele koos nende veebiteenuste vahel edastatud autentimismärkidega. Kõiki veebiteenuste vahelisi kõnesid tuleb jälgida ja logida.

  3. Tundlik teave - ärge lisage oma logikirjetesse tundlikku teavet, näiteks paroole või krediitkaardinumbreid ega muud konfidentsiaalset teavet. Kui on mõni sündmus, millel on seda teavet, tuleb see enne logimist kõrvale jätta.

  4. Jälgige äritoiminguid - jälgige olulisi äritoiminguid. Näiteks instrumenteerige oma rakendus, et salvestada juurdepääs eriti tundlikele meetoditele ja äriloogikale. Võtame näite veebipõhisest osturakendusest. Tüüpilises rakenduses on mitu sammu, näiteks ostetavate kaupade valimine, ostukorvi laaditud üksused ja seejärel viimane ost. Veebiteenus peab jälgima kogu seda ettevõtte töövoogu.

  5. Nõuetekohane autentimine - autentimine on mehhanism, mille abil kliendid saavad oma identiteedi tõestamiseks veebiteenusega oma identiteedi tuvastada. Kunagi ei tohiks kasutaja mandaate salvestada ja seega, kui veebiteenuse helistamiseks kasutatakse WS Security-d, tuleb märkida, et veebiteenus ei tohiks salvestada mandaate, mis saadetakse SOAP-i päisesse. Veebiteenus peaks need ära viskama.

Kokkuvõte

  • SOAP pakub täiendavat kihti nimega WS Security, et pakkuda täiendavat turvalisust, kui helistatakse veebiteenustele.
  • WS-i turvalisust saab kutsuda lihtsa kasutajanime või parooliga või kasutada autentimiseks binaarsertifikaatidega
  • Oleme näinud, et .Netis saame veebiteenust kohandada nii, et kasutajanimi ja parool edastatakse SOAP-päise elemendi osana.