Vadnica za varnost spletnih storitev (WS) s primerom SOAP

Kazalo:

Anonim

Kaj je WS Security?

WS Security je standard, ki naslavlja varnost pri izmenjavi podatkov kot del spletne storitve, kar je ključna lastnost SOAP-a, zaradi česar je zelo priljubljena za ustvarjanje spletnih storitev.

Varnost je pomembna lastnost katere koli spletne aplikacije. Ker so skoraj vse spletne aplikacije izpostavljene internetu, vedno obstaja verjetnost, da bodo spletne aplikacije ogrožene. Zato je pri razvoju spletnih aplikacij vedno priporočljivo zagotoviti, da je aplikacija zasnovana in razvita z upoštevanjem varnosti.

V tej vadnici boste izvedeli-

  • Varnostne grožnje in protiukrepi
  • Varnostni standardi spletnih storitev
  • Kako zgraditi varne spletne storitve
  • Najboljše prakse glede varnosti spletnih storitev

Varnostne grožnje in protiukrepi

Da bi razumeli varnostne grožnje, ki so lahko sovražne do spletne aplikacije, si oglejmo preprost scenarij spletne aplikacije in preverimo, kako deluje v smislu varnosti.

Eden od varnostnih ukrepov, ki so na voljo za HTTP, je protokol HTTPS. HTTPS je varen način komunikacije med odjemalcem in strežnikom prek spleta. HTTPS za varno komunikacijo uporablja plast Secure Sockets ali SSL. Tako odjemalec kot strežnik bosta imela digitalno potrdilo, s katerim se bosta prepoznala kot pristna, kadar pride do kakršne koli komunikacije med odjemalcem in strežnikom.

V standardni komunikaciji HTTPS med odjemalcem in strežnikom potekajo naslednji koraki

  1. Naročnik prek strežnika potrdila pošlje zahtevo strežniku. Ko strežnik vidi potrdilo odjemalca, v sistem predpomnilnika zabeleži, da ve, da se mora odziv vrniti samo temu odjemalcu.
  2. Nato se strežnik odjemalcu potrdi s potrditvijo. To zagotavlja, da odjemalec komunicira s pravim strežnikom.
  3. Vsa komunikacija med odjemalcem in strežnikom je nato šifrirana. To zagotavlja, da če bi kateri koli drug uporabnik poskušal razbiti varnost in dobiti zahtevane podatke, jih ne bi mogel prebrati, ker bi bili šifrirani.

Toda zgornja vrsta varovanja ne bo delovala v vseh situacijah. Lahko pride čas, ko se odjemalec lahko pogovarja z več strežniki. Spodnji primer prikazuje odjemalca, ki se hkrati pogovarja z bazo podatkov in spletnim strežnikom. V takih primerih skozi protokol https ne morejo preiti vse informacije.

Tu nastopi SOAP za premagovanje takšnih ovir z vzpostavitvijo varnostne specifikacije WS. S to specifikacijo so vsi podatki, povezani z varnostjo, definirani v elementu glave SOAP.

Element glave lahko vsebuje spodaj omenjene informacije

  1. Če je bilo sporočilo znotraj telesa SOAP podpisano s katerim koli varnostnim ključem, ga lahko določite v elementu glave.
  2. Če je kateri koli element v telesu SOAP šifriran, bi glava vsebovala potrebne ključe za šifriranje, tako da je mogoče sporočilo dešifrirati, ko pride na cilj.

V več strežniških okoljih zgornja tehnika preverjanja pristnosti SOAP pomaga na naslednji način.

  • Ker je telo SOAP šifrirano, ga bo lahko šifriral le spletni strežnik, ki gosti spletno storitev. To je zato, ker je zasnovan protokol SOAP.
  • Denimo, da če se sporočilo posreduje strežniku baze podatkov v zahtevi HTTP, ga ni mogoče dešifrirati, ker baza podatkov nima ustreznih mehanizmov za to.
  • Šele ko zahteva dejansko prispe na spletni strežnik kot protokol SOAP, bo lahko razvozlal sporočilo in poslal ustrezen odgovor stranki.

V naslednjih temah bomo videli, kako je mogoče varnostni standard WS uporabiti za SOAP.

Varnostni standardi spletnih storitev

Kot smo že omenili v prejšnjem poglavju, se standard WS-Security vrti okoli vključitve definicije varnosti v glavo SOAP.

Poverilnice v glavi SOAP se upravljajo na dva načina.

Najprej opredeli poseben element z imenom UsernameToken. To se uporablja za posredovanje uporabniškega imena in gesla spletni storitvi.

