Návrh a implementácia bezpečnostnej technológie pre webové služby

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Tnu wiki.png
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky
Fm wiki.png
Návrh a implementácia bezpečnostnej technológie pre webové služby

zadanie práce
Diplomový projekt


Autor:
Pedagogický vedúci:

Ing. Tomáš Páleník

Študijný odbor: Mechatronika

Akademický rok

2009/2010

Abstrakt

slovensky

Abstract

anglicky

Úvod

XML webové služby predstavujú technológiu pre vytváranie distribuovaných aplikácii. Podarilo sa im vyriešiť problém interoperability a zameniteľnosti, s ktorou sa napríklad stretávame pri technológií komponentov. V praxi sú XML webové služby začleňované do servisne orientovaných architektúr. Tu sa prejaví ich hlavný nedostatok, a tým je bezpečnosť. Interoperabilita webových služieb je dosiahnutá použitím SOAP správ, v ktorých sú dáta prenášané vo forme XML. Samotný protokol SOAP nezabezpečuje nijakým spôsobom integritu a dôvernosť komunikácie medzi webovou službou a klientom. Táto práca sa zaoberá vytvorením bezpečného komunikačného scenára medzi ASP.NET webovou službou a klientskou aplikáciou. V práci sa čitateľ oboznámi so samotnou technológiou XML webových služieb, štandardoch, ktoré používa a takisto je mu priblížené technologické pozadie ASP.NET webových služieb. Ďalej sa v práci venujeme možnostiam autentifikácie, autorizácie klientov ASP.NET webovej služby a spôsobom, akým môžeme zabezpečiť dôvernosť a integritu komunikácie. Tie predstavujú hlavné piliere bezpečnosti webových aplikácii. V kapitolách sú postupne opísané jednotlivé možnosti, vysvetlené ich výhody aj nevýhody, ktoré prináša ich použitie. Hlavná časť práce sa týka vlastnej bezpečnostnej platformy, ktorá poskytuje autentifikáciu klientov, autorizáciu na základe programovej impersonácie a zabezpečuje vytvorenie integrity a dôvernosti komunikačného kanála. Dôvernosť komunikačného kanála je zabezpečená digitálnym podpisovaním SOAP správ a integrita pomocou selektívneho šifrovanie SOAP správ s využitím kryptografického algoritmu AES


XML a webové služby

Porovnanie XML webových služieb s technológiou COM a CORBA

XML webové služby môžeme definovať ako technológiu založenú na otvorených štandardoch XML, SOAP a WSDL, umožňujúcu vzdialené volanie metód v prostredí internetu. Môže sa zdať, že XML webové služby predstavujú len ďalšiu z radu technológii umožňujúcu remoting. Na to aby sme pochopili skutočný význam XML webových služieb, sa musíme stručne oboznámiť s technológiou komponentov, ktorá sa objavila v 90. rokoch minulého storočia. V tomto období vznikli dve dominantné technológie COM a CORBA. Ich protokoly umožňovali RPC a ich štandardy boli implementované v rôznych počítačových sieťach. Tieto technológie boli značne sofistikované, ale priniesli so sebou veľa problémov [4]. Napríklad obtiažne nastavenie v lokálnych sieťach a takisto neumožňovali vzájomnú spoluprácu. To znamená pokiaľ sme chceli vybudovať distribuovaný systém, ktorý pozostával z niekoľkých operačných, museli sme pre všetky počítače nadefinovať rovnaký formát paketu, prenosového protokolu atd. S masívnym rozšírením Internetu sa objavili nové problémy, ako priechodnosť protokolov DCOM a CORBA cez firewall a tak isto to, že tieto protokoly sú orientované na spojenie. To znamená, že po celú dobu komunikácie klienta so serverom sa udržuje spojenie. Na strane servera sa môžu uchovávať informácie o klientoch, to môže predstavovať určitý problém, keď klient nekorektne ukončí spojenie, sú zbytočne využívané systémové zdroje. Pokiaľ sa na server snaží pripojiť súčasne veľký počet klientov, server veľmi rýchlo vyčerpá svoju pamäť a kapacitu spojenia [2]. Adekvátnou odpoveďou na riešenie problémov spojených s technológiou komponentov a ich využití pri RPC sa stali XML webové služby. Platforma XML webových služieb predstavuje jednoduché, interoperabilné pracovné prostredie. XML webové služby sa stali vhodným nástrojom na riešenie integračných problémov v dnešnom heterogénnom prostredí počítačových sietí. Problém priechodnosti protokolu cez firewall je u XML webových služieb vyriešení použitím HTTP ako transportného protokolu, a tak isto protokol HTTP je bezstavový. Tým je zabezpečené, že pri nekorektnom ukončení komunikácie klienta s XML webovou službou nie sú zbytočne využívané systémové zdroje [1]. Komunikácie klienta a XML webovej služby je založená na posielaný SOAP správ prostredníctvom HTTP kanála. Klient pošle požiadavku vo forme SOAP správy, XML webová služba ju príjme, vyvolá príslušnú webovú metódu. Výsledok je klientovi zaslaný opätovne vo forme SOAP správy. Následne je spojenie ukončené. XML webové služby dokážu komunikovať s klientmi nezávisle od platformy, na rozdiel od technológie komponentov. To znamená, že nie sú závislé na OS ani na programovacom jazyku, v ktorom boli vytvorené. Dôvod je ten, že na reprezentáciu údajov používajú XML. XML predstavuje štandard špecifikovaný konzorciom W3C pre popis štruktúrovaných dát pomocou čistého textu. V Tab, 1.1 je možné prehľadne vidieť porovnanie technológii DCOM, CORBA a XML webových služieb.

