Výukový program pre zabezpečenie webovej služby (WS) s príkladom SOAP

Obsah:

Anonim

Čo je to WS Security?

WS Security je štandard, ktorý sa zameriava na zabezpečenie pri výmene údajov ako súčasti webovej služby. Toto je kľúčová vlastnosť protokolu SOAP, vďaka ktorej je veľmi obľúbený pri vytváraní webových služieb.

Zabezpečenie je dôležitou vlastnosťou každej webovej aplikácie. Pretože takmer všetky webové aplikácie sú vystavené internetu, existuje vždy pravdepodobnosť bezpečnostnej hrozby pre webové aplikácie. Pri vývoji webových aplikácií sa preto vždy odporúča zaistiť, aby bola aplikácia navrhnutá a vyvinutá s ohľadom na bezpečnosť.

V tomto návode sa naučíte

  • Bezpečnostné hrozby a protiopatrenie
  • Normy zabezpečenia webových služieb
  • Ako vytvárať bezpečné webové služby
  • Osvedčené postupy zabezpečenia webových služieb

Bezpečnostné hrozby a protiopatrenie

Aby sme pochopili bezpečnostné hrozby, ktoré môžu byť voči webovej aplikácii nepriateľské, pozrime sa na jednoduchý scenár webovej aplikácie a zistíme, ako funguje z hľadiska bezpečnosti.

Jedným z bezpečnostných opatrení dostupných pre protokol HTTP je protokol HTTPS. HTTPS je bezpečný spôsob komunikácie medzi klientom a serverom cez web. Protokol HTTPS využíva na bezpečnú komunikáciu vrstvu Secure Sockets alebo SSL. Klient aj server budú mať digitálny certifikát, ktorý ich identifikuje ako originálny, keď dôjde ku komunikácii medzi klientom a serverom.

V štandardnej komunikácii HTTPS medzi klientom a serverom sa uskutočňujú nasledujúce kroky

  1. Klient pošle požiadavku na server prostredníctvom klientskeho certifikátu. Keď server uvidí certifikát klienta, urobí si vo svojom systéme vyrovnávacej pamäte poznámku, aby vedel, že odpoveď by sa mala vrátiť iba späť k tomuto klientovi.
  2. Server sa potom autentifikuje klientovi zaslaním jeho certifikátu. To zaisťuje, že klient komunikuje so správnym serverom.
  3. Celá ďalšia komunikácia medzi klientom a serverom je šifrovaná. To zaisťuje, že ak sa ktorýkoľvek iný používateľ pokúsi prelomiť zabezpečenie a získať požadované údaje, nebude ho môcť prečítať, pretože by bol šifrovaný.

Vyššie uvedený typ zabezpečenia však nebude fungovať vo všetkých situáciách. Môže prísť čas, keď bude môcť klient hovoriť s viacerými servermi. Nižšie uvedený príklad ukazuje, že klient hovorí súčasne s databázou aj s webovým serverom. V takýchto prípadoch nemôžu všetky informácie prejsť protokolom https.

To je miesto, kde SOAP prichádza do akcie na prekonanie týchto prekážok zavedením špecifikácie WS Security. S touto špecifikáciou sú všetky údaje súvisiace so zabezpečením definované v prvku hlavičky SOAP.

Prvok hlavičky môže obsahovať nižšie uvedené informácie

  1. Ak bola správa v tele SOAP podpísaná akýmkoľvek bezpečnostným kľúčom, tento kľúč je možné definovať v prvku hlavičky.
  2. Ak je ktorýkoľvek prvok v tele SOAP šifrovaný, hlavička by obsahovala potrebné šifrovacie kľúče, aby bolo možné správu dešifrovať, keď dorazí do cieľa.

V prostrediach s viacerými servermi pomáha vyššie uvedená autentifikácia SOAP nasledujúcim spôsobom.

  • Pretože je telo SOAP šifrované, bude ho môcť dešifrovať iba webový server, ktorý je hostiteľom webovej služby. Je to tak kvôli tomu, ako je navrhnutý protokol SOAP.
  • Predpokladajme, že ak je správa odovzdaná databázovému serveru v požiadavke HTTP, nemožno ju dešifrovať, pretože databáza nemá na to správne mechanizmy.
  • Len keď sa požiadavka skutočne dostane na webový server ako protokol SOAP, bude schopná správu dešifrovať a odoslať príslušnú odpoveď späť klientovi.

V ďalších témach uvidíme, ako je možné pre server SOAP použiť štandard WS Security.

Normy zabezpečenia webových služieb

Ako bolo uvedené v predchádzajúcej časti, štandard WS-Security sa točí okolo toho, že definícia zabezpečenia je zahrnutá v hlavičke SOAP.

Poverenia v hlavičke SOAP sa spravujú dvoma spôsobmi.

Najskôr definuje špeciálny prvok s názvom UsernameToken. Používa sa na odovzdanie používateľského mena a hesla webovej službe.