Drugi način je uporaba binarnega žetona prek BinarySecurityToken. To se uporablja v situacijah, v katerih se uporabljajo tehnike šifriranja, kot sta Kerberos ali X.509.

Spodnji diagram prikazuje tok delovanja varnostnega modela v WS Security

Spodaj so navedeni koraki v zgornjem delovnem toku

  1. Zahtevo lahko odjemalcu spletne storitve pošljete storitvi Security Token Service. Ta storitev je lahko vmesna spletna storitev, ki je posebej zasnovana za dobavo uporabniških imen / gesel ali potrdil dejanski spletni storitvi SOAP.
  2. Nato se varnostni žeton posreduje odjemalcu spletnih storitev.
  3. Nato je odjemalec spletne storitve poklical spletno storitev, vendar je tokrat zagotovil, da je varnostni žeton vdelan v sporočilo SOAP.
  4. Nato spletna storitev razume sporočilo SOAP z žetonom za preverjanje pristnosti in se nato lahko obrne na storitev Security Token, da preveri, ali je varnostni žeton verodostojen ali ne.

Spodnji delček prikazuje obliko dela za preverjanje pristnosti, ki je del dokumenta WSDL. Zdaj bo na podlagi spodnjega delčka sporočilo sporočilo SOAP vsebovalo 2 dodatna elementa, od katerih je eno uporabniško ime in drugo geslo.

Ko je sporočilo SOAP dejansko posredovano med odjemalci in strežnikom, bi lahko bil del sporočila, ki vsebuje uporabniške poverilnice, videti kot prikazan zgoraj. Ime elementa wsse je poseben element, imenovan za SOAP, in pomeni, da vsebuje informacije, ki temeljijo na varnosti.

Kako zgraditi varne spletne storitve

Zdaj pa si oglejmo primer varnosti spletnih storitev SOAP. Zaščito spletnih storitev bomo zgradili na primeru, ki je bil prikazan prej v poglavju SOAP, in mu dodali zaščitno plast.

V našem primeru bomo ustvarili preprosto spletno storitev, ki bo uporabljena za vrnitev niza v aplikacijo, ki pokliče spletno storitev. Toda tokrat, ko je priklicana spletna storitev, je treba poverilnice poslati klicni storitvi. Sledimo spodnjim korakom, da ustvarimo spletno storitev SOAP in ji dodamo varnostno definicijo.

Korak 1) Prvi korak je ustvariti prazno spletno aplikacijo Asp.Net. V Visual Studio 2013 kliknite menijsko možnost Datoteka-> Nov projekt.

Ko kliknete možnost Nov projekt, vam bo Visual Studio odprl še eno pogovorno okno za izbiro vrste projekta in potrebne podrobnosti o projektu. To je razloženo v naslednjem koraku

Korak 2) V tem koraku

  1. Najprej izberite spletno predlogo C # za spletno aplikacijo ASP.NET. Projekt mora biti te vrste, če želite ustvariti projekt spletnih storitev. Z izbiro te možnosti bo Visual Studio nato izvedel potrebne korake za dodajanje potrebnih datotek, ki jih zahteva katera koli spletna aplikacija.
  2. Navedite ime za svoj projekt, ki je bil v našem primeru podan kot " webservice.asmx. " Nato navedite lokacijo, kjer bodo shranjene datoteke projekta.

Ko končate, boste videli projektno datoteko, ustvarjeno v raziskovalcu rešitev v Visual Studio 2013.

Korak 3) V tem koraku

V naš projekt bomo dodali datoteko spletne storitve

  1. Najprej z desno miškino tipko kliknite projektno datoteko, kot je prikazano spodaj
  1. Ko z desno miškino tipko kliknete datoteko projekta, lahko izberete možnost "Dodaj-> Spletna storitev (ASMX), da dodate datoteko spletne storitve. Za datoteko z imeni spletne storitve samo navedite ime Tutorial Service.

Zgornji korak bo pozval pogovorno okno, v katerem lahko vnesete ime datoteke spletne storitve. Torej v spodnje pogovorno okno vnesite ime TutorialService kot ime datoteke.

Korak 4) V datoteko asmx Tutorial Service dodajte naslednjo kodo. Spodnji delček kode se uporablja za dodajanje razreda po meri, ki bo uporabljen za spreminjanje glave SOAP, ko bo ustvarjeno sporočilo SOAP. Ker zdaj želimo v glavo SOAP dodati varnostne poverilnice, je ta korak obvezen.

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