Tab. 1.1 Porovnanie jednotlivých distribuovaných technológii [4]
  CORBA DCOM Webová služba
Mechanizmus vzdialeného volania
funkcie
IIOP DCE-RPC HTTP
Kódovanie CDR NDR XML
Popis rozhrania IDL IDL WSDL
Sprístupnenie Naming service
Tranding service
Register UDDI
Prívetivosť voči firewallu Nie Nie Áno
Zložitosť protokolov Vysoká Vysoká Nízka
Použitie medzi platformami Čiastočná Nie Áno

Štandardy XML webových služieb

Za úspechom webových služieb stoja otvorené štandardy, na ktorých sú XML webové služby vystavané. XML webové služby využívajú štandardizované :

  • komunikačné protokoly,
  • formáty na popis dát,
  • popisné jazyky,
  • mechanizmy na „objavovanie“ XML webových služieb.

Pri budovaný XML webových služieb sa využívajú tieto štandardy:

  • Simple Object Access Protocol,
  • Web Service Description Language,
  • Hypertext Transfer Protocol.

Nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.

Simple Object Access Protocol

Ako sme už spomenuli, komunikácia XML webových služieb prebieha prostredníctvom zasielania SOAP správ cez HTTP kanál. Na to, aby sme mohli pochopiť princíp XML webových služieb, sa musíme najskôr oboznámiť so SOAP. SOAP predstavuje medziplatformový štandard, ktorý je používaný pre formátovanie správ zasielaných medzi XML webovými službami a klientskymi aplikáciami. Výhoda SOAP je v jeho flexibilite a jednoduchosti. SOAP môžeme použiť aj s iným transportným protokolom ako HTTP, napríklad SOAP správy môžeme posielať priamo cez TCP/IP spojenie [4]. Každá SOAP správa predstavuje XML dokument. Tento XML dokument ma jeden koreňový prvok <Envelope> , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok <Header>) a telo správy (prvok <Body>). Formát SOAP správy je znázornený na obrázku 1.3.1.[10]

Obr. 1.1 SOAP správa [3]

Existujú dva štýly SOAP [2]:

  • štýl dokumentu SOAP (document-style SOAP),
  • RPC štýl SOAP.

RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP zobrazuje dáta, ktoré sú vymenované ako dokumenty, čiže každá SOAP správa obsahuje v tele XML dokument. Tento spôsob kódovania SOAP správ je flexibilnejší ako RPC štýl SOAP. Preto je využívaný XML webovými službami. SOAP dáta môžu byť kódované dvoma spôsobmi, ako [4] :

  • literal,
  • SOAP sekcia 5 (SOAP section 5).