Ďalším spôsobom je použitie binárneho tokenu prostredníctvom BinarySecurityToken. Používa sa v situáciách, keď sa používajú šifrovacie techniky ako Kerberos alebo X.509.

Nasledujúci diagram zobrazuje vývoj fungovania bezpečnostného modelu v službe WS Security

Ďalej sú uvedené kroky, ktoré sa uskutočňujú vo vyššie uvedenom pracovnom postupe

  1. Od klienta webovej služby je možné odoslať požiadavku na službu bezpečnostných tokenov. Touto službou môže byť sprostredkovaná webová služba, ktorá je špeciálne vytvorená na poskytovanie používateľských mien / hesiel alebo certifikátov skutočnej webovej službe SOAP.
  2. Bezpečnostný token sa potom odovzdá klientovi webovej služby.
  3. Klient webovej služby potom zavolal na webovú službu, tentoraz však zaistil, aby bol bezpečnostný token vložený do správy SOAP.
  4. Webová služba potom porozumie správe SOAP s autentifikačným tokenom a potom môže kontaktovať službu Token zabezpečenia a zistiť, či je bezpečnostný token autentický alebo nie.

Nasledujúci úryvok zobrazuje formát autentifikačnej časti, ktorá je súčasťou dokumentu WSDL. Teraz na základe úryvku nižšie bude správa SOAP obsahovať 2 ďalšie prvky, jeden je meno používateľa a druhý je heslo.

Keď sa správa SOAP skutočne prenáša medzi klientmi a serverom, časť správy, ktorá obsahuje poverenia používateľa, môže vyzerať ako tá, ktorá je uvedená vyššie. Názov prvku wsse je špeciálny prvok s názvom definovaným pre SOAP a znamená, že obsahuje informácie založené na zabezpečení.

Ako vytvárať bezpečné webové služby

Teraz sa pozrime na príklad zabezpečenia webovej služby SOAP. Zabezpečenie webovej služby postavíme na príklade demonštrovanom skôr v kapitole SOAP a pridáme k nemu vrstvu zabezpečenia.

V našom príklade vytvoríme jednoduchú webovú službu, ktorá sa použije na vrátenie reťazca do aplikácie, ktorá webovú službu volá. Ale tentokrát, keď je vyvolaná webová služba, je potrebné volajúcej službe dodať poverenia. Poďme podľa nasledujúcich krokov vytvoriť našu webovú službu SOAP a pridať k nej definíciu zabezpečenia.

Krok 1) Prvým krokom je vytvorenie prázdnej webovej aplikácie Asp.Net. Vo Visual Studio 2013 kliknite na možnosť ponuky Súbor-> Nový projekt.

Po kliknutí na možnosť Nový projekt vám Visual Studio poskytne ďalšie dialógové okno pre výber typu projektu a pre poskytnutie potrebných podrobností o projekte. To je vysvetlené v ďalšom kroku

Krok 2) V tomto kroku

  1. Najskôr si vyberte webovú šablónu C # pre webovú aplikáciu ASP.NET. Projekt musí byť tohto typu, aby vznikol projekt webových služieb. Po výbere tejto možnosti Visual Studio potom vykoná potrebné kroky na pridanie požadovaných súborov, ktoré sú vyžadované ľubovoľnou webovou aplikáciou.
  2. Pomenujte svoj projekt, ktorý v našom prípade dostal názov „ webservice.asmx. “ Potom nezabudnite uviesť umiestnenie, kde budú uložené súbory projektu.

Po dokončení sa zobrazí súbor projektu vytvorený v prehľadávači riešení v Visual Studio 2013.

Krok 3) V tomto kroku

Do nášho projektu pridáme súbor webových služieb

  1. Prvý Kliknite pravým tlačidlom myši na súbor projektu, ako je uvedené nižšie
  1. Po kliknutí pravým tlačidlom myši na súbor projektu máte možnosť zvoliť možnosť „Pridať-> Webová služba (ASMX) a pridať súbor webovej služby. Stačí uviesť názov výučbovej služby pre názov súboru webovej služby.

Vyššie uvedený krok vyvolá dialógové okno, v ktorom je možné zadať názov súboru webovej služby. Takže v dialógovom okne nižšie zadajte názov TutorialService ako názov súboru.

Krok 4) Pridajte nasledujúci kód do svojho súboru asmx Tutorial Service. Fragment kódu uvedený nižšie sa používa na pridanie vlastnej triedy, ktorá sa použije na zmenu hlavičky SOAP pri generovaní správy SOAP. Pretože teraz chceme do hlavičky SOAP pridať bezpečnostné poverenia, je tento krok potrebný.

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