Pojasnilo kode: -

  1. Zdaj ustvarjamo ločen razred z imenom AuthHeader, ki je tipa SoapHeader . Kadarkoli želite spremeniti, kaj se prenese v glavi SOAP, morate ustvariti razred, ki uporablja vgrajeni razred SoapHeader .Net. S prilagajanjem glave SOAP imamo zdaj možnost, da ob klicu spletne storitve posredujemo uporabniško ime in geslo.
  2. Nato določimo spremenljivki 'UserName' in 'Password', ki sta tipa string. Z njimi bodo shranjene vrednosti uporabniškega imena in gesla, ki se posredujejo spletni storitvi.

Korak 5) Kot naslednji korak je treba v isto datoteko TutorialService.asmx dodati naslednjo kodo . Ta koda dejansko določa delovanje naše spletne storitve. Ta funkcija odjemalcu vrne niz "To je spletna storitev Guru99". Tokrat pa bo niz vrnjen le, če bo odjemalska aplikacija poverilnice posredovala spletni storitvi.

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

Pojasnilo kode: -

  1. Tu ustvarjamo objekt razreda AuthHeader, ki je bil ustvarjen v prejšnjem koraku. Ta predmet bo poslan naši storitvi Guru99Webservice, v kateri je mogoče natančno preučiti uporabniško ime in geslo.
  2. Atribut [SoapHeader] se zdaj uporablja za določitev, da mora biti pri klicu spletne storitve posredovano uporabniško ime in geslo.
  3. V tem bloku kode dejansko preučujemo uporabniško ime in geslo, ki sta bila posredovana ob klicu spletne storitve. Če je uporabniško ime enako "Guru99" in geslo enako "Guru99Password", se stranki posreduje sporočilo "To je spletna storitev Guru99". V nasprotnem primeru bo stranki poslana napaka, če bosta posredovana napačna uporabniška ID in geslo.

Če se koda uspešno izvede, se pri zagonu kode v brskalniku prikaže naslednji izhod.

Izhod:

Zgornji izhod je prikazan ob zagonu programa, kar pomeni, da je spletna storitev zdaj na voljo. Kliknite povezavo Opis storitve.

Iz opisa storitve boste zdaj videli, da sta uporabniško ime in geslo elementa datoteke WSDL. Te parametre je treba poslati ob priklicu spletne storitve.

Najboljše prakse glede varnosti spletnih storitev

Sledijo varnostni vidiki, ki jih je treba upoštevati pri delu s spletnimi storitvami

  1. Revizija in upravljanje dnevnika - Uporabite beleženje aplikacij za beleženje vseh zahtev, ki prihajajo do spletnih storitev. To daje podrobno poročilo o tem, kdo je poklical spletno storitev, in lahko pomaga pri analizi učinka, če pride do kakršne koli kršitve varnosti.

  2. Tok klicev v spletno storitev - Poskusite zabeležiti tok klicev v spletnih storitvah. Aplikacija lahko privzeto pokliče več zahtev za spletne storitve z žetoni za preverjanje pristnosti, posredovanimi med temi spletnimi storitvami. Vse klice med spletnimi storitvami je treba spremljati in beležiti.

  3. Občutljive informacije - v zapise v dnevniku ne vključujte občutljivih informacij, kot so gesla ali številke kreditnih kartic ali kakršne koli druge zaupne informacije. Če obstaja dogodek, ki vsebuje katero od teh informacij, ga je treba pred beleženjem zavreči.

  4. Sledite poslovanju - sledite pomembnim poslovnim operacijam. Na primer, usmerite svojo aplikacijo za snemanje dostopa do posebej občutljivih metod in poslovne logike. Vzemimo primer aplikacije za spletno nakupovanje. V tipični aplikaciji je več korakov, na primer izbira predmetov, ki jih želite kupiti, naloženi predmeti v košarici in nato končni nakup. Spletna storitev mora spremljati ves ta poslovni potek.

  5. Pravilna overitev - overjanje je mehanizem, s katerim lahko stranke ugotovijo svojo identiteto s spletno storitvijo z uporabo določenega nabora poverilnic, ki lahko dokažejo to identiteto. Nikoli ne bi smeli shraniti uporabniških poverilnic, zato je treba, če se WS Security uporablja za klicanje spletne storitve, opozoriti, da spletna storitev ne sme shranjevati poverilnic, poslanih v glavi SOAP. Spletna storitev jih mora zavreči.

Povzetek

  • SOAP ponuja dodatno plast, imenovano WS Security, ki zagotavlja dodatno varnost pri klicih na spletne storitve.
  • WS Security lahko pokličete s preprostim uporabniškim imenom ali geslom ali pa ga z binarnimi potrdili uporabite za preverjanje pristnosti
  • Videli smo, da lahko v .Netu spletno storitev prilagodimo tako, da se uporabniško ime in geslo posredujeta kot del glave glave SOAP.