Pri kódovaní literal, sú dáta kódované ako špecifické XML schéma. Pri kódovaní SOAP sekcia 5, sú dáta kódované podľa podobných, ale prísnejších pravidiel, stanovených v špecifikácii sekcie 5 štandardu SOAP. Dôvod existencie kódovanie SOAP sekcia 5, je ten že SOAP bolo vyvinuté, ešte pred dokončením štandardu XML schéma. Všetky XML webové služby štandardne využívajú kódovanie literal.

V súčasnosti existujú dve verzie SOAP [10]:

  • SOAP 1.1,
  • SOAP 1.2.

Štruktúra Simple Object Access Protocol

Každá SOAP správa je uzatvorená do koreňového elementu <Envelope>. Vo vnútri obálky sa nachádza nepovinný element <Header> a povinný element <Body>. V tabuľke 1.2 je znázornená základná štruktúra SOAP správy.


Tab. 1.2 Základná štruktúra SOAP správ
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
     <soap:Header>
     </soap:Header>
     <soap:Body>
     </soap:Body>
 </soap:Envelope>

Web Service Description Language

WSDL je jazyk založený na XML, ktorý sa používa na popis verejného rozhrania webových služieb a komunikačných protokolov, ktoré podporujú. WSDL predstavuje metajazyk popisujúci tieto charakteristiky webovej metódy [5]:

  • názov webovej metódy,
  • počet, typy a poradie parametrov,
  • typ návratovej hodnoty,
  • volajúce konvencie HTTP GET, HTTP POST a SOAP.

Výhodou WSDL je to, že nie je zviazaný so žiadnou platformou alebo objektovým modelom. Je to jazyk XML, ktorý poskytuje rozhranie pre webové služby v rámci všetkých platforiem.

Základná štruktúra Web Service Description Language

WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú a popisujú XML webovú službu. Prvé tri elementy <types>, <message> a <portType> sú abstraktné. Vzájomne sa kombinujú a definujú rozhranie XML webovej služby. Posledné dva <binding> a <service> definujú protokol. WSDL dokument má jeden koreňový element <definitions>. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element <message> sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu.[5],[6]


Tab. 1.3 Štruktúra WSDL dokumentu
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <wsdl:types>
    </wsdl:types>
    <wsdl:message>
    </wsdl:message>
    <wsdl:portType >
    </wsdl:portType>
    <wsdl:binding>
    </wsdl:binding>
    <wsdl:service>
    </wsdl:service>
 </wsdl:definitions>


Opis hlavných elementov WSDL dokumentu [11]:

  • Types. V tejto sekcii sú definované všetky dátové typy XML webovej služby, patria sem aj vlastné dátové typy a formáty správ.
  • Message. Táto sekcia poskytuje podrobné informácie o správach a o SOAP požiadavkách a SOAP odpovediach, ktoré sú používané pri komunikácii s XML webovou službou.
  • PortType. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.
  • Binding. Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.
  • Service. Táto sekcia poskytuje koncové body (URI adresy) webovej služby.

U XML webových služieb vyvíjaných v rámci firmy poprípade pre menší okruh užívateľov sa WSDL dokument generuje automaticky webovým serverom, alebo nástrojom určením na tento účel. Existuje však spôsob vývoja XML webových služieb, ktorý sa nazýva “first WSDL” (najskôr WSDL), kedy sa najskôr vytvorený samotný WSDL dokument, popisujúci XML webovú službu a až potom samotná XML webová služba [7]. Tento spôsob slúži na zvýšenie interoperability. Táto technika vývoja XML webových služieb je nad rámec tejto práce a preto sa ňou nebudeme zaoberať. Protokol SOAP a HTTP predstavujú spolu s WSDL tri hlavné štandardy, na ktorých sú vystavané XML webové služby. Na lokalizáciu XML webový služieb existuje niekoľko mechanizmov, ktoré umožňujú vyhľadávať webové služby podľa určitých kritérií. Najrozšírenejším je použitie servera Universal Description, Discovery and Integration.

Universal Description Discovery and Integration