Vysvetlenie kódu: -

  1. Teraz vytvárame samostatnú triedu s názvom AuthHeader, ktorá je typu SoapHeader . Kedykoľvek chcete zmeniť to, čo sa odovzdá v hlavičke SOAP, musíte vytvoriť triedu, ktorá používa vstavanú triedu SoapHeader .Net. Prispôsobením hlavičky SOAPhead teraz máme možnosť pri volaní webovej služby odovzdať „používateľské meno“ a „heslo“.
  2. Potom definujeme premenné „UserName“ a „Password“, ktoré sú typu string. Budú použité na uchovávanie hodnôt používateľského mena a hesla, ktoré sú poskytované webovej službe.

Krok 5) V nasledujúcom kroku je potrebné do rovnakého súboru TutorialService.asmx pridať nasledujúci kód . Tento kód v skutočnosti definuje funkciu našej webovej služby. Táto funkcia vráti klientovi reťazec „Toto je webová služba Guru99“. Tentokrát sa ale reťazec vráti, iba ak klientska aplikácia odovzdá poverenia webovej službe.

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

Vysvetlenie kódu: -

  1. Tu vytvárame objekt triedy AuthHeader, ktorý bol vytvorený v predchádzajúcom kroku. Tento objekt bude odoslaný do našej Guru99Webservice, v ktorej je možné podrobne preskúmať používateľské meno a heslo.
  2. Atribút [SoapHeader] sa teraz používa na určenie, že pri volaní webovej služby musí byť zadané meno používateľa a heslo.
  3. V tomto bloku kódu vlastne skúmame meno používateľa a heslo, ktoré boli odovzdané pri volaní webovej služby. Ak sa používateľské meno rovná „Guru99“ a heslo sa rovná „Guru99Password“, klientovi sa odošle správa „Toto je webová služba Guru99“. V opačnom prípade bude klientovi zaslaná chyba, ak dôjde k zadaniu nesprávneho ID používateľa a hesla.

Ak sa kód úspešne vykoná, pri spustení kódu v prehliadači sa zobrazí nasledujúci výstup.

Výkon:

Vyššie uvedený výstup sa zobrazuje pri spustení programu, čo znamená, že webová služba je teraz k dispozícii. Kliknime na odkaz Popis služby.

Z popisu služby teraz uvidíte, že používateľské meno a heslo sú prvkami súboru WSDL. Tieto parametre je potrebné odoslať pri vyvolaní webovej služby.

Osvedčené postupy zabezpečenia webových služieb

Nasledujú bezpečnostné aspekty, ktoré by ste si mali uvedomiť pri práci s webovými službami

  1. Auditovanie a správa protokolov - pomocou protokolovania aplikácií môžete zaznamenávať všetky požiadavky, ktoré prichádzajú na webové služby. Toto poskytuje podrobnú správu o tom, kto vyvolal webovú službu, a môže pomôcť pri analýze dopadov, ak dôjde k narušeniu bezpečnosti.

  2. Tok hovorov do webovej služby - Skúste si všimnúť tok hovorov vo webových službách. Aplikácia môže predvolene volať viac požiadaviek na webové služby s tokenmi autentifikácie odovzdanými medzi týmito webovými službami. Všetky hovory medzi webovými službami musia byť monitorované a zaznamenávané.

  3. Citlivé informácie - do záznamov v protokole nezahŕňajte citlivé informácie, ako sú heslá, čísla kreditných kariet alebo akékoľvek iné dôverné informácie. Ak existuje udalosť, ktorá obsahuje niektorú z týchto informácií, je potrebné ju pred prihlásením zahodiť.

  4. Sledovať obchodné operácie - Sledujte významné obchodné operácie. Napríklad vybavte svoju aplikáciu tak, aby zaznamenávala prístup k obzvlášť citlivým metódam a obchodnej logike. Zoberme si príklad aplikácie na nakupovanie online. Typická aplikácia má niekoľko krokov, napríklad výber položiek, ktoré sa majú kúpiť, položky vložené do košíka a potom konečný nákup. Celý tento obchodný pracovný tok musí byť sledovaný webovou službou.

  5. Správne overenie - Autentifikácia je mechanizmus, pomocou ktorého môžu klienti zistiť svoju totožnosť pomocou webovej služby pomocou určitej množiny poverení, ktoré túto totožnosť dokážu. Nikdy by sa nemali ukladať poverenia používateľa, a preto, ak sa na volanie webovej služby používa WS Security, je potrebné poznamenať, že webová služba by nemala ukladať poverenia, ktoré sa odosielajú do hlavičky SOAP. Webová služba by ich mala vyhodiť.

Zhrnutie

  • SOAP poskytuje ďalšiu vrstvu nazvanú WS Security, ktorá poskytuje ďalšie zabezpečenie pri volaní na webové služby.
  • Na WS Security je možné volať pomocou jednoduchého používateľského mena alebo hesla alebo ho možno použiť s binárnymi certifikátmi na autentifikáciu
  • Videli sme, že v .Net môžeme prispôsobiť webovú službu tak, aby malo meno používateľa a heslo odovzdané ako súčasť prvku hlavičky SOAP.