Návrh a implementácia bezpečnostnej technológie pre webové služby
![]() |
Trenčianska Univerzita Alexandra Dubčeka v Trenčíne
Fakulta Mechatroniky |
![]() |
Autor: | Bc. Ján Minárik |
Pedagogický vedúci: |
Ing. Tomáš Páleník |
Študijný odbor: | Mechatronika
|
Akademický rok |
2009/2010
|
Obsah
Abstrakt
Webové služby predstavujú technológiu založenú na otvorených štandardoch. Stali sa vhodným nástrojom na riešenie integračných problémov v dnešnom zložitom a heterogénnom počítačovom svete. Uplatňujú sa pri budovaní podnikovej aplikačnej architektúry až po distribuovanie komplexných matematických výpočtov. Táto práca sa zaoberá možnosťami zabezpečenia XML webových služieb a chybami, ktoré pri zabezpečovaní XML webových služieb vznikajú. Je tu prezentovaný vlastný návrh a implementácia bezpečnostnej platformy pre ASP.NET webové služby. Platforma SOAP Security Enhancement poskytuje dva spôsoby autentifikácie klientov, na základe X509 certifikátov a autentifikačných lístkov v SOAP hlavičke. SOAP Security Enhancement podporuje selektívne šifrovanie s využitím kryptografického algoritmu Advanced Encryption Standard a digitálne podpisovanie SOAP správ podľa štandardu XML Signature. Ako autorizačný mechanizmus sme zvolili programovú impersonáciu.
|
Abstract
The XML web services introduce technology that is based on open standards. The web service became an adequate solution for integration problems in modern heterogeneous computers networks. They find their place at business application architecture construction till the distribution of complex mathematical calculation. The thesis deals with the possibilities of securing XML web services and weakness of XML web security. There is also presented description, design and implementation of the own security platform, called SOAP Security Enhancement. SOAP Security Enhancement offers two ways of client’s authentication with X509 certificate and authentication ticket in SOAP headers. SOAP Security Enhancement supports selectively encryption of SOAP messages with cryptographic algorithm Advanced Encryption Standard and digital sign of SOAP messages by XML Signature standards. Authorization of clients is based on programmatically impersonation.
|
Úvod
XML webové služby predstavujú technológiu pre vytváranie distribuovaných aplikácií. Podarilo sa im vyriešiť problém interoperability a zameniteľnosti, s ktorou sa stretávame napríklad pri technológii 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, so štandardami 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ými môžeme zabezpečiť dôvernosť a integritu komunikácie. Tie predstavujú hlavné piliere bezpečnosti webových aplikácií. 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 šifrovania 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ógií 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, napríklad obtiažne nastavenie v lokálnych sieťach, a takisto neumožňovali vzájomnú spoluprácu. [4] Pokiaľ sme teda chceli vybudovať distribuovaný systém, ktorý pozostával z niekoľkých operačných systémov, museli sme pre všetky počítače nadefinovať rovnaký formát paketu, prenosového protokolu atď. 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, čo môže predstavovať určitý problém, ak 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ím 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ácia 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 prijme, 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ógií 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.
V 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 má 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]
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ódovania SOAP sekcia 5 je ten, že SOAP bolo vyvinuté ešte pred dokončením štandardu XML schémy. 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 Tab. 1.2 je znázornená základná štruktúra SOAP správy.
<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]
<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>
|
Popis 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 vytvorí 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ých 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. V podstate funguje ako veľký adresár obsahujúci informácie 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ých službách a 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ácií o webových službách v týchto databázach sú však neplatné. [5] Ďalším problémom, 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 serveri, 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 veľmi 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ýšilo 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é. Znamená to, že klient zašle požiadavku na webovú službu, tá 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ými technológiami 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.2 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. Po spustení samotnej aplikácie pošle klient SOAP správu službe, tá spustí požadovanú webovú metódu a následne je zaslaná klientovi odpoveď v podobe SOAP správy.
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, prí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.
- Tá spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.
- Spojenie je ukončené.