UDDI je navrhnutý pre webové služby, ktoré sú zdieľané verejne alebo medzi organizáciami či spoločnosťami. Obsahuje mechanizmy pre registrovanie, vyhľadávanie a kategorizovanie webových služieb. Podstate funguje ako veľký adresár obsahujúci o subjektoch a nimi poskytovanými službami. Základný princíp práce s UDDI je nasledovný. Developer prehľadá register, nájde služby ktoré potrebuje a získa pre ne popis WSDL. [7][12] UDDI predstavuje register, do ktorého môžu poskytovatelia webových služieb ukladať informácie o nimi poskytovanými službami užívatelia si ich môžu potom prehliadať. Dve centrálne databázy spravujú firmy Microsoft a IBM . V praxi sa však ukázalo, že dve tretiny informácii o webových službách v týchto databázach sú však neplatné [5]. Ďalším problémov, ktorý je výrazný je to, že nikto nezaručuje dôveryhodnosť poskytovateľov služieb.

WSIL

Štandard WSIL (Web Service Inspection Language) využíva na popis webovej služby súbor nazvaný inspection.wsil, ten býva lokalizovaný v hlavnom adresári webservera spoločnosti poskytujúcej danú webovú službu. Mechanizmus vyhľadávania pre užívateľa spočíva v tom, že si vyhľadá najskôr konkrétnu spoločnosť poskytujúcu konkrétnu službu, a až potom požiada o popis rozhrania.[8],[5]

DISCO

Tento štandard vytvára jediný súbor, v ktorom sú zoskupené informácie o príbuzných webových službách. Súbor býva zvyčajne umiestnený na servery, obsahuje odkazy na poskytované služby a klienti môžu on požiadať. Je to užitočné v tom prípade, že chceme vedieť podrobnejšie informácie o službách určitej spoločnosti. Toto vyhľadávanie nie je moc efektívne cez Internet, ale je vhodné pre lokálne siete, kde si klient hneď po pripojený na server môže pozrieť poskytované služby. Discovery je podporovaný iba Microsoftom, a plánuje sa ho nahradiť štandardom WS-Inspection. [4], [5].

Výhody a nevýhody webových služieb

Webové služby riešia problémy ako je priechodnosť cez firewall, spracovanie zložitých transportných protokolov a integrácia rôznorodých platforiem. Globálne rozšírenie Internetu zvýšil dôležitosť a použiteľnosť distribuovaných výpočtov a webové služby predstavujú len ďalší krok vo vývoji distribuovaných komponentov. Medzi nesporné výhody webových služieb patrí:

  • Jednoduchosť a podpora pre širokú škálu platforiem.
  • Webová služba môže pridávať nové metódy bez toho, aby to ovplyvnilo činnosť klienta. (webová služba musí ale poskytovať staré metódy a parametre)
  • Webové služby sú bezstavové. To znamená, že klient zašle požiadavku na webovú službu, ten ju spracuje, zašle späť výsledok a spojenie je ukončené. Neexistuje tu parameter spojenia.
  • Prívetivosť voči firewallu. Firewally môžu predstavovať problém pri technológii distribuovaných objektov. Avšak webové služby využívajú HTTP prenos na portoch 80, 443 a HTTP protokol prakticky vždy prejde cez firewally.

Jednoduchosť webových služieb v porovnaní so sofistikovaným technológiám COM a COBRA sa prejaví aj v tom, že neobsahuje obojstrannú komunikáciu. Pokiaľ sa klient, odpojil, server ho nemôže spätne zavolať. Hlavnou nevýhodou XML webových služieb je bezpečnosť. XML webové služby neposkytujú žiaden vstavaný mechanizmus zabezpečenia na úrovni SOAP správ.

Životný cyklus webovej služby

Obr.1 zobrazuje cyklus webovej služby. Užívateľ si vyhľadá službu priamo cez URL (Uniform Resource Locator) adresu služby, použije DISCO súbor alebo UDDI. Získa WSDL dokument, ktorý popisuje spôsob komunikácie s webovou službou, akú štruktúru má mať SOAP správa. Po spustený samotnej aplikácie pošle klient SOAP správu službe a tá spustí požadovanú webovú metódu, následne je zaslaná klientovi odpoveď v podobe SOAP správy.

Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia

Princíp komunikácie klientskej aplikácie a XML webovej služby:

  • Klientska aplikácia sa pripojí na XML webovú službu priamo cez URL adresu, poprípadne použije klient UDDI.
  • Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.
  • Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.
  • Ta spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.
  • Spojenie je ukončené.