<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ian</id>
	<title>Kiwiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ian"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Ian"/>
	<updated>2026-05-03T02:17:27Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Integrita_a_d%C3%B4vernos%C5%A5_komunik%C3%A1cie&amp;diff=5089</id>
		<title>Integrita a dôvernosť komunikácie</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Integrita_a_d%C3%B4vernos%C5%A5_komunik%C3%A1cie&amp;diff=5089"/>
		<updated>2010-06-11T17:46:07Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|4|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Integrita a dôvernosť komunikácie=&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole sa budeme venovať spôsobom, akým môžeme  vytvoriť bezpečný a dôverný komunikačný kanál medzi webovým serverom a klientskou aplikáciou volajúcou napríklad webovú službu. Najrozšírenejším spôsobom je použitie technológie SSL, aj keď tento spôsob má aj svoje negatíva, o ktorých sa dozvieme neskôr. SSL nie je funkciou ASP.NET, čiže nie je realizované samotnou webovou službou, ale webovým serverom. V našom prípade službou IIS.&lt;br /&gt;
&lt;br /&gt;
==Služba IIS a technológia SSL==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté technológia SSL šifruje HTTP komunikáciu medzi klientskou aplikáciou a webovým serverom. SSL pracuje na nižšej vrstve, preto neovplyvňuje spracovanie HTTP požiadavky. Kryptovanie a dekryptovanie je realizované webovým serverom a  komunikácia prebieha štandardne na porte 443. Pre korektné využívanie SSL, je nutné mať nainštalovaný certifikát X.509 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Skôr ako si vysvetlíme samotné princíp SSL, je nutné sa oboznámiť s certifikátmi.&lt;br /&gt;
&lt;br /&gt;
===Princíp certifikátov a certifikát X.509===&lt;br /&gt;
&lt;br /&gt;
Certifikáty predstavujú mechanizmus na distribúciu verejného kľúča. Sú založené na asymetrickom šifrovaní. Používajú dva kľúče, verejný a súkromný. Tie sú matematicky prepojené. Súkromných kľúč je udržiavaný v tajnosti, verejný kľúč je voľne dispozícii Certifikát jeho vlastníkovi  poskytuje dôkaz, že:&lt;br /&gt;
&lt;br /&gt;
* Daný verejný kľúč patrí jemu.&lt;br /&gt;
* K verejnému kľúču vlastní aj zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
====Proces vystavenia certifikátu====&lt;br /&gt;
&lt;br /&gt;
Proces vystavanie certifikátu je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;35&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. Žiadateľ o vystavenie certifikátu si vygeneruje dvojicu kľúčov, verejný a súkromný. Žiadosť o certifikát predstavuje dátovú štruktúru obsahujúcu:&lt;br /&gt;
&lt;br /&gt;
* Identifikačné údaje vlastníka,&lt;br /&gt;
* Verejný kľúč,&lt;br /&gt;
* Poprípade iné informácie.&lt;br /&gt;
Takúto štruktúru vlastník digitálne podpíše pomocou príslušného súkromného kľúča. To predstavuje dôkaz o vlastníctve súkromného kľúča.&lt;br /&gt;
&lt;br /&gt;
2. Takáto žiadosť sa predá certifikačnej autorite. Certifikačné autority predstavujú všeobecne dôveryhodnú entitu. Medzi dve najväčšie CA v súčasnosti patrí Thawte ( [http://www.thawte.com/ http://www.thawte.com] ) a VeriSign ( [http://www.verisign.com/ http://www.verisign.com] ). Certifikačná autorita overí totožnosť žiadateľa, verifikuje digitálny podpis na žiadosti o vystavenie certifikátu, a aby overila vlastníctvo súkromného kľúča. Pokiaľ je žiadosť v poriadku certifikačný úrad vytvorí z užívateľskej žiadosti správu a podpíše ju pomocou súkromného kľúča, týmto vytvorí samotný digitálny podpis a správu zašle späť užívateľovi.&lt;br /&gt;
&lt;br /&gt;
3. Použitie certifikátu je nasledovné. Užívateľ pošle web serveru svoj certifikát, ktorý je mechanizmom na distribúciu jeho verejného kľúča.&lt;br /&gt;
&lt;br /&gt;
4. Web server pomocou verejného kľúča certifikačného úradu, overí podpis certifikátu. Po zistení jeho platnosti príjme verejný kľuč, ktorý sa použije na vytvorenie SLL spojenia.&lt;br /&gt;
&lt;br /&gt;
Celý proces vystavenia certifikátu je znázornení na Obr. 4.1 Certifikát X.509 predstavuje medzinárodný štandard pre digitálne certifikáty používaný na autentifikáciu digitálnych podpisov. Obsahuje tieto základné informácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;35&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Názov certifikačnej autority,&lt;br /&gt;
* Sériové číslo certifikátu,&lt;br /&gt;
* Identifikačné údaje vlastníka (meno držiteľa certifikátu, názov firmy a jej adresu),&lt;br /&gt;
* Platnosť certifikátu,&lt;br /&gt;
* Verejný kľúč,&lt;br /&gt;
* Dáta na overenie platnosti certifikátu,&lt;br /&gt;
* Digitálny podpis CA.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_5.png|framed|center|Obr. 4.1 Proces vydania certifikátu]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri verifikácii certifikátu sa overujú nasledovné informácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;35&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Verzia, sériové číslo certifikátu, CA, platnosť, predmet,&lt;br /&gt;
* Verejný kľúč,&lt;br /&gt;
* Digitálny podpis CA.&lt;br /&gt;
&lt;br /&gt;
===Princíp komunikácie prostredníctvom SSL===&lt;br /&gt;
&lt;br /&gt;
Proces vytvorenia bezpečného HTTPS kanála je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Klient požiada server o spojenie.&lt;br /&gt;
&lt;br /&gt;
2. Webový server podpíše certifikát a zašle ho klientovi.&lt;br /&gt;
&lt;br /&gt;
3. Klient overí, či certifikát vydala CA (certifikačná autorita). Klient si overí platnosť serverového certifikátu a či bol vydaní CA. Pokiaľ certifikát nebol vzdaný CA,  klient je na to upozornení. Sám sa rozhodne, či bude pokračovať v komunikácii alebo ju ukončí.&lt;br /&gt;
&lt;br /&gt;
4. Klient príjme komunikáciu.&lt;br /&gt;
&lt;br /&gt;
5. Klient povie serveru aké podporuje kryptovacie kľúče.&lt;br /&gt;
&lt;br /&gt;
6. Server vyberie ten najsilnejší a informuje o tom klienta.&lt;br /&gt;
&lt;br /&gt;
7. Klient si vygeneruje náhodný kľúč symetrickej šifry a zašifruje ho verejným kľúčom servera, ktorý získa z serverového certifikátu.&lt;br /&gt;
&lt;br /&gt;
8. Server ho dešifruje súkromným kľúčom.&lt;br /&gt;
&lt;br /&gt;
9. Server a klient majú rovnaký  tajný kľúč pre symetrické kryptovanie. Komunikácia je symetricky šifrovaná rovnakým kľúčom počas celej doby spojenia.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_6.png|framed|center|Obr. 4.2 Proces vytvorenia SSL spojenia]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Integrita_a_d%C3%B4vernos%C5%A5_komunik%C3%A1cie&amp;diff=5088</id>
		<title>Integrita a dôvernosť komunikácie</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Integrita_a_d%C3%B4vernos%C5%A5_komunik%C3%A1cie&amp;diff=5088"/>
		<updated>2010-06-11T17:44:51Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Integrita a dôvernosť komunikácie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|4|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
=Integrita a dôvernosť komunikácie=&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole sa budeme venovať spôsobom, akým môžeme  vytvoriť bezpečný a dôverný komunikačný kanál medzi webovým serverom a klientskou aplikáciou volajúcou napríklad webovú službu. Najrozšírenejším spôsobom je použitie technológie SSL, aj keď tento spôsob má aj svoje negatíva, o ktorých sa dozvieme neskôr. SSL nie je funkciou ASP.NET, čiže nie je realizované samotnou webovou službou, ale webovým serverom. V našom prípade službou IIS.&lt;br /&gt;
&lt;br /&gt;
==Služba IIS a technológia SSL==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté technológia SSL šifruje HTTP komunikáciu medzi klientskou aplikáciou a webovým serverom. SSL pracuje na nižšej vrstve, preto neovplyvňuje spracovanie HTTP požiadavky. Kryptovanie a dekryptovanie je realizované webovým serverom a  komunikácia prebieha štandardne na porte 443. Pre korektné využívanie SSL, je nutné mať nainštalovaný certifikát X.509 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Skôr ako si vysvetlíme samotné princíp SSL, je nutné sa oboznámiť s certifikátmi.&lt;br /&gt;
&lt;br /&gt;
===Princíp certifikátov a certifikát X.509===&lt;br /&gt;
&lt;br /&gt;
Certifikáty predstavujú mechanizmus na distribúciu verejného kľúča. Sú založené na asymetrickom šifrovaní. Používajú dva kľúče, verejný a súkromný. Tie sú matematicky prepojené. Súkromných kľúč je udržiavaný v tajnosti, verejný kľúč je voľne dispozícii Certifikát jeho vlastníkovi  poskytuje dôkaz, že:&lt;br /&gt;
&lt;br /&gt;
* Daný verejný kľúč patrí jemu.&lt;br /&gt;
* K verejnému kľúču vlastní aj zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
====Proces vystavenia certifikátu====&lt;br /&gt;
&lt;br /&gt;
Proces vystavanie certifikátu je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;35&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. Žiadateľ o vystavenie certifikátu si vygeneruje dvojicu kľúčov, verejný a súkromný. Žiadosť o certifikát predstavuje dátovú štruktúru obsahujúcu:&lt;br /&gt;
&lt;br /&gt;
* Identifikačné údaje vlastníka,&lt;br /&gt;
* Verejný kľúč,&lt;br /&gt;
* Poprípade iné informácie.&lt;br /&gt;
Takúto štruktúru vlastník digitálne podpíše pomocou príslušného súkromného kľúča. To predstavuje dôkaz o vlastníctve súkromného kľúča.&lt;br /&gt;
&lt;br /&gt;
2. Takáto žiadosť sa predá certifikačnej autorite. Certifikačné autority predstavujú všeobecne dôveryhodnú entitu. Medzi dve najväčšie CA v súčasnosti patrí Thawte ( [http://www.thawte.com/ http://www.thawte.com] ) a VeriSign ( [http://www.verisign.com/ http://www.verisign.com] ). Certifikačná autorita overí totožnosť žiadateľa, verifikuje digitálny podpis na žiadosti o vystavenie certifikátu, a aby overila vlastníctvo súkromného kľúča. Pokiaľ je žiadosť v poriadku certifikačný úrad vytvorí z užívateľskej žiadosti správu a podpíše ju pomocou súkromného kľúča, týmto vytvorí samotný digitálny podpis a správu zašle späť užívateľovi.&lt;br /&gt;
&lt;br /&gt;
3. Použitie certifikátu je nasledovné. Užívateľ pošle web serveru svoj certifikát, ktorý je mechanizmom na distribúciu jeho verejného kľúča.&lt;br /&gt;
&lt;br /&gt;
4. Web server pomocou verejného kľúča certifikačného úradu, overí podpis certifikátu. Po zistení jeho platnosti príjme verejný kľuč, ktorý sa použije na vytvorenie SLL spojenia.&lt;br /&gt;
&lt;br /&gt;
Celý proces vystavenia certifikátu je znázornení na Obr. 4.1 Certifikát X.509 predstavuje medzinárodný štandard pre digitálne certifikáty používaný na autentifikáciu digitálnych podpisov. Obsahuje tieto základné informácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;35&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Názov certifikačnej autority,&lt;br /&gt;
* Sériové číslo certifikátu,&lt;br /&gt;
* Identifikačné údaje vlastníka (meno držiteľa certifikátu, názov firmy a jej adresu),&lt;br /&gt;
* Platnosť certifikátu,&lt;br /&gt;
* Verejný kľúč,&lt;br /&gt;
* Dáta na overenie platnosti certifikátu,&lt;br /&gt;
* Digitálny podpis CA.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_5.png|framed|center|Obr. 4.1 Proces vydania certifikátu]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri verifikácii certifikátu sa overujú nasledovné informácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;35&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Verzia, sériové číslo certifikátu, CA, platnosť, predmet,&lt;br /&gt;
* Verejný kľúč,&lt;br /&gt;
* Digitálny podpis CA.&lt;br /&gt;
&lt;br /&gt;
===Princíp komunikácie prostredníctvom SSL===&lt;br /&gt;
&lt;br /&gt;
Proces vytvorenia bezpečného HTTPS kanála je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Klient požiada server o spojenie.&lt;br /&gt;
&lt;br /&gt;
2. Webový server podpíše certifikát a zašle ho klientovi.&lt;br /&gt;
&lt;br /&gt;
3. Klient overí, či certifikát vydala CA (certifikačná autorita). Klient si overí platnosť serverového certifikátu a či bol vydaní CA. Pokiaľ certifikát nebol vzdaný CA,  klient je na to upozornení. Sám sa rozhodne, či bude pokračovať v komunikácii alebo ju ukončí.&lt;br /&gt;
&lt;br /&gt;
4. Klient príjme komunikáciu.&lt;br /&gt;
&lt;br /&gt;
5. Klient povie serveru aké podporuje kryptovacie kľúče.&lt;br /&gt;
&lt;br /&gt;
6. Server vyberie ten najsilnejší a informuje o tom klienta.&lt;br /&gt;
&lt;br /&gt;
7. Klient si vygeneruje náhodný kľúč symetrickej šifry a zašifruje ho verejným kľúčom servera, ktorý získa z serverového certifikátu.&lt;br /&gt;
&lt;br /&gt;
8. Server ho dešifruje súkromným kľúčom.&lt;br /&gt;
&lt;br /&gt;
9. Server a klient majú rovnaký  tajný kľúč pre symetrické kryptovanie. Komunikácia je symetricky šifrovaná rovnakým kľúčom počas celej doby spojenia.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_6.png|framed|center|Obr. 4.2 Proces vytvorenia SSL spojenia]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5087</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5087"/>
		<updated>2010-06-11T12:56:02Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Universal Description Discovery and Integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;  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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
&lt;br /&gt;
* komunikačné protokoly,&lt;br /&gt;
* formáty na popis dát,&lt;br /&gt;
* popisné jazyky,&lt;br /&gt;
* mechanizmy na „objavovanie&amp;quot; XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
&lt;br /&gt;
* Simple Object Access Protocol,&lt;br /&gt;
* Web Service Description Language,&lt;br /&gt;
* Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument má jeden koreňový prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;) '''a telo správy (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''). Formát SOAP správy je znázornený na obrázku 1.3.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
* RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* literal,&lt;br /&gt;
* SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* SOAP 1.1,&lt;br /&gt;
* SOAP 1.2.&lt;br /&gt;
&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri obálky sa nachádza nepovinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''a povinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. V Tab. 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* názov webovej metódy,&lt;br /&gt;
* počet, typy a poradie parametrov,&lt;br /&gt;
* typ návratovej hodnoty,&lt;br /&gt;
* volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;types&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;portType&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;binding&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;service&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' definujú protokol. WSDL dokument má jeden koreňový element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;definitions&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;6&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:types&amp;gt;&amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:message&amp;gt;&amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:portType &amp;gt;&amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:binding&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:service&amp;gt;&amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis hlavných elementov WSDL dokumentu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;11&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''PortType'''. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
* '''Binding.''' Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
* '''Service.''' Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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 &amp;quot;first WSDL&amp;quot; (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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; 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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;12&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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é. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Ďalším problémom, ktorý je výrazný, je to, že nikto nezaručuje dôveryhodnosť poskytovateľov služieb.&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;8&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
&lt;br /&gt;
* Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
* 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.)&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
&lt;br /&gt;
* Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, prípadne použije klient UDDI.&lt;br /&gt;
* Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
* Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
* Tá spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
* Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5086</id>
		<title>SOAP Security Enhancement pre ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5086"/>
		<updated>2010-06-11T12:54:43Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Rozšírenie SOAP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|9|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=SOAP Security Enhancement pre ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich dvoch kapitolách sme si opísali teoretické možnosti zabezpečenia XML ASP.NET webových služieb a štandardy zamerané na bezpečnosť XML. Táto kapitola sa zaoberá vývojom vlastnej bezpečnostnej platformy pre XML ASP.NET webové služby v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, ktorú sme nazvali SOAP Security Enhancement (SSE) Naša bezpečnostná platforma bude predstavovať zabezpečenie na úrovni správ a tiež na úrovni aplikácie. Pri vytváraní  bezpečnostného systému pre webové aplikácie  treba zabezpečiť:&lt;br /&gt;
&lt;br /&gt;
* Mechanizmus pre overovanie klientskych aplikácií. Možnosti overovania klientov sme si podrobne rozobrali v kapitolách 5, 5.1, 5.2, 5.3.&lt;br /&gt;
* Mechanizmus pre autorizáciu klientov overených webovou službou. Spôsobmi autorizácie sme sa zaoberali kapitolách 5.1, kde sme sa zaoberali autorizáciou s využitým webového servera IIS a takisto autorizáciou prostredníctvom konfiguračného súboru webovej služby, ktorú sme si  opísali v kapitole 6.&lt;br /&gt;
* Mechanizmus pre zabezpečenie dôvernosti a integrity komunikácie. Spôsobov na vytvorenie bezpečnej komunikačnej linky je viacero. Najrozšírenejší spôsob je použitie technológie SSL, ktorou sme sa zaoberali v podkapitole 4.1. Táto technológia má aj svoje nedostatky, ktoré sme načrtli v kapitole  7 a s ktorými sa oboznámime v podkapitole 9.7.1.&lt;br /&gt;
V príslušných kapitolách sme vysvetlili výhody, nevýhody a oblasti použitia daných mechanizmov pre autentifikáciu, autorizáciu a zabezpečenie dôvernosti a integrity komunikácie. V tejto kapitole ponúkame vlastný komplexný spôsob, ako zabezpečiť komunikáciu medzi XML ASP.NET webovou službou a klientskou aplikáciou na platforme .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.1 sú prehľadne opísané spôsoby a technológie, ktoré použijeme na autentifikáciu, autorizáciu a  zabezpečenie dôvernosti a integrity komunikácie. Tie podrobnejšie popíšeme a vysvetlíme nasledujúcich podkapitolách.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.1'''  Popis technológií použitých pri vlastnej bezpečnostnej platforme&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Mechanizmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Technológia'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autentifikácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Certifikát X509'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia bude realizovaná prostredníctvom programovej impersonácie, ktorú sme si vysvetlili v podkapitole 5.2.1. &lt;br /&gt;
|-&lt;br /&gt;
|Integrita a dôvernosť komunikácie&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Integrita a dôvernosť komunikácie bude zabezpečená prostredníctvom selektívneho šifrovania SOAP správ s využitím Advanced Encryption Standard  a prostredníctvom digitálneho podpisovania SOAP správ pomocou certifikátov X509 s využitím štandardu XML Signature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Štruktúra SOAP Security Enhancement  z objektovo-orientovaného prístupu==&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.2 sú prehľadne opísané základné programové triedy bezpečnostnej platformy spolu s ich funkcionalitou. Podrobnejšie budú opísané v príslušných podkapitolách.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.2''' Triedy bezpečnostnej platformy &lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Názov triedy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AbstractDatabase&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda vytvorená podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DbProvider&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda pre prístup k MS SQL databázovému úložisku. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtension&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda SOAP rozšírenia umožňuje prístup k SOAP   správam v rôznych etapách spracovania. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje atribút SOAP rozšírenia, pomocou ktorého sa špecifikujú konkrétne časti (elementy) SOAP správy ktoré budú šifrované a digitálne podpísané.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda obsahuje metódy na šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Zabezpečuje autentifikáciu klienta, vygenerovanie parametrov AES šifry a vytvorenie konfiguračného XML dokumentu obsahujúce parametre pre bezpečnú komunikáciu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TicketIdentity&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda  reprezentuje autentifikačný lístok umiestnený v SOAP hlavičke klienta.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserData&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje „data object“ reprezentujúci údaje pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserImpersonation&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TTrieda zabezpečuje mechanizmus autorizácie prostredníctvom Windows impersonácie.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia klientov v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Možnosti na overovanie klientov pre XML ASP.NET webové služby sú značne obmedzené. Kedže webová služba neposkytuje žiaden vstavaný spôsob akým, by mohol užívateľ predložiť prihlasovacie údaje, napríklad webový formulár. Najrozšírenejšie spôsoby overovania klientov webovou službou sú tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Autentifikácie Windows. Tento typ nie je veľmi flexibilný a má veľa nedostatkov, ktoré sme si opísali v kapitole 5.1.&lt;br /&gt;
* Vlastný typ autentifikačného procesu založeného na prihlasovacích lístkoch  s využitím SOAP rozšírenia.&lt;br /&gt;
* Použitie klientskych certifikátov X509.&lt;br /&gt;
&lt;br /&gt;
Autentifikáciu založenú na certifikátoch X509 sme zvolili z nasledujúcich dôvodov:&lt;br /&gt;
&lt;br /&gt;
1. Použitie klientskych certifikátov dáva značnú kontrolu nad užívateľskými identitami, nakoľko  certifikáty sú vydávané  certifikačnou autoritou, ktorá býva zvyčajne pod kontrolou administrátora servera, na ktorom môže byť hosťovaná webová služba. Tak isto je možné klientske certifikáty mapovať na užívateľské účty Windows, či už  priamo na webovom serveri IIS alebo priamo programovo vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
2. Certifikáty X509 predstavujú účinnú ochranu proti  podvrhnutiu falošného verejného kľúča ( Man-in-the-Middle Attack &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;36&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ).&lt;br /&gt;
&lt;br /&gt;
3. Tak isto predstavuje účinný mechanizmus na zabezpečenie toho, že vlastník verejného kľúča má k nemu zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
Certifikátom sme sa podrobnejšie venovali v podkapitole 4.1.1. Na vystavenie klientskych certifikátov sme  vytvorili vlastnú testovaciu certifikačnú autoritu na operačnom systéme Windows Server 2003.&lt;br /&gt;
&lt;br /&gt;
Počiatočnú autentifikáciu sme sa rozhodli teda realizovať prostredníctvom klientskych certifikátov X509. Na korektný prenos certifikátov X509 je nutný HTTPS prenos.&lt;br /&gt;
&lt;br /&gt;
Kedže použitie technológie SSL má aj nedostatky a pri prenose veľkého množstva dát je náročné, rozhodli sme sa, že HTTPS kanál bude použitý  pri komunikácii klienta a webovej služby iba raz, a to pri počiatočnom volaní webovej metódy, ktorá zabezpečí overenie klienta na základe klientskeho certifikátu X509. Následne bude klientovi vydaný „autentifikačný lístok&amp;quot;, ktorý bude umiestnený do SOAP hlavičky. Lístok obsahuje  128  bitové jedinečné číslo, ktoré  identifikuje užívateľa pri nasledujúcich volaniach webových metód, a je použitý na jeho overenie. Lístok sa vydáva klientovi s určitou časovou platnosťou, ktorú je možné podľa potreby a priority meniť.&lt;br /&gt;
&lt;br /&gt;
Hodnota ID  v autentifikačnom lístku je uložená spolu s príslušnými údajmi z klientskeho certifikátu do relačnej databázy, ktorú webová služba používa na ďalšie overovanie klienta pri volaní webových metód.&lt;br /&gt;
&lt;br /&gt;
Proces prvotnej autentifikácie je nasledovný. Pri počiatočnom prístupe klienta k webovej službe musí klient zavolať webovú metódu '''CreateConnection''' webovej služby. Metóda&lt;br /&gt;
&lt;br /&gt;
CreateConnection plní v komunikačnom scenári nasledujúce funkcie:&lt;br /&gt;
&lt;br /&gt;
* Overenie klientskeho certifikátu.&lt;br /&gt;
* Vytvorenie SOAP hlavičky s užívateľským ID.&lt;br /&gt;
* Zápis príslušných parametrov z klientskeho certifikátu do databázy.&lt;br /&gt;
* Vygenerovanie a zaslanie parametrov AES, ktoré sú použité na šifrovanie SOAP správ.&lt;br /&gt;
Prostredníctvom vlastnosti''' Context''', ktorú trieda webovej služby  získala odvodením z abstraktnej triedy WebService (pozri podkapitola 2.1),  je extrahovaný klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.3''' Extrahovanie klientského certifikátu z vlastnosti Context&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
X509Certificate2 cert = new X509Certificate2(Context.Request.ClientCertificate.Certificate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Následne je klientsky certifikát overený na revokáciu a dôveryhodnosť certifikačnej autority.&lt;br /&gt;
&lt;br /&gt;
Pokiaľ je certifikát klienta úspešne overený,  webová metóda CreateConnection vygeneruje hodnotu ID v autentifikačnom lístku.&lt;br /&gt;
&lt;br /&gt;
Po vygenerovaní ID pre overeného klienta sú údaje z klientskeho certifikátu (verejný kľúč a common name), ID klienta spolu s  dátumom a časom vytvorenia lístka zapísané do databázy. Následne je vytvorená SOAP hlavička , do ktorej je umiestnené ID užívateľa.&lt;br /&gt;
&lt;br /&gt;
Výhoda vlastného autentifikačného systému na lístkoch:&lt;br /&gt;
&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód  nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
Parametre AES šifry sú zaslané webovou metódou''' CreateConnection''' vo forme XML dokumentu. XML dokument je zašifrovaný pomocou RSA šifry s využitím verejného kľúča z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
XML dokument obsahuje parametre AES šifry a takisto verejný kľúč z certifikátu servera, na overenie digitálneho podpisu SOAP správy webovej služby.&lt;br /&gt;
&lt;br /&gt;
Zašifrované XML je  na strane klienta dešifrované pomocou súkromného kľúča z patričného klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
Parametre AES šifry využíva objekt proxy na šifrovanie SOAP požiadaviek klienta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.4''' Autentifikačný lístok v SOAP hlavičke&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
       &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Ticket&amp;gt;f84bd797-8ea5-463c-9319-5d952ec30207&amp;lt;/Ticket&amp;gt; &lt;br /&gt;
       &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
   &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_13.png|framed|center|Obr. 9.1 Autentifikačný proces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis autentifikačného procesu na Obr. 9.1 :&lt;br /&gt;
&lt;br /&gt;
1. Načítanie klientskeho certifikátu z úložiska.&lt;br /&gt;
&lt;br /&gt;
2. Pridanie certifikátu k objektu proxy a zavolanie webovej metódy CreateConnection.&lt;br /&gt;
&lt;br /&gt;
3. Autentifikácia klientskeho certifikátu, vydanie autentifikačného lístka, ak bol certifikát prijatý.&lt;br /&gt;
&lt;br /&gt;
4. Pri následnom volaní webovej metódy sa autentifikácia klienta vykoná na základe autentifikačného lístka a komunikácia prebieha cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Databázové úložisko==&lt;br /&gt;
&lt;br /&gt;
Ako sme v predchádzajúcej podkapitole spomenuli, informácie o autentifikovanom klientovi sú na strane webovej služby uchovávané v relačnej databáze, konkrétne MS SQL. Pre komunikáciu s databázovým úložiskom sme mohli použiť nasledujúce technológie:&lt;br /&gt;
&lt;br /&gt;
1. LINQ to SQL &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;32&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
2. ADO.NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LINQ to SQL poskytuje niektoré pokročilé možnosti v porovnaní s ADO.NET. Avšak samotná technológia ADO.NET poskytuje dostatočnú podporu pre rôzne DBMS &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* MS SQL Server,&lt;br /&gt;
* MS SQL Mobile Server,&lt;br /&gt;
* Oracle,&lt;br /&gt;
* MySQL,&lt;br /&gt;
* ODBC,&lt;br /&gt;
* OLEDB.&lt;br /&gt;
V praktickej časti sme vytvorili triedu AbstractDatabase podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS. Tým je zabezpečená možnosť upraviť databázové úložisko pre potreby praxe. Pri komplexnej podnikovej aplikácii by bolo najvýhodnejšie použiť ORM Framework napr. NHibernate.  Dosiahli by sme separáciu objektového kódu od databázového kódu a znížili závislosť  logickej vrstvy od bussines vrstvy. Použitie ORM Frameworku je nad rámec tejto práce, ale považovali sme za vhodné ho spomenúť.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spracovanie SOAP správ==&lt;br /&gt;
&lt;br /&gt;
Jedným z prvkov na zabezpečenie integrity a dôvernosti komunikácie medzi klientskou aplikáciou a XML ASP.NET webovou službou je mechanizmus šifrovania a digitálneho podpisovania SOAP správ'''. '''Predtým, než si opíšeme spôsob, akým sú šifrované a podpisované SOAP správy, sa musíme oboznámiť so spôsobom, akým sú spracovávané SOAP správy na strane webovej služby aj na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
Spracovávanie SOAP správ na strane webovej služby, ale aj na strane klienta prebieha v 2 etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Serializácia.''' Požiadavka klienta alebo odpoveď webovej služby je serializovaná ako XML schéma.&lt;br /&gt;
&lt;br /&gt;
2. '''Deserializácia'''. SOAP správa je deserializovaná na dátové typy.&lt;br /&gt;
&lt;br /&gt;
Aby sme  mohli pristupovať k jednotlivým etapám spracovania SOAP správ, musíme implementovať mechanizmus SOAP rozšírenia na strane webovej služby, ale aj na strane klientskej aplikácie. Prístup k etapám serializácie a deserializácie je nutná podmienka na šifrovanie a digitálne podpisovanie SOAP správ&lt;br /&gt;
&lt;br /&gt;
==Rozšírenie SOAP==&lt;br /&gt;
&lt;br /&gt;
Rozšírenie SOAP predstavuje mechanizmus  akým môžeme manipulovať so SOAP správami na strane klienta aj na strane webovej služby. Tento spôsob je veľmi flexibilný, o čom sa presvedčíme neskôr. Pokiaľ vytvoríme SOP rozšírenie, spracovanie SOAP správ prechádza 4 etapami &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''BeforeDeserialize'''. Táto sa spúšťa v okamihu, keď webový server, poprípade objekt proxy dostanú SOAP správu.&lt;br /&gt;
* '''AfterDeserialize'''. V tejto etape je nespracovaná (raw) SOAP správa prevedená na dátové typy platformy .NET Framework. Vykonáva sa ešte pred spustením  webovej metódy.&lt;br /&gt;
* '''BeforeSerialize. '''V tejto etape sa už spracováva kód webovej metódy, ale návratová hodnota webovej metódy nie je ešte serializovaná do SOAP správy.&lt;br /&gt;
* '''AfterSerialize'''. V tejto etape je návratová hodnota webovej metódy serializovaná do SOAP správy, ale tá ešte nie je odoslaná na klientsku aplikáciu.&lt;br /&gt;
V etapách '''BeforeDeserialize '''a''' AfterSerialize '''môžeme získať celý obsah SOAP správy. SOAP rozšírenie musí byť vykonávané aj na strane klienta, a to prostredníctvom objektu proxy. Celý proces spracovania SOAP správ je na Obr. 9.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_14.png|framed|center|Obr. 9.2  Serializácia a deserializácia SOAP správ]]&lt;br /&gt;
&lt;br /&gt;
==Vytvorenie SOAP rozšírenia==&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie na platforme .NET Framework sa skladá z 2 častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Samotného SOAP rozšírenia, reprezentovaného vlastnou triedou, ktorá musí byť vytvorená odvodením z triedy '''System.Web.Protocols.SoapExtension'''.&lt;br /&gt;
* Vlastného atribútu, ktorý sa použije u webovej metódy na indikáciu, že na danú webovú metódu sa má aplikovať SOAP rozšírenie. SOAP atribút sa vytvára odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút pre SOAP rozšírenie - SecureExtensionAttribute===&lt;br /&gt;
&lt;br /&gt;
Atribút SOAP rozšírenia umožňuje spojiť konkrétne rozšírenie SOAP s metódami webovej triedy. Vytvára sa odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Atribút pre SOAP rozšírenie je v našej webovej službe implementovaný prostredníctvom triedy''' SecureExtensionAttribute'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.5''' Atribút SoapExtension&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
 public class SecureExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
 {...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda pre SOAP rozšírenie obsahuje atribút AttributeUsage. Pomocou neho špecifikujeme oblasť použitia nášho atribútu. Náš atribút  bude teda použitý na  jednotlivé deklarácie webových metód.&lt;br /&gt;
&lt;br /&gt;
V našej triede pre SOAP rozšírenie je nutné prekryť 2 abstraktné vlastnosti, ktoré trieda získala odvodením z triedy System.Web.Protocols.SoapExtensionAttribute. Ide o vlastnosti &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Priority'''. Slúži na nastavenie poradia, v akom sa spracujú SOAP rozšírenia, pokiaľ ich je na webovú metódu nakonfigurovaných viacero.&lt;br /&gt;
* '''ExtensionType.''' Vracia objekt Type, ktorý reprezentuje našu vlastnú triedu pre SOAP rozšírenia.&lt;br /&gt;
Trieda '''SecureExtensionAttribute''' pre atribút SOAP rozšírenia implementuje metódu '''SoapElement''', pomocou ktorej budeme konfigurovať, ktoré časti SOAP správy budú šifrované. Konfigurácia sa vykonáva  prostredníctvom Xpath výrazu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Trieda  SOAP rozšírenia - SecureExtension===&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je implementované v našej webovej službe prostredníctvom triedy''' SecureExtension. '''Každá trieda pre SOAP rozšírenie musí byť vytvorená odvodením z '''System.Web.Protocols.SoapExtension. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. V Tab. 9.6 sú povinné metódy, ktoré musíme prekryť pri vytváraní triedy pre SOAP rozšírenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.6'''' Trieda SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class SecureExtension : SoapExtension&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.7''' Povinné metódy triedy SOAP rozšírenia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Metóda'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|GetInitializer()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri prvom  vykonaní SOAP rozšírenia. To umožňuje inicializovať hodnoty niektorých dát, ktoré sa použijú pri spracovaní SOAP správ. Takisto v tejto metóde môžeme extrahovať hodnoty atribútu pre SOAP rozšírenie. Táto metóda má dve verzie. Volá sa vždy len jedna, v závislosti od toho či je SOAP rozšírenie nakonfigurované prostredníctvom atribútu alebo konfiguračného súboru.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Initialize()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri každom  vykonaní SOAP rozšírenia.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ProcessMessage()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda vykonáva vlastné spracovanie SOAP rozšírenia, umožňuje modifikovať SOAP správy. V tejto metóde sú volané metódy pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ChainStream()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňuje získať prístup k SOAP bez prerušenia iných rozšírení.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda SOAP rozšírenia SecureExtension implementuje v sebe dve pomocné metódy :&lt;br /&gt;
&lt;br /&gt;
* '''RequestMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  dešifrovanie a overenie digitálneho podpisu SOAP požiadavky.&lt;br /&gt;
* '''ResponseMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  zašifrovanie a  digitálne podpísanie SOAP odpovede .&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je v podobnej forme, s malými zmenami,  implementované aj na strane klienta, s malými zmenami .&lt;br /&gt;
&lt;br /&gt;
===Metóda ProcessMessage===&lt;br /&gt;
&lt;br /&gt;
Metóda ProcessMessage je volaná ASP.NET v týchto štyroch etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''BeforeDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
2. '''AfterDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
3. '''BeforeSerialize,'''&lt;br /&gt;
&lt;br /&gt;
4. '''AfterSerialize.'''&lt;br /&gt;
&lt;br /&gt;
Etapa '''BeforeDeserialize'''  je prvou etapou spracovanie SOAP požiadavky od klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Načítanie hodnoty autentifikačného lístka z hlavičky SOAP správy od klienta.&lt;br /&gt;
* Overenie platnosti autentifikačného lístka. Autentifikačný lístok sa vydáva klientovi s obmedzenou časovou  platnosťou. V databáze na strane webovej služby je každá hodnota autentifikačného lístka spojená s časom, kedy bol lístok vydaný. Na základe hodnoty lístka sú načítané parametre AES šifry a verejný kľúč klienta.&lt;br /&gt;
* Po úspešnom overení lístka je  SOAP stream predaný na dešifrovanie a overenie digitálneho podpisu prostredníctvom pomocnej metódy '''RequestMessage. '''Proces dešifrovania a overenia digitálneho podpisu je vykonávaný triedou SecureExtensionUtilities. Táto trieda bude popísaná v samostatnej podkapitole.&lt;br /&gt;
Spracovanie SOAP správy  v etape BeforeDeserialize je znázornené na Obr. 9.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_15.png|framed|center|Obr. 9.3 Spracovanie SOAP správy v etape BeforeDeserialize]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Etapa''' AfterSerialize''' je poslednou etapou spracovania SOAP odpovede zasielanej na klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Predanie SOAP streamu na digitálne podpísanie a zašifrovanie SOAP správy prostredníctvom pomocnej metódy '''ResponseMessage'''.  Samotný proces šifrovania a digitálneho podpisovania je vykonávaný triedou SecureExtensionUtilities.&lt;br /&gt;
&lt;br /&gt;
Hlavnou  úlohou triedy SecureExtension  je:&lt;br /&gt;
&lt;br /&gt;
* Počiatočná autentifikácia klienta na základe hodnoty lístka v SOAP hlavičke.&lt;br /&gt;
* Načítanie AES parametrov a verejného kľúča z databázy.&lt;br /&gt;
* Predanie SOAP streamov na spracovanie triede '''SecureExtensionUtilities'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_16.png|framed|center|Obr. 9.4 Životný cyklus triedy SecureExtension]]&lt;br /&gt;
&lt;br /&gt;
==Šifrovanie a dešifrovanie==&lt;br /&gt;
&lt;br /&gt;
Úlohou šifrovania je zabezpečiť dôvernosť a integritu komunikácie na komunikačnej ceste, ktorú tvorí viacero uzlov, čiže  vykryť nedostatky technológie SSL. Šifrovanie SOAP správ predstavuje tzv. zabezpečenie na úrovni správ. V našej bezpečnostnej platforme je umožnené selektívne šifrovanie SOAP,  ktoré sa dá podľa potreby nastavovať pomocou atribútov SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
Šifrovanie a dešifrovanie SOAP správ je vykonávané v triede SecureExtensionUtilities. Skôr ako vysvetlíme, akým spôsobom je zabezpečená dôvernosť a integrita komunikácie, rozoberieme si nevýhody použitia samotnej technológie SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nevýhody technológie SSL===&lt;br /&gt;
&lt;br /&gt;
Veľmi rozšíreným spôsobom zabezpečenia komunikácie webových aplikácií je použitie technológie SSL, ktorú sme si popísali v podkapitole  4.1. Pre zabezpečenie webových služieb nie je táto technológia veľmi vhodná. Medzi obmedzenia SSL v spojitosti s XML webovými službami patrí:&lt;br /&gt;
&lt;br /&gt;
* SSL predstavuje tzv. end - to - end zabezpečenie komunikácie. Pokrytý je len odosielateľ a príjemca správy. Pre XML webové služby je  nutné zabezpečiť komunikáciu medzi každými dvoma uzlami komunikácie, ide o tzv. point – to – point zabezpečenia.&lt;br /&gt;
* SSL predstavuje zabezpečenie komunikácie iba na transporte. Pre webové služby je vhodnejšie zabezpečenie na úrovni správ. SSL je závislé na HTTP protokole.&lt;br /&gt;
* SSL šifruje celú komunikáciu,  neumožňuje selektívne šifrovanie a takisto nepodporuje v plnej miere mechanizmus nepopierateľnosti. Pre webové služby, ktoré sú súčasťou SOA, je selektívne šifrovanie nutnou podmienkou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_17.png|framed|center|Obr. 9.5  Point-to-point a end-to-end zabezpečenie]]&lt;br /&gt;
&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
&lt;br /&gt;
Pri počiatočnej výmene konfiguračného XML dokumentu je využitá asymetrická šifra RSA s využitím kľúčov z certifikátov webovej služby a klienta. Ďalšia komunikácia je šifrovaná pomocou symetrického šifrovacieho algoritmu. Ako šifrovací algoritmus sme zvolili  symetrický blokový algoritmus Rijndael, ktorý bol v roku 1997  vyhlásený  americkým úradom pre štandardizáciu (NIST) ako štandard. Dodnes nie sú známe dôkazy o jeho prelomení. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;23&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AES  predstavuje blokový šifrovací algoritmus so šírkou bloku 128 bitov a možnými dĺžkami kľúčov 128, 192 a 256. Rijndael podporuje aj voliteľné väčšie dátové bloky a kľúče  v 32- bitových prírastkoch, ale tie nie sú  zahrnuté v špecifikácii  štandardu AES. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;22&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trieda SecureExtensionUtilities==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté, SOAP správy sú šifrované pomocou symetrickej šifry Rijndael,  ktoré časti SOAP správy budú šifrované, je určené pomocou atribútov SOAP rozšírenia. Trieda SecureExtensionUtilities  zabezpečuje šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
&lt;br /&gt;
SecureExtensionUtilities   implementuje v sebe dve hlavné verejné metódy:&lt;br /&gt;
&lt;br /&gt;
* '''InSoap,'''&lt;br /&gt;
* '''OutSoap,'''&lt;br /&gt;
a tieto pomocné privátne metódy:&lt;br /&gt;
&lt;br /&gt;
* DecryptString, metóda dešifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* DecryptSoap, dešifruje XML dokument.&lt;br /&gt;
* VerifySignedSoap, overuje digitálny podpis SOAP správy.&lt;br /&gt;
* SingSoap, digitálne podpisuje SOAP správu na základe štandardu XML Signature.&lt;br /&gt;
* EncryptString, metóda šifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* EncryptSoap, šifruje XML dokument.&lt;br /&gt;
&lt;br /&gt;
Metóda''' InSoap''' spracováva stream SOAP  požiadavky od klienta. Táto metóda je volaná  v etape BeforeDeserialize metódy ProcessMessage. Ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
Ak nie je SOAP správa šifrovaná, metóda InSoap vráti ASP.NET vstupný SOAP prúd. Celý proces spracovania je znázornený na Obr. 9.3. Pokiaľ príde k zmene SOAP správy počas prenosu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený a nepríde k spracovaniu SOAP správy, či už na strane webovej služby, alebo na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
'''Overovanie digitálneho podpisu na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom, že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie. Na overovanie je použitý verejný kľúč zo serverového certifikátu webovej služby. Úlohou metódy InSoap je teda dešifrovať SOAP správu a overiť jej digitálny podpis.&lt;br /&gt;
&lt;br /&gt;
Metóda''' OutSoap''' spracováva stream SOAP  odpovede zasielaného na klienta. Táto metóda je volaná  v etape AfterSerialize metódy ProcessMessage. Metóda OutSoap ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
* X509Certificate2 webServiceCert, objekt typu X509Certificate2 predstavuje serverový certifikát so súkromným kľúčom, ktorý sa použije na digitálne podpísanie SOAP správy.&lt;br /&gt;
Úlohou tejto metódy je digitálne podpísať a zašifrovať SOAP správu. Každá zašifrovaná SOAP správa od klienta má v SOAP hlavičke umiestnený dodatočný '''element IsEncrypted''', ktorý slúži na identifikáciu, či je daná SOAP správa zašifrovaná. V Tab. 9.8 je ukážka zašifrovania SOAP správy&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.8''' Ukážka zašifrovanie SOAP správy&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
               xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
               xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
    &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Ticket&amp;gt;2541a182-8f4f-46c3-84f7-e667c221f494&amp;lt;/Ticket&amp;gt;&lt;br /&gt;
    &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
    &amp;lt;IsEncrypted /&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
&amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;SseReadPatient xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;Wk/C7PGSj/+fg2jQhQlUyg==&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;/SseReadPatient&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Digitálne podpisovanie SOAP správ je realizované prostredníctvom '''štandardu XML Signature''', ktorý sme si popísali v podkapitole 8.1. SOAP správy sú podpisované na strane servera prostredníctvom súkromného kľúča zo serverového certifikátu. Na strane klienta je digitálne podpisovanie realizované prostredníctvom  súkromného kľúča z klientskeho certifikátu. V Tab. 9.9 je ukážka podpísanej SOAP správy.&lt;br /&gt;
&lt;br /&gt;
'''Digitálne podpisovanie na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie.  Na podpísanie  SOAP správy je použitý súkromný kľúč z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.9''' Podpísaná SOAP správa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope:xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
	 xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;http://www.w3.org/TR/2001/REC-xml-c14n-20010315&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Transforms&amp;gt;&lt;br /&gt;
	           &amp;lt;Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt; &lt;br /&gt;
               &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
           &amp;lt;DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt; &lt;br /&gt;
           &amp;lt;DigestValue&amp;gt;2yfAuq6taP4kPBsFEM+J79F7ysM=&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
        &amp;lt;/Reference&amp;gt;&lt;br /&gt;
     &amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
     &amp;lt;SignatureValue&amp;gt;r2NmZyXtsku0WfbAJ4Kej/Kx0W0hAYCGAq7ltU7P5EN/NfQLYtZBCr97KHqNHkrEOqnU8Freg6&lt;br /&gt;
	                 hEg1LXBhrkmF86bOApHTfOrdzpeK1WjK/tKO2G+xigjD8/PBhQszRK/qfG54gdY3kJ/y/kmn/S&lt;br /&gt;
			 F+W49scLowecDxxeIx29UeI3m4yF8GoDGL3xjB/sEN78u8owdaBVcwkH2jIHWz6CiwPHk7YNLF&lt;br /&gt;
			 c/Q0/XqE/ieBnAB2i0gLbM377AdHr9qLwMHVG/M9RVyl0JkWnUI8Viwm3Y268xz7cNlTnfa3uT&lt;br /&gt;
			 hOGHMgmVDrBboHL44zZIBAZbsNsbqSPEipTMDVc7efC0Vg==&lt;br /&gt;
	 &amp;lt;/SignatureValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri digitálnom podpisovaní sme použili kanonizačný algoritmus na element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;SignedInfo&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Použitie je indikované prostredníctvom elementu CanonicalizationMethodAlgorithm. Je to z toho dôvodu, aby sme zabránili  rozdielnym výsledkom pri overovaní digitálneho podpisu. Nakoľko textová reprezentácia XML môže byť spracovaná rozdielne v závislosti použitého dátového prúdu (prázdne tagy, white space, komentáre...), kanonizácia definuje presnú fyzickú štruktúru dokumentu.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.10''' Zoznam algoritmom použitých pri digitálnom podpisovaní SOAP&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Algoritmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SHA1&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Hašovací algoritmus použitý pri výpočte hašu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|RSA&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kryptografický algoritmus použitý na vytvorenie digitálneho podpisu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|REC&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kanonizačný algoritmus.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sme si popísali  štruktúru triedy SecureExtensionUtilities, vysvetlili sme si akým spôsobom je spracovaný SOAP stream z triedy SOAP rozšírenia, a taktiež digitálne podpisovanie, verifikáciu, šifrovanie a dešifrovanie  SOAP správ.&lt;br /&gt;
&lt;br /&gt;
==Autorizácia v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Selektívne šifrovanie a digitálne podpisovanie má ochrániť samotnú komunikáciu medzi webovou službou a jej klientom. Úlohou autorizácie  je rozhodnúť, aké operácie bude môcť autentifikovaný užívateľ vykonávať a k akým zdrojom bude mať prístup na strane webovej služby. Pri vytváraní autorizačných pravidiel sme mali tieto možnosti:&lt;br /&gt;
&lt;br /&gt;
* Vytvoriť autorizačné pravidlá v konfiguračnom súbore webovej služby. Týmto spôsobom sme sa zaoberali v podkapitole 6.1.&lt;br /&gt;
* Namapovať klientske certifikáty na užívateľské účty systému Windows prostredníctvom IIS.&lt;br /&gt;
* Použiť niektorý zo spôsobov impersonácie, ktorými sme sa zaoberali v podkapitole 5.2.1.&lt;br /&gt;
Použitie autorizačných pravidiel v súbore web.config je relatívne flexibilný spôsob autorizácie, ale neposkytuje také pokročilé možnosti ako impersonácia. Rozhodli sme sa použiť programovú impersonáciu, a to z nasledujúcich dôvodov :&lt;br /&gt;
&lt;br /&gt;
* Umožňuje mapovanie klientskych certifikátov na užívateľské účty systému dvoma rôznymi spôsobmi :&lt;br /&gt;
*  One – to – one,&lt;br /&gt;
*  Many – to – one.&lt;br /&gt;
* Programová impersonácia nám umožní flexibilne nastaviť, ktorá časť programového kódu bude vykonávaná pod účtom Network Service a ktorá pod nami zvoleným užívateľským účtom. Tento spôsob sa prostredníctvom mapovania klientskych certifikátov na IIS nedá docieliť.&lt;br /&gt;
Proces programovej impersonácie je nasledovný :&lt;br /&gt;
&lt;br /&gt;
* V databáze je priradený ku každému klientskemu certifikátu jeden užívateľský účet  systému Windows.&lt;br /&gt;
* Pri úspešnej počiatočnej autentifikácii klienta  prostredníctvom certifikátu, sa jeho autentifikačný lístok namapuje na užívateľský účet.&lt;br /&gt;
Programová impersonácia je vykonávaná triedou UserImpersonation, ktorá obsahuje tieto metódy :&lt;br /&gt;
&lt;br /&gt;
* Login  - získa príznak účtu užívateľa Windows.&lt;br /&gt;
* Impersonate - spustí proces vykonávania programového kódu v kontexte identity užívateľského účtu. Pokiaľ  klientov autentifikačný lístok nie je namapovaný na užívateľský účet, programový kód bude vykonávaný pod účtom Network Service, ktorý predstavuje prednastavený účet pre spracovanie ASPNET na systéme Windows Server 2003.&lt;br /&gt;
* UndoImpersonate -  ukončí impersonáciu programového kódu.&lt;br /&gt;
Prostredníctvom užívateľských účtov Windows môžeme jednotlivým klientom webovej služby vyčleniť prístup k súborom na disku, k databáze a pod. Použitie triedy UserImpersonate  je znázornené v Tab. 9.11.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.11'''  Použitie triedy UserImpersonate&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
UserImpersonation  _objImp = new UserImpersonation();&lt;br /&gt;
 &lt;br /&gt;
_objImp.ReadUserAccount(Ticket.Ticket);&lt;br /&gt;
&lt;br /&gt;
_objImp.Login();&lt;br /&gt;
&lt;br /&gt;
_objImp.Impersonate();&lt;br /&gt;
&lt;br /&gt;
//programový kód, ktorý ma byť vykonáný pod inou identitou&lt;br /&gt;
&lt;br /&gt;
_objImp.UndoImpesonate();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Výhody SOAP Security Enhancement pre ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V minulosti sa na zabezpečenie ASP.NET webových služieb využívalo rozšírenie Web Services Enhancements (WSE) &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;25&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;26&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;27&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Súčasná verzia 3.0 nepodporuje ASP.NET webové služby. Preto je veľmi ťažké porovnať navrhovanú vlastnú bezpečnostnú platformu s nejakým oficiálnym spôsobom zabezpečenia. Jediným možným riešením bolo porovnať  spôsob zabezpečenia s rozšírením WSE 2.0. Tento produkt mal veľmi veľa problémov v oblasti interoperability  a takisto je zastaralý. Preto sme sa vyhli porovnaniu našej bezpečnostnej platformy s týmto rozšírením.&lt;br /&gt;
&lt;br /&gt;
:Naša bezpečnostná platforma poskytuje zabezpečenie na úrovni aplikácie a taktiež na úrovni správ. Poskytuje dva spôsoby autentifikácie :&lt;br /&gt;
&lt;br /&gt;
* Počiatočnú autentifikáciu založenú na certifikátoch X509. Výhodou tohto spôsobu autentifikácie je dobrá kontrola nad užívateľskými identitami.&lt;br /&gt;
* Autentifikáciu založenú na autentifikačných lístkoch v SOAP hlavičke. Výhodou tohto spôsobu autentifikácie je :&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky  a pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
&lt;br /&gt;
Integrita komunikácie je zabezpečená prostredníctvom digitálneho podpisovania na základe štandardu XML Signature. SOAP správy sú podpisované na základe privátnych kľúčov z certifikátov a overované na základe verejných kľúčov z certifikátov. Pokiaľ príde k zmene SOAP správy počas transferu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený  a nepríde k spracovaniu SOAP správy, či už na strane webovej služby,  alebo na strane klientskej aplikácie&lt;br /&gt;
&lt;br /&gt;
Dôvernosť komunikácie je založená na šifrovaní SOAP správ pomocou symetrického blokového algoritmu Rijndael. Výhody:&lt;br /&gt;
&lt;br /&gt;
* SOAP správy sú selektívne šifrované, chránené sú len potrebné dáta. Selektívne šifrovanie je nevyhnutná podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
* Výhodou voči štandardu XML Encryption je ten, že pri našom šifrovaní nedochádza k „deformácii&amp;quot; XML tagov.&lt;br /&gt;
* Šifrovací algoritmus môže byť upravený podľa potreby praxe.&lt;br /&gt;
* Šifrovanie je realizované prostredníctvom SOAP rozšírenia. To znamená, že šifruje už serializované dáta. Vďaka tomu môžeme šifrovať a digitálne podpisovať aj vlastné dátové typy.&lt;br /&gt;
* Oproti technológii SSL predstavuje náš spôsob zabezpečenia point  to point, čo je ďalšia podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
&lt;br /&gt;
Veľkú výhodu nášho zabezpečenia vidíme v spôsobe jeho samotného použitia. Celý mechanizmus ochrany SOAP správ sa aplikuje na webovú metódu prostredníctvom atribútu SOAP rozšírenia, ktorý predstavuje len dopísanie jedného riadku kódu nad webovú metódu.  Náš spôsob zabezpečenia nemení spracovanie programového kódu webovej metódy.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.12 je ukážka nastavenia šifrovania elementu body SOAP správy zasielanej ako odpoveď na klientsku aplikáciu. Elementy SOAP správy, ktoré majú byť zašifrované sa zadefinujú prostredníctvom Xpath výrazu pomocou vlastnosti SoapElement  triedy  atribútu SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.12''' Použitie atribútu SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebMethod]&lt;br /&gt;
[SecureExtension(SoapElement = &amp;quot;//soap:Body/*/*&amp;quot;)]&lt;br /&gt;
public DataSet GetDataSet()&lt;br /&gt;
{&lt;br /&gt;
 //kód webovej metódy&lt;br /&gt;
}       &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
V práci sme opísali technologické pozadie XML webových služieb a  ich štandardy. Zamerali sme sa na ASP.NET webové služby. Vysvetlili sme si spôsoby, akým môžeme vytvoriť bezpečnostný komunikačný scenár medzi webovou službou a jej klientom. Rozobrali sme jednotlivé možnosti autentifikácie, autorizácie klientov webovej služby,  spôsoby na zabezpečenie dôvernosti a integrity komunikácie. Uviedli sme ich  výhody a nevýhody,  ktoré so sebou prinášajú.&lt;br /&gt;
&lt;br /&gt;
Upozornili sme na hlavné chyby, ktoré vznikajú pri zabezpečovaní XML webových služieb. Ide hlavne o použitie technológie SSL a štandardu XML Encryption. Samotná technológia SSL nie je postačujúca na zabezpečenie komunikácie medzi webovou službou a jej klientom, nakoľko predstavuje zabezpečenie na úrovni komunikačného kanála  a predstavuje tzv. end – to  – end zabezpečenie. To nie je veľmi vhodné pre XML webové služby, kedže v praxi bývajú súčasťou SOA. SOA architektúra vyžaduje selektívne šifrovanie, ktoré nie je možné dosiahnuť so štandardom XML Encryption. Pri použití tohto štandardu dochádza taktiež k deformácii XML tagov. Cieľom bezpečnostnej platformy bolo odstránenie týchto nedostatkov. Bezpečnostná platforma predstavuje zabezpečenie na úrovni aplikácie a tiež na úrovni správ. Počiatočná autentifikácia je realizovaná na základe certifikátov X509, pri volaní ďalších webových metód je klient autentifikovaný na základe autentifikačného lístka v SOAP hlavičke. Dĺžka platnosti autentifikačného lístka sa dá flexibilne meniť podľa potreby. SOAP správy sú selektívne šifrované pomocou AES, tým je dosiahnuté utajenie komunikácie. Integrita je zabezpečená prostredníctvom digitálneho podpisovania SOAP správ. Naša bezpečnostná platforma poskytuje autorizačný mechanizmus prostredníctvom programovej impersonácie.&lt;br /&gt;
&lt;br /&gt;
Na otestovanie funkčnosti zabezpečenia komunikácie XML ASP.NET webovej služby  bola vytvorená WinForms klientska aplikácia.&lt;br /&gt;
&lt;br /&gt;
=Použitá literatúra=&lt;br /&gt;
#MacDonald, Matthew., Beginning ASP.NET 3.5 in C# 2008: From Novice to Professional, Apress, 2007.  ISBN 978-1590598917&lt;br /&gt;
#Troelsen, Andrew., Pro C# 2008 and the .NET 3.5 Platform, Apress, 2007. ISBN 978-1590598849&lt;br /&gt;
#Glynn, Jay.,  Skinner, Morgan., Professional C# 2008, Wrox, 2008. ISBN  978-0470191378&lt;br /&gt;
#MacDonald, Matthew., Szpuszta, Mario., Pro ASP.NET 2.0 in C# 2005, Apress, 2005. ISBN 978-1590594964&lt;br /&gt;
#Foggon, Damien.,  Maharry, Daniel., Ullman, Chris., Watson, Karli., Programming Microsoft .NET XML Web Services, Microsoft Press, 2003. ISBN 978-0735619128&lt;br /&gt;
#Jones, Allen .,  Microsoft .NET XML Web Services Step by Step, Microsoft Press, 2002. ISBN13: 978-0735617209&lt;br /&gt;
#Eide, Andreas.,  Miller, Chris.,  Sempf, Bill Sempf., Professional ASP.NET Web Services,  Wrox Press, 2001. ISBN 978-1861005458&lt;br /&gt;
#Kurt, Chris., Web Services Architecture and Its Specifications: Essentials for Understanding WS, Microsoft Press, 2005. ISBN 978-0735621626&lt;br /&gt;
#Krowczyk, Andrew., Greenvoss, Zach., Banerjee. Ashish., Professional C# Web Services: Building .NET Web Services with ASP.NET and .NET Remoting, Wrox Press, 2001. ISBN 978-1861004390&lt;br /&gt;
#www.w3.org [online]. last updated: 2007-06-05 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/soap/&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2001-03-14 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/wsdl/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm&amp;gt;&lt;br /&gt;
#O'Neill, Mark., Web Services Security, McGraw-Hill Osborne Media, 2003. ISBN 978-0072224719&lt;br /&gt;
#Hartman, Bret.,  Flinn, Donald., Beznosov, Konstantin. Mastering Web Services Security, 2003. ISBN 978-0471267164&lt;br /&gt;
#Nantz, Brian., Expert Web Services Security in the .NET Platform, Apress, 2004. ISBN 978-1590591154&lt;br /&gt;
#Microsoft, Vytváříme zabezpečené aplikace v Microsoft ASP.NET, Computer Press, 2004. ISBN 80-251-0466-4&lt;br /&gt;
#www.w3.org [online]. last updated: 2008-06-10 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmldsig-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2002-12-13 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmlenc-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2004-03-26 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/MarkUp/SGML/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2005-12-20 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/XMKS/ &amp;gt;&lt;br /&gt;
#Rijmen, Vincent., The Design of Rijndael: AES - The Advanced Encryption Standard, Springer, 2002. ISBN 978-3540425809&lt;br /&gt;
#Tom, Denis., Cryptography for Developers, Syngress, 2007. ISBN 978-1597491044&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#Microsoft Corporation, Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0, Microsoft Press, 2006. ISBN 978-0735623149&lt;br /&gt;
#Hasan, Jeffrey., Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0, Apress, 2004. ISBN 978-1590593905&lt;br /&gt;
#Evjen, Bill., Web Services Enhancements: Understanding the WSE for .NET Enterprise Applications, Wiley, 2003. ISBN 978-0764537363&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/72wdk8cc(VS.71).aspx&lt;br /&gt;
#http://www.oasis-open.org [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/ms229335.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/e80y5yhx%28VS.80%29.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx&lt;br /&gt;
#Dostálek, Libor., Vohnoutová, Marta., Velký průvodce infrastrukturou PKI a technologií elektronického podpisu, 2006. ISBN 80-251-0828-7&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/cc488021.aspx&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5085</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5085"/>
		<updated>2010-06-11T12:48:55Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Porovnanie XML webových služieb s technológiou COM a CORBA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;  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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
&lt;br /&gt;
* komunikačné protokoly,&lt;br /&gt;
* formáty na popis dát,&lt;br /&gt;
* popisné jazyky,&lt;br /&gt;
* mechanizmy na „objavovanie&amp;quot; XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
&lt;br /&gt;
* Simple Object Access Protocol,&lt;br /&gt;
* Web Service Description Language,&lt;br /&gt;
* Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument má jeden koreňový prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;) '''a telo správy (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''). Formát SOAP správy je znázornený na obrázku 1.3.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
* RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* literal,&lt;br /&gt;
* SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* SOAP 1.1,&lt;br /&gt;
* SOAP 1.2.&lt;br /&gt;
&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri obálky sa nachádza nepovinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''a povinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. V Tab. 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* názov webovej metódy,&lt;br /&gt;
* počet, typy a poradie parametrov,&lt;br /&gt;
* typ návratovej hodnoty,&lt;br /&gt;
* volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;types&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;portType&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;binding&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;service&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' definujú protokol. WSDL dokument má jeden koreňový element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;definitions&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;6&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:types&amp;gt;&amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:message&amp;gt;&amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:portType &amp;gt;&amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:binding&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:service&amp;gt;&amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis hlavných elementov WSDL dokumentu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;11&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''PortType'''. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
* '''Binding.''' Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
* '''Service.''' Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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 &amp;quot;first WSDL&amp;quot; (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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; 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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;12&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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é. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Ďalším problémom, ktorý je výrazný, je to, že nikto nezaručuje dôveryhodnosť poskytovateľov služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;8&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
&lt;br /&gt;
* Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
* 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.)&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
&lt;br /&gt;
* Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, prípadne použije klient UDDI.&lt;br /&gt;
* Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
* Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
* Tá spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
* Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5084</id>
		<title>SOAP Security Enhancement pre ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5084"/>
		<updated>2010-06-11T12:48:36Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Záver */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|9|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=SOAP Security Enhancement pre ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich dvoch kapitolách sme si opísali teoretické možnosti zabezpečenia XML ASP.NET webových služieb a štandardy zamerané na bezpečnosť XML. Táto kapitola sa zaoberá vývojom vlastnej bezpečnostnej platformy pre XML ASP.NET webové služby v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, ktorú sme nazvali SOAP Security Enhancement (SSE) Naša bezpečnostná platforma bude predstavovať zabezpečenie na úrovni správ a tiež na úrovni aplikácie. Pri vytváraní  bezpečnostného systému pre webové aplikácie  treba zabezpečiť:&lt;br /&gt;
&lt;br /&gt;
* Mechanizmus pre overovanie klientskych aplikácií. Možnosti overovania klientov sme si podrobne rozobrali v kapitolách 5, 5.1, 5.2, 5.3.&lt;br /&gt;
* Mechanizmus pre autorizáciu klientov overených webovou službou. Spôsobmi autorizácie sme sa zaoberali kapitolách 5.1, kde sme sa zaoberali autorizáciou s využitým webového servera IIS a takisto autorizáciou prostredníctvom konfiguračného súboru webovej služby, ktorú sme si  opísali v kapitole 6.&lt;br /&gt;
* Mechanizmus pre zabezpečenie dôvernosti a integrity komunikácie. Spôsobov na vytvorenie bezpečnej komunikačnej linky je viacero. Najrozšírenejší spôsob je použitie technológie SSL, ktorou sme sa zaoberali v podkapitole 4.1. Táto technológia má aj svoje nedostatky, ktoré sme načrtli v kapitole  7 a s ktorými sa oboznámime v podkapitole 9.7.1.&lt;br /&gt;
V príslušných kapitolách sme vysvetlili výhody, nevýhody a oblasti použitia daných mechanizmov pre autentifikáciu, autorizáciu a zabezpečenie dôvernosti a integrity komunikácie. V tejto kapitole ponúkame vlastný komplexný spôsob, ako zabezpečiť komunikáciu medzi XML ASP.NET webovou službou a klientskou aplikáciou na platforme .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.1 sú prehľadne opísané spôsoby a technológie, ktoré použijeme na autentifikáciu, autorizáciu a  zabezpečenie dôvernosti a integrity komunikácie. Tie podrobnejšie popíšeme a vysvetlíme nasledujúcich podkapitolách.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.1'''  Popis technológií použitých pri vlastnej bezpečnostnej platforme&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Mechanizmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Technológia'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autentifikácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Certifikát X509'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia bude realizovaná prostredníctvom programovej impersonácie, ktorú sme si vysvetlili v podkapitole 5.2.1. &lt;br /&gt;
|-&lt;br /&gt;
|Integrita a dôvernosť komunikácie&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Integrita a dôvernosť komunikácie bude zabezpečená prostredníctvom selektívneho šifrovania SOAP správ s využitím Advanced Encryption Standard  a prostredníctvom digitálneho podpisovania SOAP správ pomocou certifikátov X509 s využitím štandardu XML Signature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Štruktúra SOAP Security Enhancement  z objektovo-orientovaného prístupu==&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.2 sú prehľadne opísané základné programové triedy bezpečnostnej platformy spolu s ich funkcionalitou. Podrobnejšie budú opísané v príslušných podkapitolách.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.2''' Triedy bezpečnostnej platformy &lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Názov triedy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AbstractDatabase&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda vytvorená podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DbProvider&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda pre prístup k MS SQL databázovému úložisku. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtension&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda SOAP rozšírenia umožňuje prístup k SOAP   správam v rôznych etapách spracovania. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje atribút SOAP rozšírenia, pomocou ktorého sa špecifikujú konkrétne časti (elementy) SOAP správy ktoré budú šifrované a digitálne podpísané.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda obsahuje metódy na šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Zabezpečuje autentifikáciu klienta, vygenerovanie parametrov AES šifry a vytvorenie konfiguračného XML dokumentu obsahujúce parametre pre bezpečnú komunikáciu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TicketIdentity&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda  reprezentuje autentifikačný lístok umiestnený v SOAP hlavičke klienta.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserData&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje „data object“ reprezentujúci údaje pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserImpersonation&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TTrieda zabezpečuje mechanizmus autorizácie prostredníctvom Windows impersonácie.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia klientov v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Možnosti na overovanie klientov pre XML ASP.NET webové služby sú značne obmedzené. Kedže webová služba neposkytuje žiaden vstavaný spôsob akým, by mohol užívateľ predložiť prihlasovacie údaje, napríklad webový formulár. Najrozšírenejšie spôsoby overovania klientov webovou službou sú tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Autentifikácie Windows. Tento typ nie je veľmi flexibilný a má veľa nedostatkov, ktoré sme si opísali v kapitole 5.1.&lt;br /&gt;
* Vlastný typ autentifikačného procesu založeného na prihlasovacích lístkoch  s využitím SOAP rozšírenia.&lt;br /&gt;
* Použitie klientskych certifikátov X509.&lt;br /&gt;
&lt;br /&gt;
Autentifikáciu založenú na certifikátoch X509 sme zvolili z nasledujúcich dôvodov:&lt;br /&gt;
&lt;br /&gt;
1. Použitie klientskych certifikátov dáva značnú kontrolu nad užívateľskými identitami, nakoľko  certifikáty sú vydávané  certifikačnou autoritou, ktorá býva zvyčajne pod kontrolou administrátora servera, na ktorom môže byť hosťovaná webová služba. Tak isto je možné klientske certifikáty mapovať na užívateľské účty Windows, či už  priamo na webovom serveri IIS alebo priamo programovo vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
2. Certifikáty X509 predstavujú účinnú ochranu proti  podvrhnutiu falošného verejného kľúča ( Man-in-the-Middle Attack &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;36&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ).&lt;br /&gt;
&lt;br /&gt;
3. Tak isto predstavuje účinný mechanizmus na zabezpečenie toho, že vlastník verejného kľúča má k nemu zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
Certifikátom sme sa podrobnejšie venovali v podkapitole 4.1.1. Na vystavenie klientskych certifikátov sme  vytvorili vlastnú testovaciu certifikačnú autoritu na operačnom systéme Windows Server 2003.&lt;br /&gt;
&lt;br /&gt;
Počiatočnú autentifikáciu sme sa rozhodli teda realizovať prostredníctvom klientskych certifikátov X509. Na korektný prenos certifikátov X509 je nutný HTTPS prenos.&lt;br /&gt;
&lt;br /&gt;
Kedže použitie technológie SSL má aj nedostatky a pri prenose veľkého množstva dát je náročné, rozhodli sme sa, že HTTPS kanál bude použitý  pri komunikácii klienta a webovej služby iba raz, a to pri počiatočnom volaní webovej metódy, ktorá zabezpečí overenie klienta na základe klientskeho certifikátu X509. Následne bude klientovi vydaný „autentifikačný lístok&amp;quot;, ktorý bude umiestnený do SOAP hlavičky. Lístok obsahuje  128  bitové jedinečné číslo, ktoré  identifikuje užívateľa pri nasledujúcich volaniach webových metód, a je použitý na jeho overenie. Lístok sa vydáva klientovi s určitou časovou platnosťou, ktorú je možné podľa potreby a priority meniť.&lt;br /&gt;
&lt;br /&gt;
Hodnota ID  v autentifikačnom lístku je uložená spolu s príslušnými údajmi z klientskeho certifikátu do relačnej databázy, ktorú webová služba používa na ďalšie overovanie klienta pri volaní webových metód.&lt;br /&gt;
&lt;br /&gt;
Proces prvotnej autentifikácie je nasledovný. Pri počiatočnom prístupe klienta k webovej službe musí klient zavolať webovú metódu '''CreateConnection''' webovej služby. Metóda&lt;br /&gt;
&lt;br /&gt;
CreateConnection plní v komunikačnom scenári nasledujúce funkcie:&lt;br /&gt;
&lt;br /&gt;
* Overenie klientskeho certifikátu.&lt;br /&gt;
* Vytvorenie SOAP hlavičky s užívateľským ID.&lt;br /&gt;
* Zápis príslušných parametrov z klientskeho certifikátu do databázy.&lt;br /&gt;
* Vygenerovanie a zaslanie parametrov AES, ktoré sú použité na šifrovanie SOAP správ.&lt;br /&gt;
Prostredníctvom vlastnosti''' Context''', ktorú trieda webovej služby  získala odvodením z abstraktnej triedy WebService (pozri podkapitola 2.1),  je extrahovaný klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.3''' Extrahovanie klientského certifikátu z vlastnosti Context&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
X509Certificate2 cert = new X509Certificate2(Context.Request.ClientCertificate.Certificate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Následne je klientsky certifikát overený na revokáciu a dôveryhodnosť certifikačnej autority.&lt;br /&gt;
&lt;br /&gt;
Pokiaľ je certifikát klienta úspešne overený,  webová metóda CreateConnection vygeneruje hodnotu ID v autentifikačnom lístku.&lt;br /&gt;
&lt;br /&gt;
Po vygenerovaní ID pre overeného klienta sú údaje z klientskeho certifikátu (verejný kľúč a common name), ID klienta spolu s  dátumom a časom vytvorenia lístka zapísané do databázy. Následne je vytvorená SOAP hlavička , do ktorej je umiestnené ID užívateľa.&lt;br /&gt;
&lt;br /&gt;
Výhoda vlastného autentifikačného systému na lístkoch:&lt;br /&gt;
&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód  nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
Parametre AES šifry sú zaslané webovou metódou''' CreateConnection''' vo forme XML dokumentu. XML dokument je zašifrovaný pomocou RSA šifry s využitím verejného kľúča z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
XML dokument obsahuje parametre AES šifry a takisto verejný kľúč z certifikátu servera, na overenie digitálneho podpisu SOAP správy webovej služby.&lt;br /&gt;
&lt;br /&gt;
Zašifrované XML je  na strane klienta dešifrované pomocou súkromného kľúča z patričného klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
Parametre AES šifry využíva objekt proxy na šifrovanie SOAP požiadaviek klienta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.4''' Autentifikačný lístok v SOAP hlavičke&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
       &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Ticket&amp;gt;f84bd797-8ea5-463c-9319-5d952ec30207&amp;lt;/Ticket&amp;gt; &lt;br /&gt;
       &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
   &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_13.png|framed|center|Obr. 9.1 Autentifikačný proces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis autentifikačného procesu na Obr. 9.1 :&lt;br /&gt;
&lt;br /&gt;
1. Načítanie klientskeho certifikátu z úložiska.&lt;br /&gt;
&lt;br /&gt;
2. Pridanie certifikátu k objektu proxy a zavolanie webovej metódy CreateConnection.&lt;br /&gt;
&lt;br /&gt;
3. Autentifikácia klientskeho certifikátu, vydanie autentifikačného lístka, ak bol certifikát prijatý.&lt;br /&gt;
&lt;br /&gt;
4. Pri následnom volaní webovej metódy sa autentifikácia klienta vykoná na základe autentifikačného lístka a komunikácia prebieha cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Databázové úložisko==&lt;br /&gt;
&lt;br /&gt;
Ako sme v predchádzajúcej podkapitole spomenuli, informácie o autentifikovanom klientovi sú na strane webovej služby uchovávané v relačnej databáze, konkrétne MS SQL. Pre komunikáciu s databázovým úložiskom sme mohli použiť nasledujúce technológie:&lt;br /&gt;
&lt;br /&gt;
1. LINQ to SQL &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;32&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
2. ADO.NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LINQ to SQL poskytuje niektoré pokročilé možnosti v porovnaní s ADO.NET. Avšak samotná technológia ADO.NET poskytuje dostatočnú podporu pre rôzne DBMS &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* MS SQL Server,&lt;br /&gt;
* MS SQL Mobile Server,&lt;br /&gt;
* Oracle,&lt;br /&gt;
* MySQL,&lt;br /&gt;
* ODBC,&lt;br /&gt;
* OLEDB.&lt;br /&gt;
V praktickej časti sme vytvorili triedu AbstractDatabase podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS. Tým je zabezpečená možnosť upraviť databázové úložisko pre potreby praxe. Pri komplexnej podnikovej aplikácii by bolo najvýhodnejšie použiť ORM Framework napr. NHibernate.  Dosiahli by sme separáciu objektového kódu od databázového kódu a znížili závislosť  logickej vrstvy od bussines vrstvy. Použitie ORM Frameworku je nad rámec tejto práce, ale považovali sme za vhodné ho spomenúť.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spracovanie SOAP správ==&lt;br /&gt;
&lt;br /&gt;
Jedným z prvkov na zabezpečenie integrity a dôvernosti komunikácie medzi klientskou aplikáciou a XML ASP.NET webovou službou je mechanizmus šifrovania a digitálneho podpisovania SOAP správ'''. '''Predtým, než si opíšeme spôsob, akým sú šifrované a podpisované SOAP správy, sa musíme oboznámiť so spôsobom, akým sú spracovávané SOAP správy na strane webovej služby aj na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
Spracovávanie SOAP správ na strane webovej služby, ale aj na strane klienta prebieha v 2 etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Serializácia.''' Požiadavka klienta alebo odpoveď webovej služby je serializovaná ako XML schéma.&lt;br /&gt;
&lt;br /&gt;
2. '''Deserializácia'''. SOAP správa je deserializovaná na dátové typy.&lt;br /&gt;
&lt;br /&gt;
Aby sme  mohli pristupovať k jednotlivým etapám spracovania SOAP správ, musíme implementovať mechanizmus SOAP rozšírenia na strane webovej služby, ale aj na strane klientskej aplikácie. Prístup k etapám serializácie a deserializácie je nutná podmienka na šifrovanie a digitálne podpisovanie SOAP správ&lt;br /&gt;
&lt;br /&gt;
==Rozšírenie SOAP==&lt;br /&gt;
&lt;br /&gt;
Rozšírenie SOAP predstavuje mechanizmus  akým môžeme manipulovať so SOAP správami na strane klienta aj na strane webovej služby. Tento spôsob je veľmi flexibilný, o čom sa presvedčíme neskôr. Pokiaľ vytvoríme SOP rozšírenie, spracovanie SOAP správ prechádza 4 etapami &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''BeforeDeserialize'''. Táto sa spúšťa v okamihu, keď webový server, poprípade objekt proxy dostanú SOAP správu.&lt;br /&gt;
* '''AfterDeserialize'''. V tejto etape je nespracovaná (raw) SOAP správa prevedená na dátové typy platformy .NET Framework. Vykonáva sa ešte pred spustením  webovej metódy.&lt;br /&gt;
* '''BeforeSerialize. '''V tejto etape sa už spracováva kód webovej metódy, ale návratová hodnota webovej metódy nie je ešte serializovaná do SOAP správy.&lt;br /&gt;
* '''AfterSerialize'''. V tejto etape je návratová hodnota webovej metódy serializovaná do SOAP správy, ale tá ešte nie je odoslaná na klientsku aplikáciu.&lt;br /&gt;
V etapách '''BeforeDeserialize '''a''' AfterSerialize '''môžeme získať celý obsah SOAP správy. SOAP rozšírenie musí byť vykonávané aj na strane klienta, a to prostredníctvom objektu proxy. Celý proces spracovania SOAP správ je na Obr. 9.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_14.png|framed|center|Obr. 9.2  Serializácia a Deserializácia SOAP správ]]&lt;br /&gt;
&lt;br /&gt;
==Vytvorenie SOAP rozšírenia==&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie na platforme .NET Framework sa skladá z 2 častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Samotného SOAP rozšírenia, reprezentovaného vlastnou triedou, ktorá musí byť vytvorená odvodením z triedy '''System.Web.Protocols.SoapExtension'''.&lt;br /&gt;
* Vlastného atribútu, ktorý sa použije u webovej metódy na indikáciu, že na danú webovú metódu sa má aplikovať SOAP rozšírenie. SOAP atribút sa vytvára odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút pre SOAP rozšírenie - SecureExtensionAttribute===&lt;br /&gt;
&lt;br /&gt;
Atribút SOAP rozšírenia umožňuje spojiť konkrétne rozšírenie SOAP s metódami webovej triedy. Vytvára sa odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Atribút pre SOAP rozšírenie je v našej webovej službe implementovaný prostredníctvom triedy''' SecureExtensionAttribute'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.5''' Atribút SoapExtension&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
 public class SecureExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
 {...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda pre SOAP rozšírenie obsahuje atribút AttributeUsage. Pomocou neho špecifikujeme oblasť použitia nášho atribútu. Náš atribút  bude teda použitý na  jednotlivé deklarácie webových metód.&lt;br /&gt;
&lt;br /&gt;
V našej triede pre SOAP rozšírenie je nutné prekryť 2 abstraktné vlastnosti, ktoré trieda získala odvodením z triedy System.Web.Protocols.SoapExtensionAttribute. Ide o vlastnosti &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Priority'''. Slúži na nastavenie poradia, v akom sa spracujú SOAP rozšírenia, pokiaľ ich je na webovú metódu nakonfigurovaných viacero.&lt;br /&gt;
* '''ExtensionType.''' Vracia objekt Type, ktorý reprezentuje našu vlastnú triedu pre SOAP rozšírenia.&lt;br /&gt;
Trieda '''SecureExtensionAttribute''' pre atribút SOAP rozšírenia implementuje metódu '''SoapElement''', pomocou ktorej budeme konfigurovať, ktoré časti SOAP správy budú šifrované. Konfigurácia sa vykonáva  prostredníctvom Xpath výrazu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Trieda  SOAP rozšírenia - SecureExtension===&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je implementované v našej webovej službe prostredníctvom triedy''' SecureExtension. '''Každá trieda pre SOAP rozšírenie musí byť vytvorená odvodením z '''System.Web.Protocols.SoapExtension. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. V Tab. 9.6 sú povinné metódy, ktoré musíme prekryť pri vytváraní triedy pre SOAP rozšírenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.6'''' Trieda SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class SecureExtension : SoapExtension&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.7''' Povinné metódy triedy SOAP rozšírenia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Metóda'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|GetInitializer()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri prvom  vykonaní SOAP rozšírenia. To umožňuje inicializovať hodnoty niektorých dát, ktoré sa použijú pri spracovaní SOAP správ. Takisto v tejto metóde môžeme extrahovať hodnoty atribútu pre SOAP rozšírenie. Táto metóda má dve verzie. Volá sa vždy len jedna, v závislosti od toho či je SOAP rozšírenie nakonfigurované prostredníctvom atribútu alebo konfiguračného súboru.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Initialize()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri každom  vykonaní SOAP rozšírenia.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ProcessMessage()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda vykonáva vlastné spracovanie SOAP rozšírenia, umožňuje modifikovať SOAP správy. V tejto metóde sú volané metódy pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ChainStream()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňuje získať prístup k SOAP bez prerušenia iných rozšírení.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda SOAP rozšírenia SecureExtension implementuje v sebe dve pomocné metódy :&lt;br /&gt;
&lt;br /&gt;
* '''RequestMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  dešifrovanie a overenie digitálneho podpisu SOAP požiadavky.&lt;br /&gt;
* '''ResponseMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  zašifrovanie a  digitálne podpísanie SOAP odpovede .&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je v podobnej forme, s malými zmenami,  implementované aj na strane klienta, s malými zmenami .&lt;br /&gt;
&lt;br /&gt;
===Metóda ProcessMessage===&lt;br /&gt;
&lt;br /&gt;
Metóda ProcessMessage je volaná ASP.NET v týchto štyroch etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''BeforeDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
2. '''AfterDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
3. '''BeforeSerialize,'''&lt;br /&gt;
&lt;br /&gt;
4. '''AfterSerialize.'''&lt;br /&gt;
&lt;br /&gt;
Etapa '''BeforeDeserialize'''  je prvou etapou spracovanie SOAP požiadavky od klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Načítanie hodnoty autentifikačného lístka z hlavičky SOAP správy od klienta.&lt;br /&gt;
* Overenie platnosti autentifikačného lístka. Autentifikačný lístok sa vydáva klientovi s obmedzenou časovou  platnosťou. V databáze na strane webovej služby je každá hodnota autentifikačného lístka spojená s časom, kedy bol lístok vydaný. Na základe hodnoty lístka sú načítané parametre AES šifry a verejný kľúč klienta.&lt;br /&gt;
* Po úspešnom overení lístka je  SOAP stream predaný na dešifrovanie a overenie digitálneho podpisu prostredníctvom pomocnej metódy '''RequestMessage. '''Proces dešifrovania a overenia digitálneho podpisu je vykonávaný triedou SecureExtensionUtilities. Táto trieda bude popísaná v samostatnej podkapitole.&lt;br /&gt;
Spracovanie SOAP správy  v etape BeforeDeserialize je znázornené na Obr. 9.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_15.png|framed|center|Obr. 9.3 Spracovanie SOAP správy v etape BeforeDeserialize]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Etapa''' AfterSerialize''' je poslednou etapou spracovania SOAP odpovede zasielanej na klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Predanie SOAP streamu na digitálne podpísanie a zašifrovanie SOAP správy prostredníctvom pomocnej metódy '''ResponseMessage'''.  Samotný proces šifrovania a digitálneho podpisovania je vykonávaný triedou SecureExtensionUtilities.&lt;br /&gt;
&lt;br /&gt;
Hlavnou  úlohou triedy SecureExtension  je:&lt;br /&gt;
&lt;br /&gt;
* Počiatočná autentifikácia klienta na základe hodnoty lístka v SOAP hlavičke.&lt;br /&gt;
* Načítanie AES parametrov a verejného kľúča z databázy.&lt;br /&gt;
* Predanie SOAP streamov na spracovanie triede '''SecureExtensionUtilities'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_16.png|framed|center|Obr. 9.4 Životný cyklus triedy SecureExtension]]&lt;br /&gt;
&lt;br /&gt;
==Šifrovanie a dešifrovanie==&lt;br /&gt;
&lt;br /&gt;
Úlohou šifrovania je zabezpečiť dôvernosť a integritu komunikácie na komunikačnej ceste, ktorú tvorí viacero uzlov, čiže  vykryť nedostatky technológie SSL. Šifrovanie SOAP správ predstavuje tzv. zabezpečenie na úrovni správ. V našej bezpečnostnej platforme je umožnené selektívne šifrovanie SOAP,  ktoré sa dá podľa potreby nastavovať pomocou atribútov SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
Šifrovanie a dešifrovanie SOAP správ je vykonávané v triede SecureExtensionUtilities. Skôr ako vysvetlíme, akým spôsobom je zabezpečená dôvernosť a integrita komunikácie, rozoberieme si nevýhody použitia samotnej technológie SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nevýhody technológie SSL===&lt;br /&gt;
&lt;br /&gt;
Veľmi rozšíreným spôsobom zabezpečenia komunikácie webových aplikácií je použitie technológie SSL, ktorú sme si popísali v podkapitole  4.1. Pre zabezpečenie webových služieb nie je táto technológia veľmi vhodná. Medzi obmedzenia SSL v spojitosti s XML webovými službami patrí:&lt;br /&gt;
&lt;br /&gt;
* SSL predstavuje tzv. end - to - end zabezpečenie komunikácie. Pokrytý je len odosielateľ a príjemca správy. Pre XML webové služby je  nutné zabezpečiť komunikáciu medzi každými dvoma uzlami komunikácie, ide o tzv. point – to – point zabezpečenia.&lt;br /&gt;
* SSL predstavuje zabezpečenie komunikácie iba na transporte. Pre webové služby je vhodnejšie zabezpečenie na úrovni správ. SSL je závislé na HTTP protokole.&lt;br /&gt;
* SSL šifruje celú komunikáciu,  neumožňuje selektívne šifrovanie a takisto nepodporuje v plnej miere mechanizmus nepopierateľnosti. Pre webové služby, ktoré sú súčasťou SOA, je selektívne šifrovanie nutnou podmienkou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_17.png|framed|center|Obr. 9.5  Point-to-point a end-to-end zabezpečenie]]&lt;br /&gt;
&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
&lt;br /&gt;
Pri počiatočnej výmene konfiguračného XML dokumentu je využitá asymetrická šifra RSA s využitím kľúčov z certifikátov webovej služby a klienta. Ďalšia komunikácia je šifrovaná pomocou symetrického šifrovacieho algoritmu. Ako šifrovací algoritmus sme zvolili  symetrický blokový algoritmus Rijndael, ktorý bol v roku 1997  vyhlásený  americkým úradom pre štandardizáciu (NIST) ako štandard. Dodnes nie sú známe dôkazy o jeho prelomení. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;23&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AES  predstavuje blokový šifrovací algoritmus so šírkou bloku 128 bitov a možnými dĺžkami kľúčov 128, 192 a 256. Rijndael podporuje aj voliteľné väčšie dátové bloky a kľúče  v 32- bitových prírastkoch, ale tie nie sú  zahrnuté v špecifikácii  štandardu AES. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;22&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trieda SecureExtensionUtilities==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté, SOAP správy sú šifrované pomocou symetrickej šifry Rijndael,  ktoré časti SOAP správy budú šifrované, je určené pomocou atribútov SOAP rozšírenia. Trieda SecureExtensionUtilities  zabezpečuje šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
&lt;br /&gt;
SecureExtensionUtilities   implementuje v sebe dve hlavné verejné metódy:&lt;br /&gt;
&lt;br /&gt;
* '''InSoap,'''&lt;br /&gt;
* '''OutSoap,'''&lt;br /&gt;
a tieto pomocné privátne metódy:&lt;br /&gt;
&lt;br /&gt;
* DecryptString, metóda dešifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* DecryptSoap, dešifruje XML dokument.&lt;br /&gt;
* VerifySignedSoap, overuje digitálny podpis SOAP správy.&lt;br /&gt;
* SingSoap, digitálne podpisuje SOAP správu na základe štandardu XML Signature.&lt;br /&gt;
* EncryptString, metóda šifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* EncryptSoap, šifruje XML dokument.&lt;br /&gt;
&lt;br /&gt;
Metóda''' InSoap''' spracováva stream SOAP  požiadavky od klienta. Táto metóda je volaná  v etape BeforeDeserialize metódy ProcessMessage. Ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
Ak nie je SOAP správa šifrovaná, metóda InSoap vráti ASP.NET vstupný SOAP prúd. Celý proces spracovania je znázornený na Obr. 9.3. Pokiaľ príde k zmene SOAP správy počas prenosu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený a nepríde k spracovaniu SOAP správy, či už na strane webovej služby, alebo na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
'''Overovanie digitálneho podpisu na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom, že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie. Na overovanie je použitý verejný kľúč zo serverového certifikátu webovej služby. Úlohou metódy InSoap je teda dešifrovať SOAP správu a overiť jej digitálny podpis.&lt;br /&gt;
&lt;br /&gt;
Metóda''' OutSoap''' spracováva stream SOAP  odpovede zasielaného na klienta. Táto metóda je volaná  v etape AfterSerialize metódy ProcessMessage. Metóda OutSoap ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
* X509Certificate2 webServiceCert, objekt typu X509Certificate2 predstavuje serverový certifikát so súkromným kľúčom, ktorý sa použije na digitálne podpísanie SOAP správy.&lt;br /&gt;
Úlohou tejto metódy je digitálne podpísať a zašifrovať SOAP správu. Každá zašifrovaná SOAP správa od klienta má v SOAP hlavičke umiestnený dodatočný '''element IsEncrypted''', ktorý slúži na identifikáciu, či je daná SOAP správa zašifrovaná. V Tab. 9.8 je ukážka zašifrovania SOAP správy&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.8''' Ukážka zašifrovanie SOAP správy&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
               xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
               xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
    &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Ticket&amp;gt;2541a182-8f4f-46c3-84f7-e667c221f494&amp;lt;/Ticket&amp;gt;&lt;br /&gt;
    &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
    &amp;lt;IsEncrypted /&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
&amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;SseReadPatient xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;Wk/C7PGSj/+fg2jQhQlUyg==&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;/SseReadPatient&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Digitálne podpisovanie SOAP správ je realizované prostredníctvom '''štandardu XML Signature''', ktorý sme si popísali v podkapitole 8.1. SOAP správy sú podpisované na strane servera prostredníctvom súkromného kľúča zo serverového certifikátu. Na strane klienta je digitálne podpisovanie realizované prostredníctvom  súkromného kľúča z klientskeho certifikátu. V Tab. 9.9 je ukážka podpísanej SOAP správy.&lt;br /&gt;
&lt;br /&gt;
'''Digitálne podpisovanie na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie.  Na podpísanie  SOAP správy je použitý súkromný kľúč z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.9''' Podpísaná SOAP správa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope:xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
	 xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;http://www.w3.org/TR/2001/REC-xml-c14n-20010315&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Transforms&amp;gt;&lt;br /&gt;
	           &amp;lt;Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt; &lt;br /&gt;
               &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
           &amp;lt;DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt; &lt;br /&gt;
           &amp;lt;DigestValue&amp;gt;2yfAuq6taP4kPBsFEM+J79F7ysM=&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
        &amp;lt;/Reference&amp;gt;&lt;br /&gt;
     &amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
     &amp;lt;SignatureValue&amp;gt;r2NmZyXtsku0WfbAJ4Kej/Kx0W0hAYCGAq7ltU7P5EN/NfQLYtZBCr97KHqNHkrEOqnU8Freg6&lt;br /&gt;
	                 hEg1LXBhrkmF86bOApHTfOrdzpeK1WjK/tKO2G+xigjD8/PBhQszRK/qfG54gdY3kJ/y/kmn/S&lt;br /&gt;
			 F+W49scLowecDxxeIx29UeI3m4yF8GoDGL3xjB/sEN78u8owdaBVcwkH2jIHWz6CiwPHk7YNLF&lt;br /&gt;
			 c/Q0/XqE/ieBnAB2i0gLbM377AdHr9qLwMHVG/M9RVyl0JkWnUI8Viwm3Y268xz7cNlTnfa3uT&lt;br /&gt;
			 hOGHMgmVDrBboHL44zZIBAZbsNsbqSPEipTMDVc7efC0Vg==&lt;br /&gt;
	 &amp;lt;/SignatureValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri digitálnom podpisovaní sme použili kanonizačný algoritmus na element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;SignedInfo&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Použitie je indikované prostredníctvom elementu CanonicalizationMethodAlgorithm. Je to z toho dôvodu, aby sme zabránili  rozdielnym výsledkom pri overovaní digitálneho podpisu. Nakoľko textová reprezentácia XML môže byť spracovaná rozdielne v závislosti použitého dátového prúdu (prázdne tagy, white space, komentáre...), kanonizácia definuje presnú fyzickú štruktúru dokumentu.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.10''' Zoznam algoritmom použitých pri digitálnom podpisovaní SOAP&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Algoritmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SHA1&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Hašovací algoritmus použitý pri výpočte hašu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|RSA&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kryptografický algoritmus použitý na vytvorenie digitálneho podpisu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|REC&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kanonizačný algoritmus.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sme si popísali  štruktúru triedy SecureExtensionUtilities, vysvetlili sme si akým spôsobom je spracovaný SOAP stream z triedy SOAP rozšírenia, a taktiež digitálne podpisovanie, verifikáciu, šifrovanie a dešifrovanie  SOAP správ.&lt;br /&gt;
&lt;br /&gt;
==Autorizácia v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Selektívne šifrovanie a digitálne podpisovanie má ochrániť samotnú komunikáciu medzi webovou službou a jej klientom. Úlohou autorizácie  je rozhodnúť, aké operácie bude môcť autentifikovaný užívateľ vykonávať a k akým zdrojom bude mať prístup na strane webovej služby. Pri vytváraní autorizačných pravidiel sme mali tieto možnosti:&lt;br /&gt;
&lt;br /&gt;
* Vytvoriť autorizačné pravidlá v konfiguračnom súbore webovej služby. Týmto spôsobom sme sa zaoberali v podkapitole 6.1.&lt;br /&gt;
* Namapovať klientske certifikáty na užívateľské účty systému Windows prostredníctvom IIS.&lt;br /&gt;
* Použiť niektorý zo spôsobov impersonácie, ktorými sme sa zaoberali v podkapitole 5.2.1.&lt;br /&gt;
Použitie autorizačných pravidiel v súbore web.config je relatívne flexibilný spôsob autorizácie, ale neposkytuje také pokročilé možnosti ako impersonácia. Rozhodli sme sa použiť programovú impersonáciu, a to z nasledujúcich dôvodov :&lt;br /&gt;
&lt;br /&gt;
* Umožňuje mapovanie klientskych certifikátov na užívateľské účty systému dvoma rôznymi spôsobmi :&lt;br /&gt;
*  One – to – one,&lt;br /&gt;
*  Many – to – one.&lt;br /&gt;
* Programová impersonácia nám umožní flexibilne nastaviť, ktorá časť programového kódu bude vykonávaná pod účtom Network Service a ktorá pod nami zvoleným užívateľským účtom. Tento spôsob sa prostredníctvom mapovania klientskych certifikátov na IIS nedá docieliť.&lt;br /&gt;
Proces programovej impersonácie je nasledovný :&lt;br /&gt;
&lt;br /&gt;
* V databáze je priradený ku každému klientskemu certifikátu jeden užívateľský účet  systému Windows.&lt;br /&gt;
* Pri úspešnej počiatočnej autentifikácii klienta  prostredníctvom certifikátu, sa jeho autentifikačný lístok namapuje na užívateľský účet.&lt;br /&gt;
Programová impersonácia je vykonávaná triedou UserImpersonation, ktorá obsahuje tieto metódy :&lt;br /&gt;
&lt;br /&gt;
* Login  - získa príznak účtu užívateľa Windows.&lt;br /&gt;
* Impersonate - spustí proces vykonávania programového kódu v kontexte identity užívateľského účtu. Pokiaľ  klientov autentifikačný lístok nie je namapovaný na užívateľský účet, programový kód bude vykonávaný pod účtom Network Service, ktorý predstavuje prednastavený účet pre spracovanie ASPNET na systéme Windows Server 2003.&lt;br /&gt;
* UndoImpersonate -  ukončí impersonáciu programového kódu.&lt;br /&gt;
Prostredníctvom užívateľských účtov Windows môžeme jednotlivým klientom webovej služby vyčleniť prístup k súborom na disku, k databáze a pod. Použitie triedy UserImpersonate  je znázornené v Tab. 9.11.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.11'''  Použitie triedy UserImpersonate&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
UserImpersonation  _objImp = new UserImpersonation();&lt;br /&gt;
 &lt;br /&gt;
_objImp.ReadUserAccount(Ticket.Ticket);&lt;br /&gt;
&lt;br /&gt;
_objImp.Login();&lt;br /&gt;
&lt;br /&gt;
_objImp.Impersonate();&lt;br /&gt;
&lt;br /&gt;
//programový kód, ktorý ma byť vykonáný pod inou identitou&lt;br /&gt;
&lt;br /&gt;
_objImp.UndoImpesonate();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Výhody SOAP Security Enhancement pre ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V minulosti sa na zabezpečenie ASP.NET webových služieb využívalo rozšírenie Web Services Enhancements (WSE) &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;25&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;26&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;27&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Súčasná verzia 3.0 nepodporuje ASP.NET webové služby. Preto je veľmi ťažké porovnať navrhovanú vlastnú bezpečnostnú platformu s nejakým oficiálnym spôsobom zabezpečenia. Jediným možným riešením bolo porovnať  spôsob zabezpečenia s rozšírením WSE 2.0. Tento produkt mal veľmi veľa problémov v oblasti interoperability  a takisto je zastaralý. Preto sme sa vyhli porovnaniu našej bezpečnostnej platformy s týmto rozšírením.&lt;br /&gt;
&lt;br /&gt;
:Naša bezpečnostná platforma poskytuje zabezpečenie na úrovni aplikácie a taktiež na úrovni správ. Poskytuje dva spôsoby autentifikácie :&lt;br /&gt;
&lt;br /&gt;
* Počiatočnú autentifikáciu založenú na certifikátoch X509. Výhodou tohto spôsobu autentifikácie je dobrá kontrola nad užívateľskými identitami.&lt;br /&gt;
* Autentifikáciu založenú na autentifikačných lístkoch v SOAP hlavičke. Výhodou tohto spôsobu autentifikácie je :&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky  a pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
&lt;br /&gt;
Integrita komunikácie je zabezpečená prostredníctvom digitálneho podpisovania na základe štandardu XML Signature. SOAP správy sú podpisované na základe privátnych kľúčov z certifikátov a overované na základe verejných kľúčov z certifikátov. Pokiaľ príde k zmene SOAP správy počas transferu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený  a nepríde k spracovaniu SOAP správy, či už na strane webovej služby,  alebo na strane klientskej aplikácie&lt;br /&gt;
&lt;br /&gt;
Dôvernosť komunikácie je založená na šifrovaní SOAP správ pomocou symetrického blokového algoritmu Rijndael. Výhody:&lt;br /&gt;
&lt;br /&gt;
* SOAP správy sú selektívne šifrované, chránené sú len potrebné dáta. Selektívne šifrovanie je nevyhnutná podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
* Výhodou voči štandardu XML Encryption je ten, že pri našom šifrovaní nedochádza k „deformácii&amp;quot; XML tagov.&lt;br /&gt;
* Šifrovací algoritmus môže byť upravený podľa potreby praxe.&lt;br /&gt;
* Šifrovanie je realizované prostredníctvom SOAP rozšírenia. To znamená, že šifruje už serializované dáta. Vďaka tomu môžeme šifrovať a digitálne podpisovať aj vlastné dátové typy.&lt;br /&gt;
* Oproti technológii SSL predstavuje náš spôsob zabezpečenia point  to point, čo je ďalšia podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
&lt;br /&gt;
Veľkú výhodu nášho zabezpečenia vidíme v spôsobe jeho samotného použitia. Celý mechanizmus ochrany SOAP správ sa aplikuje na webovú metódu prostredníctvom atribútu SOAP rozšírenia, ktorý predstavuje len dopísanie jedného riadku kódu nad webovú metódu.  Náš spôsob zabezpečenia nemení spracovanie programového kódu webovej metódy.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.12 je ukážka nastavenia šifrovania elementu body SOAP správy zasielanej ako odpoveď na klientsku aplikáciu. Elementy SOAP správy, ktoré majú byť zašifrované sa zadefinujú prostredníctvom Xpath výrazu pomocou vlastnosti SoapElement  triedy  atribútu SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.12''' Použitie atribútu SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebMethod]&lt;br /&gt;
[SecureExtension(SoapElement = &amp;quot;//soap:Body/*/*&amp;quot;)]&lt;br /&gt;
public DataSet GetDataSet()&lt;br /&gt;
{&lt;br /&gt;
 //kód webovej metódy&lt;br /&gt;
}       &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
V práci sme opísali technologické pozadie XML webových služieb a  ich štandardy. Zamerali sme sa na ASP.NET webové služby. Vysvetlili sme si spôsoby, akým môžeme vytvoriť bezpečnostný komunikačný scenár medzi webovou službou a jej klientom. Rozobrali sme jednotlivé možnosti autentifikácie, autorizácie klientov webovej služby,  spôsoby na zabezpečenie dôvernosti a integrity komunikácie. Uviedli sme ich  výhody a nevýhody,  ktoré so sebou prinášajú.&lt;br /&gt;
&lt;br /&gt;
Upozornili sme na hlavné chyby, ktoré vznikajú pri zabezpečovaní XML webových služieb. Ide hlavne o použitie technológie SSL a štandardu XML Encryption. Samotná technológia SSL nie je postačujúca na zabezpečenie komunikácie medzi webovou službou a jej klientom, nakoľko predstavuje zabezpečenie na úrovni komunikačného kanála  a predstavuje tzv. end – to  – end zabezpečenie. To nie je veľmi vhodné pre XML webové služby, kedže v praxi bývajú súčasťou SOA. SOA architektúra vyžaduje selektívne šifrovanie, ktoré nie je možné dosiahnuť so štandardom XML Encryption. Pri použití tohto štandardu dochádza taktiež k deformácii XML tagov. Cieľom bezpečnostnej platformy bolo odstránenie týchto nedostatkov. Bezpečnostná platforma predstavuje zabezpečenie na úrovni aplikácie a tiež na úrovni správ. Počiatočná autentifikácia je realizovaná na základe certifikátov X509, pri volaní ďalších webových metód je klient autentifikovaný na základe autentifikačného lístka v SOAP hlavičke. Dĺžka platnosti autentifikačného lístka sa dá flexibilne meniť podľa potreby. SOAP správy sú selektívne šifrované pomocou AES, tým je dosiahnuté utajenie komunikácie. Integrita je zabezpečená prostredníctvom digitálneho podpisovania SOAP správ. Naša bezpečnostná platforma poskytuje autorizačný mechanizmus prostredníctvom programovej impersonácie.&lt;br /&gt;
&lt;br /&gt;
Na otestovanie funkčnosti zabezpečenia komunikácie XML ASP.NET webovej služby  bola vytvorená WinForms klientska aplikácia.&lt;br /&gt;
&lt;br /&gt;
=Použitá literatúra=&lt;br /&gt;
#MacDonald, Matthew., Beginning ASP.NET 3.5 in C# 2008: From Novice to Professional, Apress, 2007.  ISBN 978-1590598917&lt;br /&gt;
#Troelsen, Andrew., Pro C# 2008 and the .NET 3.5 Platform, Apress, 2007. ISBN 978-1590598849&lt;br /&gt;
#Glynn, Jay.,  Skinner, Morgan., Professional C# 2008, Wrox, 2008. ISBN  978-0470191378&lt;br /&gt;
#MacDonald, Matthew., Szpuszta, Mario., Pro ASP.NET 2.0 in C# 2005, Apress, 2005. ISBN 978-1590594964&lt;br /&gt;
#Foggon, Damien.,  Maharry, Daniel., Ullman, Chris., Watson, Karli., Programming Microsoft .NET XML Web Services, Microsoft Press, 2003. ISBN 978-0735619128&lt;br /&gt;
#Jones, Allen .,  Microsoft .NET XML Web Services Step by Step, Microsoft Press, 2002. ISBN13: 978-0735617209&lt;br /&gt;
#Eide, Andreas.,  Miller, Chris.,  Sempf, Bill Sempf., Professional ASP.NET Web Services,  Wrox Press, 2001. ISBN 978-1861005458&lt;br /&gt;
#Kurt, Chris., Web Services Architecture and Its Specifications: Essentials for Understanding WS, Microsoft Press, 2005. ISBN 978-0735621626&lt;br /&gt;
#Krowczyk, Andrew., Greenvoss, Zach., Banerjee. Ashish., Professional C# Web Services: Building .NET Web Services with ASP.NET and .NET Remoting, Wrox Press, 2001. ISBN 978-1861004390&lt;br /&gt;
#www.w3.org [online]. last updated: 2007-06-05 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/soap/&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2001-03-14 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/wsdl/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm&amp;gt;&lt;br /&gt;
#O'Neill, Mark., Web Services Security, McGraw-Hill Osborne Media, 2003. ISBN 978-0072224719&lt;br /&gt;
#Hartman, Bret.,  Flinn, Donald., Beznosov, Konstantin. Mastering Web Services Security, 2003. ISBN 978-0471267164&lt;br /&gt;
#Nantz, Brian., Expert Web Services Security in the .NET Platform, Apress, 2004. ISBN 978-1590591154&lt;br /&gt;
#Microsoft, Vytváříme zabezpečené aplikace v Microsoft ASP.NET, Computer Press, 2004. ISBN 80-251-0466-4&lt;br /&gt;
#www.w3.org [online]. last updated: 2008-06-10 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmldsig-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2002-12-13 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmlenc-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2004-03-26 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/MarkUp/SGML/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2005-12-20 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/XMKS/ &amp;gt;&lt;br /&gt;
#Rijmen, Vincent., The Design of Rijndael: AES - The Advanced Encryption Standard, Springer, 2002. ISBN 978-3540425809&lt;br /&gt;
#Tom, Denis., Cryptography for Developers, Syngress, 2007. ISBN 978-1597491044&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#Microsoft Corporation, Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0, Microsoft Press, 2006. ISBN 978-0735623149&lt;br /&gt;
#Hasan, Jeffrey., Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0, Apress, 2004. ISBN 978-1590593905&lt;br /&gt;
#Evjen, Bill., Web Services Enhancements: Understanding the WSE for .NET Enterprise Applications, Wiley, 2003. ISBN 978-0764537363&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/72wdk8cc(VS.71).aspx&lt;br /&gt;
#http://www.oasis-open.org [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/ms229335.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/e80y5yhx%28VS.80%29.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx&lt;br /&gt;
#Dostálek, Libor., Vohnoutová, Marta., Velký průvodce infrastrukturou PKI a technologií elektronického podpisu, 2006. ISBN 80-251-0828-7&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/cc488021.aspx&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5083</id>
		<title>SOAP Security Enhancement pre ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5083"/>
		<updated>2010-06-11T12:46:40Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* SOAP Security Enhancement pre ASP.NET webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|9|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=SOAP Security Enhancement pre ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich dvoch kapitolách sme si opísali teoretické možnosti zabezpečenia XML ASP.NET webových služieb a štandardy zamerané na bezpečnosť XML. Táto kapitola sa zaoberá vývojom vlastnej bezpečnostnej platformy pre XML ASP.NET webové služby v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, ktorú sme nazvali SOAP Security Enhancement (SSE) Naša bezpečnostná platforma bude predstavovať zabezpečenie na úrovni správ a tiež na úrovni aplikácie. Pri vytváraní  bezpečnostného systému pre webové aplikácie  treba zabezpečiť:&lt;br /&gt;
&lt;br /&gt;
* Mechanizmus pre overovanie klientskych aplikácií. Možnosti overovania klientov sme si podrobne rozobrali v kapitolách 5, 5.1, 5.2, 5.3.&lt;br /&gt;
* Mechanizmus pre autorizáciu klientov overených webovou službou. Spôsobmi autorizácie sme sa zaoberali kapitolách 5.1, kde sme sa zaoberali autorizáciou s využitým webového servera IIS a takisto autorizáciou prostredníctvom konfiguračného súboru webovej služby, ktorú sme si  opísali v kapitole 6.&lt;br /&gt;
* Mechanizmus pre zabezpečenie dôvernosti a integrity komunikácie. Spôsobov na vytvorenie bezpečnej komunikačnej linky je viacero. Najrozšírenejší spôsob je použitie technológie SSL, ktorou sme sa zaoberali v podkapitole 4.1. Táto technológia má aj svoje nedostatky, ktoré sme načrtli v kapitole  7 a s ktorými sa oboznámime v podkapitole 9.7.1.&lt;br /&gt;
V príslušných kapitolách sme vysvetlili výhody, nevýhody a oblasti použitia daných mechanizmov pre autentifikáciu, autorizáciu a zabezpečenie dôvernosti a integrity komunikácie. V tejto kapitole ponúkame vlastný komplexný spôsob, ako zabezpečiť komunikáciu medzi XML ASP.NET webovou službou a klientskou aplikáciou na platforme .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.1 sú prehľadne opísané spôsoby a technológie, ktoré použijeme na autentifikáciu, autorizáciu a  zabezpečenie dôvernosti a integrity komunikácie. Tie podrobnejšie popíšeme a vysvetlíme nasledujúcich podkapitolách.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.1'''  Popis technológií použitých pri vlastnej bezpečnostnej platforme&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Mechanizmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Technológia'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autentifikácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Certifikát X509'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia bude realizovaná prostredníctvom programovej impersonácie, ktorú sme si vysvetlili v podkapitole 5.2.1. &lt;br /&gt;
|-&lt;br /&gt;
|Integrita a dôvernosť komunikácie&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Integrita a dôvernosť komunikácie bude zabezpečená prostredníctvom selektívneho šifrovania SOAP správ s využitím Advanced Encryption Standard  a prostredníctvom digitálneho podpisovania SOAP správ pomocou certifikátov X509 s využitím štandardu XML Signature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Štruktúra SOAP Security Enhancement  z objektovo-orientovaného prístupu==&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.2 sú prehľadne opísané základné programové triedy bezpečnostnej platformy spolu s ich funkcionalitou. Podrobnejšie budú opísané v príslušných podkapitolách.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.2''' Triedy bezpečnostnej platformy &lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Názov triedy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AbstractDatabase&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda vytvorená podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DbProvider&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda pre prístup k MS SQL databázovému úložisku. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtension&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda SOAP rozšírenia umožňuje prístup k SOAP   správam v rôznych etapách spracovania. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje atribút SOAP rozšírenia, pomocou ktorého sa špecifikujú konkrétne časti (elementy) SOAP správy ktoré budú šifrované a digitálne podpísané.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda obsahuje metódy na šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Zabezpečuje autentifikáciu klienta, vygenerovanie parametrov AES šifry a vytvorenie konfiguračného XML dokumentu obsahujúce parametre pre bezpečnú komunikáciu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TicketIdentity&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda  reprezentuje autentifikačný lístok umiestnený v SOAP hlavičke klienta.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserData&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje „data object“ reprezentujúci údaje pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserImpersonation&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TTrieda zabezpečuje mechanizmus autorizácie prostredníctvom Windows impersonácie.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia klientov v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Možnosti na overovanie klientov pre XML ASP.NET webové služby sú značne obmedzené. Kedže webová služba neposkytuje žiaden vstavaný spôsob akým, by mohol užívateľ predložiť prihlasovacie údaje, napríklad webový formulár. Najrozšírenejšie spôsoby overovania klientov webovou službou sú tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Autentifikácie Windows. Tento typ nie je veľmi flexibilný a má veľa nedostatkov, ktoré sme si opísali v kapitole 5.1.&lt;br /&gt;
* Vlastný typ autentifikačného procesu založeného na prihlasovacích lístkoch  s využitím SOAP rozšírenia.&lt;br /&gt;
* Použitie klientskych certifikátov X509.&lt;br /&gt;
&lt;br /&gt;
Autentifikáciu založenú na certifikátoch X509 sme zvolili z nasledujúcich dôvodov:&lt;br /&gt;
&lt;br /&gt;
1. Použitie klientskych certifikátov dáva značnú kontrolu nad užívateľskými identitami, nakoľko  certifikáty sú vydávané  certifikačnou autoritou, ktorá býva zvyčajne pod kontrolou administrátora servera, na ktorom môže byť hosťovaná webová služba. Tak isto je možné klientske certifikáty mapovať na užívateľské účty Windows, či už  priamo na webovom serveri IIS alebo priamo programovo vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
2. Certifikáty X509 predstavujú účinnú ochranu proti  podvrhnutiu falošného verejného kľúča ( Man-in-the-Middle Attack &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;36&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ).&lt;br /&gt;
&lt;br /&gt;
3. Tak isto predstavuje účinný mechanizmus na zabezpečenie toho, že vlastník verejného kľúča má k nemu zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
Certifikátom sme sa podrobnejšie venovali v podkapitole 4.1.1. Na vystavenie klientskych certifikátov sme  vytvorili vlastnú testovaciu certifikačnú autoritu na operačnom systéme Windows Server 2003.&lt;br /&gt;
&lt;br /&gt;
Počiatočnú autentifikáciu sme sa rozhodli teda realizovať prostredníctvom klientskych certifikátov X509. Na korektný prenos certifikátov X509 je nutný HTTPS prenos.&lt;br /&gt;
&lt;br /&gt;
Kedže použitie technológie SSL má aj nedostatky a pri prenose veľkého množstva dát je náročné, rozhodli sme sa, že HTTPS kanál bude použitý  pri komunikácii klienta a webovej služby iba raz, a to pri počiatočnom volaní webovej metódy, ktorá zabezpečí overenie klienta na základe klientskeho certifikátu X509. Následne bude klientovi vydaný „autentifikačný lístok&amp;quot;, ktorý bude umiestnený do SOAP hlavičky. Lístok obsahuje  128  bitové jedinečné číslo, ktoré  identifikuje užívateľa pri nasledujúcich volaniach webových metód, a je použitý na jeho overenie. Lístok sa vydáva klientovi s určitou časovou platnosťou, ktorú je možné podľa potreby a priority meniť.&lt;br /&gt;
&lt;br /&gt;
Hodnota ID  v autentifikačnom lístku je uložená spolu s príslušnými údajmi z klientskeho certifikátu do relačnej databázy, ktorú webová služba používa na ďalšie overovanie klienta pri volaní webových metód.&lt;br /&gt;
&lt;br /&gt;
Proces prvotnej autentifikácie je nasledovný. Pri počiatočnom prístupe klienta k webovej službe musí klient zavolať webovú metódu '''CreateConnection''' webovej služby. Metóda&lt;br /&gt;
&lt;br /&gt;
CreateConnection plní v komunikačnom scenári nasledujúce funkcie:&lt;br /&gt;
&lt;br /&gt;
* Overenie klientskeho certifikátu.&lt;br /&gt;
* Vytvorenie SOAP hlavičky s užívateľským ID.&lt;br /&gt;
* Zápis príslušných parametrov z klientskeho certifikátu do databázy.&lt;br /&gt;
* Vygenerovanie a zaslanie parametrov AES, ktoré sú použité na šifrovanie SOAP správ.&lt;br /&gt;
Prostredníctvom vlastnosti''' Context''', ktorú trieda webovej služby  získala odvodením z abstraktnej triedy WebService (pozri podkapitola 2.1),  je extrahovaný klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.3''' Extrahovanie klientského certifikátu z vlastnosti Context&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
X509Certificate2 cert = new X509Certificate2(Context.Request.ClientCertificate.Certificate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Následne je klientsky certifikát overený na revokáciu a dôveryhodnosť certifikačnej autority.&lt;br /&gt;
&lt;br /&gt;
Pokiaľ je certifikát klienta úspešne overený,  webová metóda CreateConnection vygeneruje hodnotu ID v autentifikačnom lístku.&lt;br /&gt;
&lt;br /&gt;
Po vygenerovaní ID pre overeného klienta sú údaje z klientskeho certifikátu (verejný kľúč a common name), ID klienta spolu s  dátumom a časom vytvorenia lístka zapísané do databázy. Následne je vytvorená SOAP hlavička , do ktorej je umiestnené ID užívateľa.&lt;br /&gt;
&lt;br /&gt;
Výhoda vlastného autentifikačného systému na lístkoch:&lt;br /&gt;
&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód  nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
Parametre AES šifry sú zaslané webovou metódou''' CreateConnection''' vo forme XML dokumentu. XML dokument je zašifrovaný pomocou RSA šifry s využitím verejného kľúča z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
XML dokument obsahuje parametre AES šifry a takisto verejný kľúč z certifikátu servera, na overenie digitálneho podpisu SOAP správy webovej služby.&lt;br /&gt;
&lt;br /&gt;
Zašifrované XML je  na strane klienta dešifrované pomocou súkromného kľúča z patričného klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
Parametre AES šifry využíva objekt proxy na šifrovanie SOAP požiadaviek klienta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.4''' Autentifikačný lístok v SOAP hlavičke&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
       &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Ticket&amp;gt;f84bd797-8ea5-463c-9319-5d952ec30207&amp;lt;/Ticket&amp;gt; &lt;br /&gt;
       &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
   &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_13.png|framed|center|Obr. 9.1 Autentifikačný proces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis autentifikačného procesu na Obr. 9.1 :&lt;br /&gt;
&lt;br /&gt;
1. Načítanie klientskeho certifikátu z úložiska.&lt;br /&gt;
&lt;br /&gt;
2. Pridanie certifikátu k objektu proxy a zavolanie webovej metódy CreateConnection.&lt;br /&gt;
&lt;br /&gt;
3. Autentifikácia klientskeho certifikátu, vydanie autentifikačného lístka, ak bol certifikát prijatý.&lt;br /&gt;
&lt;br /&gt;
4. Pri následnom volaní webovej metódy sa autentifikácia klienta vykoná na základe autentifikačného lístka a komunikácia prebieha cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Databázové úložisko==&lt;br /&gt;
&lt;br /&gt;
Ako sme v predchádzajúcej podkapitole spomenuli, informácie o autentifikovanom klientovi sú na strane webovej služby uchovávané v relačnej databáze, konkrétne MS SQL. Pre komunikáciu s databázovým úložiskom sme mohli použiť nasledujúce technológie:&lt;br /&gt;
&lt;br /&gt;
1. LINQ to SQL &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;32&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
2. ADO.NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LINQ to SQL poskytuje niektoré pokročilé možnosti v porovnaní s ADO.NET. Avšak samotná technológia ADO.NET poskytuje dostatočnú podporu pre rôzne DBMS &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* MS SQL Server,&lt;br /&gt;
* MS SQL Mobile Server,&lt;br /&gt;
* Oracle,&lt;br /&gt;
* MySQL,&lt;br /&gt;
* ODBC,&lt;br /&gt;
* OLEDB.&lt;br /&gt;
V praktickej časti sme vytvorili triedu AbstractDatabase podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS. Tým je zabezpečená možnosť upraviť databázové úložisko pre potreby praxe. Pri komplexnej podnikovej aplikácii by bolo najvýhodnejšie použiť ORM Framework napr. NHibernate.  Dosiahli by sme separáciu objektového kódu od databázového kódu a znížili závislosť  logickej vrstvy od bussines vrstvy. Použitie ORM Frameworku je nad rámec tejto práce, ale považovali sme za vhodné ho spomenúť.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spracovanie SOAP správ==&lt;br /&gt;
&lt;br /&gt;
Jedným z prvkov na zabezpečenie integrity a dôvernosti komunikácie medzi klientskou aplikáciou a XML ASP.NET webovou službou je mechanizmus šifrovania a digitálneho podpisovania SOAP správ'''. '''Predtým, než si opíšeme spôsob, akým sú šifrované a podpisované SOAP správy, sa musíme oboznámiť so spôsobom, akým sú spracovávané SOAP správy na strane webovej služby aj na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
Spracovávanie SOAP správ na strane webovej služby, ale aj na strane klienta prebieha v 2 etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Serializácia.''' Požiadavka klienta alebo odpoveď webovej služby je serializovaná ako XML schéma.&lt;br /&gt;
&lt;br /&gt;
2. '''Deserializácia'''. SOAP správa je deserializovaná na dátové typy.&lt;br /&gt;
&lt;br /&gt;
Aby sme  mohli pristupovať k jednotlivým etapám spracovania SOAP správ, musíme implementovať mechanizmus SOAP rozšírenia na strane webovej služby, ale aj na strane klientskej aplikácie. Prístup k etapám serializácie a deserializácie je nutná podmienka na šifrovanie a digitálne podpisovanie SOAP správ&lt;br /&gt;
&lt;br /&gt;
==Rozšírenie SOAP==&lt;br /&gt;
&lt;br /&gt;
Rozšírenie SOAP predstavuje mechanizmus  akým môžeme manipulovať so SOAP správami na strane klienta aj na strane webovej služby. Tento spôsob je veľmi flexibilný, o čom sa presvedčíme neskôr. Pokiaľ vytvoríme SOP rozšírenie, spracovanie SOAP správ prechádza 4 etapami &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''BeforeDeserialize'''. Táto sa spúšťa v okamihu, keď webový server, poprípade objekt proxy dostanú SOAP správu.&lt;br /&gt;
* '''AfterDeserialize'''. V tejto etape je nespracovaná (raw) SOAP správa prevedená na dátové typy platformy .NET Framework. Vykonáva sa ešte pred spustením  webovej metódy.&lt;br /&gt;
* '''BeforeSerialize. '''V tejto etape sa už spracováva kód webovej metódy, ale návratová hodnota webovej metódy nie je ešte serializovaná do SOAP správy.&lt;br /&gt;
* '''AfterSerialize'''. V tejto etape je návratová hodnota webovej metódy serializovaná do SOAP správy, ale tá ešte nie je odoslaná na klientsku aplikáciu.&lt;br /&gt;
V etapách '''BeforeDeserialize '''a''' AfterSerialize '''môžeme získať celý obsah SOAP správy. SOAP rozšírenie musí byť vykonávané aj na strane klienta, a to prostredníctvom objektu proxy. Celý proces spracovania SOAP správ je na Obr. 9.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_14.png|framed|center|Obr. 9.2  Serializácia a Deserializácia SOAP správ]]&lt;br /&gt;
&lt;br /&gt;
==Vytvorenie SOAP rozšírenia==&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie na platforme .NET Framework sa skladá z 2 častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Samotného SOAP rozšírenia, reprezentovaného vlastnou triedou, ktorá musí byť vytvorená odvodením z triedy '''System.Web.Protocols.SoapExtension'''.&lt;br /&gt;
* Vlastného atribútu, ktorý sa použije u webovej metódy na indikáciu, že na danú webovú metódu sa má aplikovať SOAP rozšírenie. SOAP atribút sa vytvára odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút pre SOAP rozšírenie - SecureExtensionAttribute===&lt;br /&gt;
&lt;br /&gt;
Atribút SOAP rozšírenia umožňuje spojiť konkrétne rozšírenie SOAP s metódami webovej triedy. Vytvára sa odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Atribút pre SOAP rozšírenie je v našej webovej službe implementovaný prostredníctvom triedy''' SecureExtensionAttribute'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.5''' Atribút SoapExtension&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
 public class SecureExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
 {...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda pre SOAP rozšírenie obsahuje atribút AttributeUsage. Pomocou neho špecifikujeme oblasť použitia nášho atribútu. Náš atribút  bude teda použitý na  jednotlivé deklarácie webových metód.&lt;br /&gt;
&lt;br /&gt;
V našej triede pre SOAP rozšírenie je nutné prekryť 2 abstraktné vlastnosti, ktoré trieda získala odvodením z triedy System.Web.Protocols.SoapExtensionAttribute. Ide o vlastnosti &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Priority'''. Slúži na nastavenie poradia, v akom sa spracujú SOAP rozšírenia, pokiaľ ich je na webovú metódu nakonfigurovaných viacero.&lt;br /&gt;
* '''ExtensionType.''' Vracia objekt Type, ktorý reprezentuje našu vlastnú triedu pre SOAP rozšírenia.&lt;br /&gt;
Trieda '''SecureExtensionAttribute''' pre atribút SOAP rozšírenia implementuje metódu '''SoapElement''', pomocou ktorej budeme konfigurovať, ktoré časti SOAP správy budú šifrované. Konfigurácia sa vykonáva  prostredníctvom Xpath výrazu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Trieda  SOAP rozšírenia - SecureExtension===&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je implementované v našej webovej službe prostredníctvom triedy''' SecureExtension. '''Každá trieda pre SOAP rozšírenie musí byť vytvorená odvodením z '''System.Web.Protocols.SoapExtension. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. V Tab. 9.6 sú povinné metódy, ktoré musíme prekryť pri vytváraní triedy pre SOAP rozšírenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.6'''' Trieda SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class SecureExtension : SoapExtension&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.7''' Povinné metódy triedy SOAP rozšírenia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Metóda'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|GetInitializer()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri prvom  vykonaní SOAP rozšírenia. To umožňuje inicializovať hodnoty niektorých dát, ktoré sa použijú pri spracovaní SOAP správ. Takisto v tejto metóde môžeme extrahovať hodnoty atribútu pre SOAP rozšírenie. Táto metóda má dve verzie. Volá sa vždy len jedna, v závislosti od toho či je SOAP rozšírenie nakonfigurované prostredníctvom atribútu alebo konfiguračného súboru.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Initialize()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri každom  vykonaní SOAP rozšírenia.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ProcessMessage()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda vykonáva vlastné spracovanie SOAP rozšírenia, umožňuje modifikovať SOAP správy. V tejto metóde sú volané metódy pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ChainStream()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňuje získať prístup k SOAP bez prerušenia iných rozšírení.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda SOAP rozšírenia SecureExtension implementuje v sebe dve pomocné metódy :&lt;br /&gt;
&lt;br /&gt;
* '''RequestMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  dešifrovanie a overenie digitálneho podpisu SOAP požiadavky.&lt;br /&gt;
* '''ResponseMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  zašifrovanie a  digitálne podpísanie SOAP odpovede .&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je v podobnej forme, s malými zmenami,  implementované aj na strane klienta, s malými zmenami .&lt;br /&gt;
&lt;br /&gt;
===Metóda ProcessMessage===&lt;br /&gt;
&lt;br /&gt;
Metóda ProcessMessage je volaná ASP.NET v týchto štyroch etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''BeforeDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
2. '''AfterDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
3. '''BeforeSerialize,'''&lt;br /&gt;
&lt;br /&gt;
4. '''AfterSerialize.'''&lt;br /&gt;
&lt;br /&gt;
Etapa '''BeforeDeserialize'''  je prvou etapou spracovanie SOAP požiadavky od klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Načítanie hodnoty autentifikačného lístka z hlavičky SOAP správy od klienta.&lt;br /&gt;
* Overenie platnosti autentifikačného lístka. Autentifikačný lístok sa vydáva klientovi s obmedzenou časovou  platnosťou. V databáze na strane webovej služby je každá hodnota autentifikačného lístka spojená s časom, kedy bol lístok vydaný. Na základe hodnoty lístka sú načítané parametre AES šifry a verejný kľúč klienta.&lt;br /&gt;
* Po úspešnom overení lístka je  SOAP stream predaný na dešifrovanie a overenie digitálneho podpisu prostredníctvom pomocnej metódy '''RequestMessage. '''Proces dešifrovania a overenia digitálneho podpisu je vykonávaný triedou SecureExtensionUtilities. Táto trieda bude popísaná v samostatnej podkapitole.&lt;br /&gt;
Spracovanie SOAP správy  v etape BeforeDeserialize je znázornené na Obr. 9.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_15.png|framed|center|Obr. 9.3 Spracovanie SOAP správy v etape BeforeDeserialize]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Etapa''' AfterSerialize''' je poslednou etapou spracovania SOAP odpovede zasielanej na klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Predanie SOAP streamu na digitálne podpísanie a zašifrovanie SOAP správy prostredníctvom pomocnej metódy '''ResponseMessage'''.  Samotný proces šifrovania a digitálneho podpisovania je vykonávaný triedou SecureExtensionUtilities.&lt;br /&gt;
&lt;br /&gt;
Hlavnou  úlohou triedy SecureExtension  je:&lt;br /&gt;
&lt;br /&gt;
* Počiatočná autentifikácia klienta na základe hodnoty lístka v SOAP hlavičke.&lt;br /&gt;
* Načítanie AES parametrov a verejného kľúča z databázy.&lt;br /&gt;
* Predanie SOAP streamov na spracovanie triede '''SecureExtensionUtilities'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_16.png|framed|center|Obr. 9.4 Životný cyklus triedy SecureExtension]]&lt;br /&gt;
&lt;br /&gt;
==Šifrovanie a dešifrovanie==&lt;br /&gt;
&lt;br /&gt;
Úlohou šifrovania je zabezpečiť dôvernosť a integritu komunikácie na komunikačnej ceste, ktorú tvorí viacero uzlov, čiže  vykryť nedostatky technológie SSL. Šifrovanie SOAP správ predstavuje tzv. zabezpečenie na úrovni správ. V našej bezpečnostnej platforme je umožnené selektívne šifrovanie SOAP,  ktoré sa dá podľa potreby nastavovať pomocou atribútov SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
Šifrovanie a dešifrovanie SOAP správ je vykonávané v triede SecureExtensionUtilities. Skôr ako vysvetlíme, akým spôsobom je zabezpečená dôvernosť a integrita komunikácie, rozoberieme si nevýhody použitia samotnej technológie SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nevýhody technológie SSL===&lt;br /&gt;
&lt;br /&gt;
Veľmi rozšíreným spôsobom zabezpečenia komunikácie webových aplikácií je použitie technológie SSL, ktorú sme si popísali v podkapitole  4.1. Pre zabezpečenie webových služieb nie je táto technológia veľmi vhodná. Medzi obmedzenia SSL v spojitosti s XML webovými službami patrí:&lt;br /&gt;
&lt;br /&gt;
* SSL predstavuje tzv. end - to - end zabezpečenie komunikácie. Pokrytý je len odosielateľ a príjemca správy. Pre XML webové služby je  nutné zabezpečiť komunikáciu medzi každými dvoma uzlami komunikácie, ide o tzv. point – to – point zabezpečenia.&lt;br /&gt;
* SSL predstavuje zabezpečenie komunikácie iba na transporte. Pre webové služby je vhodnejšie zabezpečenie na úrovni správ. SSL je závislé na HTTP protokole.&lt;br /&gt;
* SSL šifruje celú komunikáciu,  neumožňuje selektívne šifrovanie a takisto nepodporuje v plnej miere mechanizmus nepopierateľnosti. Pre webové služby, ktoré sú súčasťou SOA, je selektívne šifrovanie nutnou podmienkou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_17.png|framed|center|Obr. 9.5  Point-to-point a end-to-end zabezpečenie]]&lt;br /&gt;
&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
&lt;br /&gt;
Pri počiatočnej výmene konfiguračného XML dokumentu je využitá asymetrická šifra RSA s využitím kľúčov z certifikátov webovej služby a klienta. Ďalšia komunikácia je šifrovaná pomocou symetrického šifrovacieho algoritmu. Ako šifrovací algoritmus sme zvolili  symetrický blokový algoritmus Rijndael, ktorý bol v roku 1997  vyhlásený  americkým úradom pre štandardizáciu (NIST) ako štandard. Dodnes nie sú známe dôkazy o jeho prelomení. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;23&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AES  predstavuje blokový šifrovací algoritmus so šírkou bloku 128 bitov a možnými dĺžkami kľúčov 128, 192 a 256. Rijndael podporuje aj voliteľné väčšie dátové bloky a kľúče  v 32- bitových prírastkoch, ale tie nie sú  zahrnuté v špecifikácii  štandardu AES. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;22&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trieda SecureExtensionUtilities==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté, SOAP správy sú šifrované pomocou symetrickej šifry Rijndael,  ktoré časti SOAP správy budú šifrované, je určené pomocou atribútov SOAP rozšírenia. Trieda SecureExtensionUtilities  zabezpečuje šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
&lt;br /&gt;
SecureExtensionUtilities   implementuje v sebe dve hlavné verejné metódy:&lt;br /&gt;
&lt;br /&gt;
* '''InSoap,'''&lt;br /&gt;
* '''OutSoap,'''&lt;br /&gt;
a tieto pomocné privátne metódy:&lt;br /&gt;
&lt;br /&gt;
* DecryptString, metóda dešifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* DecryptSoap, dešifruje XML dokument.&lt;br /&gt;
* VerifySignedSoap, overuje digitálny podpis SOAP správy.&lt;br /&gt;
* SingSoap, digitálne podpisuje SOAP správu na základe štandardu XML Signature.&lt;br /&gt;
* EncryptString, metóda šifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* EncryptSoap, šifruje XML dokument.&lt;br /&gt;
&lt;br /&gt;
Metóda''' InSoap''' spracováva stream SOAP  požiadavky od klienta. Táto metóda je volaná  v etape BeforeDeserialize metódy ProcessMessage. Ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
Ak nie je SOAP správa šifrovaná, metóda InSoap vráti ASP.NET vstupný SOAP prúd. Celý proces spracovania je znázornený na Obr. 9.3. Pokiaľ príde k zmene SOAP správy počas prenosu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený a nepríde k spracovaniu SOAP správy, či už na strane webovej služby, alebo na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
'''Overovanie digitálneho podpisu na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom, že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie. Na overovanie je použitý verejný kľúč zo serverového certifikátu webovej služby. Úlohou metódy InSoap je teda dešifrovať SOAP správu a overiť jej digitálny podpis.&lt;br /&gt;
&lt;br /&gt;
Metóda''' OutSoap''' spracováva stream SOAP  odpovede zasielaného na klienta. Táto metóda je volaná  v etape AfterSerialize metódy ProcessMessage. Metóda OutSoap ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
* X509Certificate2 webServiceCert, objekt typu X509Certificate2 predstavuje serverový certifikát so súkromným kľúčom, ktorý sa použije na digitálne podpísanie SOAP správy.&lt;br /&gt;
Úlohou tejto metódy je digitálne podpísať a zašifrovať SOAP správu. Každá zašifrovaná SOAP správa od klienta má v SOAP hlavičke umiestnený dodatočný '''element IsEncrypted''', ktorý slúži na identifikáciu, či je daná SOAP správa zašifrovaná. V Tab. 9.8 je ukážka zašifrovania SOAP správy&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.8''' Ukážka zašifrovanie SOAP správy&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
               xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
               xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
    &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Ticket&amp;gt;2541a182-8f4f-46c3-84f7-e667c221f494&amp;lt;/Ticket&amp;gt;&lt;br /&gt;
    &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
    &amp;lt;IsEncrypted /&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
&amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;SseReadPatient xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;Wk/C7PGSj/+fg2jQhQlUyg==&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;/SseReadPatient&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Digitálne podpisovanie SOAP správ je realizované prostredníctvom '''štandardu XML Signature''', ktorý sme si popísali v podkapitole 8.1. SOAP správy sú podpisované na strane servera prostredníctvom súkromného kľúča zo serverového certifikátu. Na strane klienta je digitálne podpisovanie realizované prostredníctvom  súkromného kľúča z klientskeho certifikátu. V Tab. 9.9 je ukážka podpísanej SOAP správy.&lt;br /&gt;
&lt;br /&gt;
'''Digitálne podpisovanie na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie.  Na podpísanie  SOAP správy je použitý súkromný kľúč z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.9''' Podpísaná SOAP správa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope:xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
	 xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;http://www.w3.org/TR/2001/REC-xml-c14n-20010315&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Transforms&amp;gt;&lt;br /&gt;
	           &amp;lt;Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt; &lt;br /&gt;
               &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
           &amp;lt;DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt; &lt;br /&gt;
           &amp;lt;DigestValue&amp;gt;2yfAuq6taP4kPBsFEM+J79F7ysM=&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
        &amp;lt;/Reference&amp;gt;&lt;br /&gt;
     &amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
     &amp;lt;SignatureValue&amp;gt;r2NmZyXtsku0WfbAJ4Kej/Kx0W0hAYCGAq7ltU7P5EN/NfQLYtZBCr97KHqNHkrEOqnU8Freg6&lt;br /&gt;
	                 hEg1LXBhrkmF86bOApHTfOrdzpeK1WjK/tKO2G+xigjD8/PBhQszRK/qfG54gdY3kJ/y/kmn/S&lt;br /&gt;
			 F+W49scLowecDxxeIx29UeI3m4yF8GoDGL3xjB/sEN78u8owdaBVcwkH2jIHWz6CiwPHk7YNLF&lt;br /&gt;
			 c/Q0/XqE/ieBnAB2i0gLbM377AdHr9qLwMHVG/M9RVyl0JkWnUI8Viwm3Y268xz7cNlTnfa3uT&lt;br /&gt;
			 hOGHMgmVDrBboHL44zZIBAZbsNsbqSPEipTMDVc7efC0Vg==&lt;br /&gt;
	 &amp;lt;/SignatureValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri digitálnom podpisovaní sme použili kanonizačný algoritmus na element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;SignedInfo&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Použitie je indikované prostredníctvom elementu CanonicalizationMethodAlgorithm. Je to z toho dôvodu, aby sme zabránili  rozdielnym výsledkom pri overovaní digitálneho podpisu. Nakoľko textová reprezentácia XML môže byť spracovaná rozdielne v závislosti použitého dátového prúdu (prázdne tagy, white space, komentáre...), kanonizácia definuje presnú fyzickú štruktúru dokumentu.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.10''' Zoznam algoritmom použitých pri digitálnom podpisovaní SOAP&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Algoritmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SHA1&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Hašovací algoritmus použitý pri výpočte hašu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|RSA&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kryptografický algoritmus použitý na vytvorenie digitálneho podpisu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|REC&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kanonizačný algoritmus.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sme si popísali  štruktúru triedy SecureExtensionUtilities, vysvetlili sme si akým spôsobom je spracovaný SOAP stream z triedy SOAP rozšírenia, a taktiež digitálne podpisovanie, verifikáciu, šifrovanie a dešifrovanie  SOAP správ.&lt;br /&gt;
&lt;br /&gt;
==Autorizácia v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Selektívne šifrovanie a digitálne podpisovanie má ochrániť samotnú komunikáciu medzi webovou službou a jej klientom. Úlohou autorizácie  je rozhodnúť, aké operácie bude môcť autentifikovaný užívateľ vykonávať a k akým zdrojom bude mať prístup na strane webovej služby. Pri vytváraní autorizačných pravidiel sme mali tieto možnosti:&lt;br /&gt;
&lt;br /&gt;
* Vytvoriť autorizačné pravidlá v konfiguračnom súbore webovej služby. Týmto spôsobom sme sa zaoberali v podkapitole 6.1.&lt;br /&gt;
* Namapovať klientske certifikáty na užívateľské účty systému Windows prostredníctvom IIS.&lt;br /&gt;
* Použiť niektorý zo spôsobov impersonácie, ktorými sme sa zaoberali v podkapitole 5.2.1.&lt;br /&gt;
Použitie autorizačných pravidiel v súbore web.config je relatívne flexibilný spôsob autorizácie, ale neposkytuje také pokročilé možnosti ako impersonácia. Rozhodli sme sa použiť programovú impersonáciu, a to z nasledujúcich dôvodov :&lt;br /&gt;
&lt;br /&gt;
* Umožňuje mapovanie klientskych certifikátov na užívateľské účty systému dvoma rôznymi spôsobmi :&lt;br /&gt;
*  One – to – one,&lt;br /&gt;
*  Many – to – one.&lt;br /&gt;
* Programová impersonácia nám umožní flexibilne nastaviť, ktorá časť programového kódu bude vykonávaná pod účtom Network Service a ktorá pod nami zvoleným užívateľským účtom. Tento spôsob sa prostredníctvom mapovania klientskych certifikátov na IIS nedá docieliť.&lt;br /&gt;
Proces programovej impersonácie je nasledovný :&lt;br /&gt;
&lt;br /&gt;
* V databáze je priradený ku každému klientskemu certifikátu jeden užívateľský účet  systému Windows.&lt;br /&gt;
* Pri úspešnej počiatočnej autentifikácii klienta  prostredníctvom certifikátu, sa jeho autentifikačný lístok namapuje na užívateľský účet.&lt;br /&gt;
Programová impersonácia je vykonávaná triedou UserImpersonation, ktorá obsahuje tieto metódy :&lt;br /&gt;
&lt;br /&gt;
* Login  - získa príznak účtu užívateľa Windows.&lt;br /&gt;
* Impersonate - spustí proces vykonávania programového kódu v kontexte identity užívateľského účtu. Pokiaľ  klientov autentifikačný lístok nie je namapovaný na užívateľský účet, programový kód bude vykonávaný pod účtom Network Service, ktorý predstavuje prednastavený účet pre spracovanie ASPNET na systéme Windows Server 2003.&lt;br /&gt;
* UndoImpersonate -  ukončí impersonáciu programového kódu.&lt;br /&gt;
Prostredníctvom užívateľských účtov Windows môžeme jednotlivým klientom webovej služby vyčleniť prístup k súborom na disku, k databáze a pod. Použitie triedy UserImpersonate  je znázornené v Tab. 9.11.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.11'''  Použitie triedy UserImpersonate&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
UserImpersonation  _objImp = new UserImpersonation();&lt;br /&gt;
 &lt;br /&gt;
_objImp.ReadUserAccount(Ticket.Ticket);&lt;br /&gt;
&lt;br /&gt;
_objImp.Login();&lt;br /&gt;
&lt;br /&gt;
_objImp.Impersonate();&lt;br /&gt;
&lt;br /&gt;
//programový kód, ktorý ma byť vykonáný pod inou identitou&lt;br /&gt;
&lt;br /&gt;
_objImp.UndoImpesonate();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Výhody SOAP Security Enhancement pre ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V minulosti sa na zabezpečenie ASP.NET webových služieb využívalo rozšírenie Web Services Enhancements (WSE) &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;25&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;26&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;27&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Súčasná verzia 3.0 nepodporuje ASP.NET webové služby. Preto je veľmi ťažké porovnať navrhovanú vlastnú bezpečnostnú platformu s nejakým oficiálnym spôsobom zabezpečenia. Jediným možným riešením bolo porovnať  spôsob zabezpečenia s rozšírením WSE 2.0. Tento produkt mal veľmi veľa problémov v oblasti interoperability  a takisto je zastaralý. Preto sme sa vyhli porovnaniu našej bezpečnostnej platformy s týmto rozšírením.&lt;br /&gt;
&lt;br /&gt;
:Naša bezpečnostná platforma poskytuje zabezpečenie na úrovni aplikácie a taktiež na úrovni správ. Poskytuje dva spôsoby autentifikácie :&lt;br /&gt;
&lt;br /&gt;
* Počiatočnú autentifikáciu založenú na certifikátoch X509. Výhodou tohto spôsobu autentifikácie je dobrá kontrola nad užívateľskými identitami.&lt;br /&gt;
* Autentifikáciu založenú na autentifikačných lístkoch v SOAP hlavičke. Výhodou tohto spôsobu autentifikácie je :&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky  a pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
&lt;br /&gt;
Integrita komunikácie je zabezpečená prostredníctvom digitálneho podpisovania na základe štandardu XML Signature. SOAP správy sú podpisované na základe privátnych kľúčov z certifikátov a overované na základe verejných kľúčov z certifikátov. Pokiaľ príde k zmene SOAP správy počas transferu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený  a nepríde k spracovaniu SOAP správy, či už na strane webovej služby,  alebo na strane klientskej aplikácie&lt;br /&gt;
&lt;br /&gt;
Dôvernosť komunikácie je založená na šifrovaní SOAP správ pomocou symetrického blokového algoritmu Rijndael. Výhody:&lt;br /&gt;
&lt;br /&gt;
* SOAP správy sú selektívne šifrované, chránené sú len potrebné dáta. Selektívne šifrovanie je nevyhnutná podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
* Výhodou voči štandardu XML Encryption je ten, že pri našom šifrovaní nedochádza k „deformácii&amp;quot; XML tagov.&lt;br /&gt;
* Šifrovací algoritmus môže byť upravený podľa potreby praxe.&lt;br /&gt;
* Šifrovanie je realizované prostredníctvom SOAP rozšírenia. To znamená, že šifruje už serializované dáta. Vďaka tomu môžeme šifrovať a digitálne podpisovať aj vlastné dátové typy.&lt;br /&gt;
* Oproti technológii SSL predstavuje náš spôsob zabezpečenia point  to point, čo je ďalšia podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
&lt;br /&gt;
Veľkú výhodu nášho zabezpečenia vidíme v spôsobe jeho samotného použitia. Celý mechanizmus ochrany SOAP správ sa aplikuje na webovú metódu prostredníctvom atribútu SOAP rozšírenia, ktorý predstavuje len dopísanie jedného riadku kódu nad webovú metódu.  Náš spôsob zabezpečenia nemení spracovanie programového kódu webovej metódy.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.12 je ukážka nastavenia šifrovania elementu body SOAP správy zasielanej ako odpoveď na klientsku aplikáciu. Elementy SOAP správy, ktoré majú byť zašifrované sa zadefinujú prostredníctvom Xpath výrazu pomocou vlastnosti SoapElement  triedy  atribútu SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.12''' Použitie atribútu SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebMethod]&lt;br /&gt;
[SecureExtension(SoapElement = &amp;quot;//soap:Body/*/*&amp;quot;)]&lt;br /&gt;
public DataSet GetDataSet()&lt;br /&gt;
{&lt;br /&gt;
 //kód webovej metódy&lt;br /&gt;
}       &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
V práci sme opísali technologické pozadie XML webových služieb a  ich štandardy. Zamerali sme sa na ASP.NET webové služby. Vysvetlili sme si spôsoby, akým môžeme vytvoriť bezpečnostný komunikačný scenár medzi webovou službou a jej klientom. Rozobrali sme jednotlivé možnosti autentifikácie, autorizácie klientov webovej služby,  spôsoby na zabezpečenie dôvernosti a integrity komunikácie. Uviedli sme ich  výhody a nevýhody,  ktoré so sebou prinášajú. &lt;br /&gt;
&lt;br /&gt;
Ďalej sme upozornili na hlavné chyby, ktoré vznikajú pri zabezpečovaní XML webových služieb. Jedná sa hlavne o použitie technológie SSL a štandardu XML Encryption. Samotná technológia SSL nie je postačujúce na zabezpečenie komunikácia medzi webovou službou a jej klientom, nakoľko predstavuje zabezpečenie na úrovni komunikačného kanála  a predstavuje tzv. end – to  – end zabezpečenie. To nie je veľmi vhodné pre XML webové služby, nakoľko v praxi bývajú súčasť SOA. SOA architektúra tiež vyžaduje selektívne šifrovanie, ktoré nie je možné dosiahnuť so štandardom XML Encryption. Pri použití toho štandardu dochádza taktiež k deformácii XML tagov. Cieľom bezpečnostnej platformy bolo odstránenie týchto nedostatkov. Bezpečnostná platforma predstavuje zabezpečenie na úrovni aplikácie a tiež na úrovni správ. Počiatočná autentifikácia je realizovaná na základe certifikátov X509, pri volaní ďalších webových metód je klient autentifikovaný na základe autentifikačného lístka v SOAP hlavičke. Dĺžka platnosti autentifikačného lístka sa dá flexibilne meniť podľa potreby. SOAP správy sú selektívne šifrované pomocou AES, tým je dosiahnuté utajenie komunikácie. Integrita je zabezpečené prostredníctvom digitálneho podpisovania SOAP správ. Naša bezpečnostná platforma poskytuje autorizáčný mechanizmus prostredníctvom programovej impersonácie.&lt;br /&gt;
&lt;br /&gt;
Na otestovanie funkčnosti zabezpečenia komunikácie XML ASP.NET webovej služby  bola vytvorená Winforms klientska aplikácia. Programové knižnice predstavujúce bezpečnostnú platformu aj klientska aplikácia sú súčasťou DVD prílohy.&lt;br /&gt;
&lt;br /&gt;
=Použitá literatúra=&lt;br /&gt;
#MacDonald, Matthew., Beginning ASP.NET 3.5 in C# 2008: From Novice to Professional, Apress, 2007.  ISBN 978-1590598917&lt;br /&gt;
#Troelsen, Andrew., Pro C# 2008 and the .NET 3.5 Platform, Apress, 2007. ISBN 978-1590598849&lt;br /&gt;
#Glynn, Jay.,  Skinner, Morgan., Professional C# 2008, Wrox, 2008. ISBN  978-0470191378&lt;br /&gt;
#MacDonald, Matthew., Szpuszta, Mario., Pro ASP.NET 2.0 in C# 2005, Apress, 2005. ISBN 978-1590594964&lt;br /&gt;
#Foggon, Damien.,  Maharry, Daniel., Ullman, Chris., Watson, Karli., Programming Microsoft .NET XML Web Services, Microsoft Press, 2003. ISBN 978-0735619128&lt;br /&gt;
#Jones, Allen .,  Microsoft .NET XML Web Services Step by Step, Microsoft Press, 2002. ISBN13: 978-0735617209&lt;br /&gt;
#Eide, Andreas.,  Miller, Chris.,  Sempf, Bill Sempf., Professional ASP.NET Web Services,  Wrox Press, 2001. ISBN 978-1861005458&lt;br /&gt;
#Kurt, Chris., Web Services Architecture and Its Specifications: Essentials for Understanding WS, Microsoft Press, 2005. ISBN 978-0735621626&lt;br /&gt;
#Krowczyk, Andrew., Greenvoss, Zach., Banerjee. Ashish., Professional C# Web Services: Building .NET Web Services with ASP.NET and .NET Remoting, Wrox Press, 2001. ISBN 978-1861004390&lt;br /&gt;
#www.w3.org [online]. last updated: 2007-06-05 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/soap/&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2001-03-14 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/wsdl/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm&amp;gt;&lt;br /&gt;
#O'Neill, Mark., Web Services Security, McGraw-Hill Osborne Media, 2003. ISBN 978-0072224719&lt;br /&gt;
#Hartman, Bret.,  Flinn, Donald., Beznosov, Konstantin. Mastering Web Services Security, 2003. ISBN 978-0471267164&lt;br /&gt;
#Nantz, Brian., Expert Web Services Security in the .NET Platform, Apress, 2004. ISBN 978-1590591154&lt;br /&gt;
#Microsoft, Vytváříme zabezpečené aplikace v Microsoft ASP.NET, Computer Press, 2004. ISBN 80-251-0466-4&lt;br /&gt;
#www.w3.org [online]. last updated: 2008-06-10 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmldsig-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2002-12-13 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmlenc-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2004-03-26 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/MarkUp/SGML/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2005-12-20 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/XMKS/ &amp;gt;&lt;br /&gt;
#Rijmen, Vincent., The Design of Rijndael: AES - The Advanced Encryption Standard, Springer, 2002. ISBN 978-3540425809&lt;br /&gt;
#Tom, Denis., Cryptography for Developers, Syngress, 2007. ISBN 978-1597491044&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#Microsoft Corporation, Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0, Microsoft Press, 2006. ISBN 978-0735623149&lt;br /&gt;
#Hasan, Jeffrey., Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0, Apress, 2004. ISBN 978-1590593905&lt;br /&gt;
#Evjen, Bill., Web Services Enhancements: Understanding the WSE for .NET Enterprise Applications, Wiley, 2003. ISBN 978-0764537363&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/72wdk8cc(VS.71).aspx&lt;br /&gt;
#http://www.oasis-open.org [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/ms229335.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/e80y5yhx%28VS.80%29.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx&lt;br /&gt;
#Dostálek, Libor., Vohnoutová, Marta., Velký průvodce infrastrukturou PKI a technologií elektronického podpisu, 2006. ISBN 80-251-0828-7&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/cc488021.aspx&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5082</id>
		<title>SOAP Security Enhancement pre ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5082"/>
		<updated>2010-06-11T12:45:21Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|9|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=SOAP Security Enhancement pre ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich dvoch kapitolách sme si opísali teoretické možnosti zabezpečenia XML ASP.NET webových služieb a štandardy zamerané na bezpečnosť XML. Táto kapitola sa zaoberá vývojom vlastnej bezpečnostnej platformy pre XML ASP.NET webové služby v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, ktorú sme nazvali SOAP Security Enhancement (SSE) Naša bezpečnostná platforma bude predstavovať zabezpečenie na úrovni správ a tiež na úrovni aplikácie. Pri vytváraní  bezpečnostného systému pre webové aplikácie  treba zabezpečiť:&lt;br /&gt;
&lt;br /&gt;
* Mechanizmus pre overovanie klientskych aplikácií. Možnosti overovania klientov sme si podrobne rozobrali v kapitolách 5, 5.1, 5.2, 5.3.&lt;br /&gt;
* Mechanizmus pre autorizáciu klientov overených webovou službou. Spôsobmi autorizácie sme sa zaoberali kapitolách 5.1, kde sme sa zaoberali autorizáciou s využitým webového servera IIS a takisto autorizáciou prostredníctvom konfiguračného súboru webovej služby, ktorú sme si  opísali v kapitole 6.&lt;br /&gt;
* Mechanizmus pre zabezpečenie dôvernosti a integrity komunikácie. Spôsobov na vytvorenie bezpečnej komunikačnej linky je viacero. Najrozšírenejší spôsob je použitie technológie SSL, ktorou sme sa zaoberali v podkapitole 4.1. Táto technológia má aj svoje nedostatky, ktoré sme načrtli v kapitole  7 a s ktorými sa oboznámime v podkapitole 9.7.1.&lt;br /&gt;
V príslušných kapitolách sme vysvetlili výhody, nevýhody a oblasti použitia daných mechanizmov pre autentifikáciu, autorizáciu a zabezpečenie dôvernosti a integrity komunikácie. V tejto kapitole ponúkame vlastný komplexný spôsob, ako zabezpečiť komunikáciu medzi XML ASP.NET webovou službou a klientskou aplikáciou na platforme .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.1 sú prehľadne opísané spôsoby a technológie, ktoré použijeme na autentifikáciu, autorizáciu a  zabezpečenie dôvernosti a integrity komunikácie. Tie podrobnejšie popíšeme a vysvetlíme nasledujúcich podkapitolách.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.1'''  Popis technológií použitých pri vlastnej bezpečnostnej platforme&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Mechanizmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Technológia'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autentifikácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Certifikát X509'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia bude realizovaná prostredníctvom programovej impersonácie, ktorú sme si vysvetlili v podkapitole 5.2.1. &lt;br /&gt;
|-&lt;br /&gt;
|Integrita a dôvernosť komunikácie&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Integrita a dôvernosť komunikácie bude zabezpečená prostredníctvom selektívneho šifrovania SOAP správ s využitím Advanced Encryption Standard  a prostredníctvom digitálneho podpisovania SOAP správ pomocou certifikátov X509 s využitím štandardu XML Signature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Štruktúra SOAP Security Enhancement  z objektovo-orientovaného prístupu==&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.2 sú prehľadne opísané základné programové triedy bezpečnostnej platformy spolu s ich funkcionalitou. Podrobnejšie budú opísané v príslušných podkapitolách.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.2''' Triedy bezpečnostnej platformy &lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Názov triedy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AbstractDatabase&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda vytvorená podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DbProvider&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda pre prístup k MS SQL databázovému úložisku. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtension&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda SOAP rozšírenia umožňuje prístup k SOAP   správam v rôznych etapách spracovania. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje atribút SOAP rozšírenia, pomocou ktorého sa špecifikujú konkrétne časti (elementy) SOAP správy ktoré budú šifrované a digitálne podpísané.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda obsahuje metódy na šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Zabezpečuje autentifikáciu klienta, vygenerovanie parametrov AES šifry a vytvorenie konfiguračného XML dokumentu obsahujúce parametre pre bezpečnú komunikáciu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TicketIdentity&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda  reprezentuje autentifikačný lístok umiestnený v SOAP hlavičke klienta.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserData&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje „data object“ reprezentujúci údaje pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserImpersonation&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TTrieda zabezpečuje mechanizmus autorizácie prostredníctvom Windows impersonácie.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia klientov v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Možnosti na overovanie klientov pre XML ASP.NET webové služby sú značne obmedzené. Kedže webová služba neposkytuje žiaden vstavaný spôsob akým, by mohol užívateľ predložiť prihlasovacie údaje, napríklad webový formulár. Najrozšírenejšie spôsoby overovania klientov webovou službou sú tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Autentifikácie Windows. Tento typ nie je veľmi flexibilný a má veľa nedostatkov, ktoré sme si opísali v kapitole 5.1.&lt;br /&gt;
* Vlastný typ autentifikačného procesu založeného na prihlasovacích lístkoch  s využitím SOAP rozšírenia.&lt;br /&gt;
* Použitie klientskych certifikátov X509.&lt;br /&gt;
&lt;br /&gt;
Autentifikáciu založenú na certifikátoch X509 sme zvolili z nasledujúcich dôvodov:&lt;br /&gt;
&lt;br /&gt;
1. Použitie klientskych certifikátov dáva značnú kontrolu nad užívateľskými identitami, nakoľko  certifikáty sú vydávané  certifikačnou autoritou, ktorá býva zvyčajne pod kontrolou administrátora servera, na ktorom môže byť hosťovaná webová služba. Tak isto je možné klientske certifikáty mapovať na užívateľské účty Windows, či už  priamo na webovom serveri IIS alebo priamo programovo vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
2. Certifikáty X509 predstavujú účinnú ochranu proti  podvrhnutiu falošného verejného kľúča ( Man-in-the-Middle Attack &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;36&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ).&lt;br /&gt;
&lt;br /&gt;
3. Tak isto predstavuje účinný mechanizmus na zabezpečenie toho, že vlastník verejného kľúča má k nemu zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
Certifikátom sme sa podrobnejšie venovali v podkapitole 4.1.1. Na vystavenie klientskych certifikátov sme  vytvorili vlastnú testovaciu certifikačnú autoritu na operačnom systéme Windows Server 2003.&lt;br /&gt;
&lt;br /&gt;
Počiatočnú autentifikáciu sme sa rozhodli teda realizovať prostredníctvom klientskych certifikátov X509. Na korektný prenos certifikátov X509 je nutný HTTPS prenos.&lt;br /&gt;
&lt;br /&gt;
Kedže použitie technológie SSL má aj nedostatky a pri prenose veľkého množstva dát je náročné, rozhodli sme sa, že HTTPS kanál bude použitý  pri komunikácii klienta a webovej služby iba raz, a to pri počiatočnom volaní webovej metódy, ktorá zabezpečí overenie klienta na základe klientskeho certifikátu X509. Následne bude klientovi vydaný „autentifikačný lístok&amp;quot;, ktorý bude umiestnený do SOAP hlavičky. Lístok obsahuje  128  bitové jedinečné číslo, ktoré  identifikuje užívateľa pri nasledujúcich volaniach webových metód, a je použitý na jeho overenie. Lístok sa vydáva klientovi s určitou časovou platnosťou, ktorú je možné podľa potreby a priority meniť.&lt;br /&gt;
&lt;br /&gt;
Hodnota ID  v autentifikačnom lístku je uložená spolu s príslušnými údajmi z klientskeho certifikátu do relačnej databázy, ktorú webová služba používa na ďalšie overovanie klienta pri volaní webových metód.&lt;br /&gt;
&lt;br /&gt;
Proces prvotnej autentifikácie je nasledovný. Pri počiatočnom prístupe klienta k webovej službe musí klient zavolať webovú metódu '''CreateConnection''' webovej služby. Metóda&lt;br /&gt;
&lt;br /&gt;
CreateConnection plní v komunikačnom scenári nasledujúce funkcie:&lt;br /&gt;
&lt;br /&gt;
* Overenie klientskeho certifikátu.&lt;br /&gt;
* Vytvorenie SOAP hlavičky s užívateľským ID.&lt;br /&gt;
* Zápis príslušných parametrov z klientskeho certifikátu do databázy.&lt;br /&gt;
* Vygenerovanie a zaslanie parametrov AES, ktoré sú použité na šifrovanie SOAP správ.&lt;br /&gt;
Prostredníctvom vlastnosti''' Context''', ktorú trieda webovej služby  získala odvodením z abstraktnej triedy WebService (pozri podkapitola 2.1),  je extrahovaný klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.3''' Extrahovanie klientského certifikátu z vlastnosti Context&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
X509Certificate2 cert = new X509Certificate2(Context.Request.ClientCertificate.Certificate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Následne je klientsky certifikát overený na revokáciu a dôveryhodnosť certifikačnej autority.&lt;br /&gt;
&lt;br /&gt;
Pokiaľ je certifikát klienta úspešne overený,  webová metóda CreateConnection vygeneruje hodnotu ID v autentifikačnom lístku.&lt;br /&gt;
&lt;br /&gt;
Po vygenerovaní ID pre overeného klienta sú údaje z klientskeho certifikátu (verejný kľúč a common name), ID klienta spolu s  dátumom a časom vytvorenia lístka zapísané do databázy. Následne je vytvorená SOAP hlavička , do ktorej je umiestnené ID užívateľa.&lt;br /&gt;
&lt;br /&gt;
Výhoda vlastného autentifikačného systému na lístkoch:&lt;br /&gt;
&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód  nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
Parametre AES šifry sú zaslané webovou metódou''' CreateConnection''' vo forme XML dokumentu. XML dokument je zašifrovaný pomocou RSA šifry s využitím verejného kľúča z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
XML dokument obsahuje parametre AES šifry a takisto verejný kľúč z certifikátu servera, na overenie digitálneho podpisu SOAP správy webovej služby.&lt;br /&gt;
&lt;br /&gt;
Zašifrované XML je  na strane klienta dešifrované pomocou súkromného kľúča z patričného klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
Parametre AES šifry využíva objekt proxy na šifrovanie SOAP požiadaviek klienta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.4''' Autentifikačný lístok v SOAP hlavičke&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
       &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Ticket&amp;gt;f84bd797-8ea5-463c-9319-5d952ec30207&amp;lt;/Ticket&amp;gt; &lt;br /&gt;
       &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
   &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_13.png|framed|center|Obr. 9.1 Autentifikačný proces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis autentifikačného procesu na Obr. 9.1 :&lt;br /&gt;
&lt;br /&gt;
1. Načítanie klientskeho certifikátu z úložiska.&lt;br /&gt;
&lt;br /&gt;
2. Pridanie certifikátu k objektu proxy a zavolanie webovej metódy CreateConnection.&lt;br /&gt;
&lt;br /&gt;
3. Autentifikácia klientskeho certifikátu, vydanie autentifikačného lístka, ak bol certifikát prijatý.&lt;br /&gt;
&lt;br /&gt;
4. Pri následnom volaní webovej metódy sa autentifikácia klienta vykoná na základe autentifikačného lístka a komunikácia prebieha cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Databázové úložisko==&lt;br /&gt;
&lt;br /&gt;
Ako sme v predchádzajúcej podkapitole spomenuli, informácie o autentifikovanom klientovi sú na strane webovej služby uchovávané v relačnej databáze, konkrétne MS SQL. Pre komunikáciu s databázovým úložiskom sme mohli použiť nasledujúce technológie:&lt;br /&gt;
&lt;br /&gt;
1. LINQ to SQL &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;32&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
2. ADO.NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LINQ to SQL poskytuje niektoré pokročilé možnosti v porovnaní s ADO.NET. Avšak samotná technológia ADO.NET poskytuje dostatočnú podporu pre rôzne DBMS &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* MS SQL Server,&lt;br /&gt;
* MS SQL Mobile Server,&lt;br /&gt;
* Oracle,&lt;br /&gt;
* MySQL,&lt;br /&gt;
* ODBC,&lt;br /&gt;
* OLEDB.&lt;br /&gt;
V praktickej časti sme vytvorili triedu AbstractDatabase podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS. Tým je zabezpečená možnosť upraviť databázové úložisko pre potreby praxe. Pri komplexnej podnikovej aplikácii by bolo najvýhodnejšie použiť ORM Framework napr. NHibernate.  Dosiahli by sme separáciu objektového kódu od databázového kódu a znížili závislosť  logickej vrstvy od bussines vrstvy. Použitie ORM Frameworku je nad rámec tejto práce, ale považovali sme za vhodné ho spomenúť.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spracovanie SOAP správ==&lt;br /&gt;
&lt;br /&gt;
Jedným z prvkov na zabezpečenie integrity a dôvernosti komunikácie medzi klientskou aplikáciou a XML ASP.NET webovou službou je mechanizmus šifrovania a digitálneho podpisovania SOAP správ'''. '''Predtým, než si opíšeme spôsob, akým sú šifrované a podpisované SOAP správy, sa musíme oboznámiť so spôsobom, akým sú spracovávané SOAP správy na strane webovej služby aj na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
Spracovávanie SOAP správ na strane webovej služby, ale aj na strane klienta prebieha v 2 etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Serializácia.''' Požiadavka klienta alebo odpoveď webovej služby je serializovaná ako XML schéma.&lt;br /&gt;
&lt;br /&gt;
2. '''Deserializácia'''. SOAP správa je deserializovaná na dátové typy.&lt;br /&gt;
&lt;br /&gt;
Aby sme  mohli pristupovať k jednotlivým etapám spracovania SOAP správ, musíme implementovať mechanizmus SOAP rozšírenia na strane webovej služby, ale aj na strane klientskej aplikácie. Prístup k etapám serializácie a deserializácie je nutná podmienka na šifrovanie a digitálne podpisovanie SOAP správ&lt;br /&gt;
&lt;br /&gt;
==Rozšírenie SOAP==&lt;br /&gt;
&lt;br /&gt;
Rozšírenie SOAP predstavuje mechanizmus  akým môžeme manipulovať so SOAP správami na strane klienta aj na strane webovej služby. Tento spôsob je veľmi flexibilný, o čom sa presvedčíme neskôr. Pokiaľ vytvoríme SOP rozšírenie, spracovanie SOAP správ prechádza 4 etapami &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''BeforeDeserialize'''. Táto sa spúšťa v okamihu, keď webový server, poprípade objekt proxy dostanú SOAP správu.&lt;br /&gt;
* '''AfterDeserialize'''. V tejto etape je nespracovaná (raw) SOAP správa prevedená na dátové typy platformy .NET Framework. Vykonáva sa ešte pred spustením  webovej metódy.&lt;br /&gt;
* '''BeforeSerialize. '''V tejto etape sa už spracováva kód webovej metódy, ale návratová hodnota webovej metódy nie je ešte serializovaná do SOAP správy.&lt;br /&gt;
* '''AfterSerialize'''. V tejto etape je návratová hodnota webovej metódy serializovaná do SOAP správy, ale tá ešte nie je odoslaná na klientsku aplikáciu.&lt;br /&gt;
V etapách '''BeforeDeserialize '''a''' AfterSerialize '''môžeme získať celý obsah SOAP správy. SOAP rozšírenie musí byť vykonávané aj na strane klienta, a to prostredníctvom objektu proxy. Celý proces spracovania SOAP správ je na Obr. 9.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_14.png|framed|center|Obr. 9.2  Serializácia a Deserializácia SOAP správ]]&lt;br /&gt;
&lt;br /&gt;
==Vytvorenie SOAP rozšírenia==&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie na platforme .NET Framework sa skladá z 2 častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Samotného SOAP rozšírenia, reprezentovaného vlastnou triedou, ktorá musí byť vytvorená odvodením z triedy '''System.Web.Protocols.SoapExtension'''.&lt;br /&gt;
* Vlastného atribútu, ktorý sa použije u webovej metódy na indikáciu, že na danú webovú metódu sa má aplikovať SOAP rozšírenie. SOAP atribút sa vytvára odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút pre SOAP rozšírenie - SecureExtensionAttribute===&lt;br /&gt;
&lt;br /&gt;
Atribút SOAP rozšírenia umožňuje spojiť konkrétne rozšírenie SOAP s metódami webovej triedy. Vytvára sa odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Atribút pre SOAP rozšírenie je v našej webovej službe implementovaný prostredníctvom triedy''' SecureExtensionAttribute'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.5''' Atribút SoapExtension&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
 public class SecureExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
 {...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda pre SOAP rozšírenie obsahuje atribút AttributeUsage. Pomocou neho špecifikujeme oblasť použitia nášho atribútu. Náš atribút  bude teda použitý na  jednotlivé deklarácie webových metód.&lt;br /&gt;
&lt;br /&gt;
V našej triede pre SOAP rozšírenie je nutné prekryť 2 abstraktné vlastnosti, ktoré trieda získala odvodením z triedy System.Web.Protocols.SoapExtensionAttribute. Ide o vlastnosti &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Priority'''. Slúži na nastavenie poradia, v akom sa spracujú SOAP rozšírenia, pokiaľ ich je na webovú metódu nakonfigurovaných viacero.&lt;br /&gt;
* '''ExtensionType.''' Vracia objekt Type, ktorý reprezentuje našu vlastnú triedu pre SOAP rozšírenia.&lt;br /&gt;
Trieda '''SecureExtensionAttribute''' pre atribút SOAP rozšírenia implementuje metódu '''SoapElement''', pomocou ktorej budeme konfigurovať, ktoré časti SOAP správy budú šifrované. Konfigurácia sa vykonáva  prostredníctvom Xpath výrazu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Trieda  SOAP rozšírenia - SecureExtension===&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je implementované v našej webovej službe prostredníctvom triedy''' SecureExtension. '''Každá trieda pre SOAP rozšírenie musí byť vytvorená odvodením z '''System.Web.Protocols.SoapExtension. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. V Tab. 9.6 sú povinné metódy, ktoré musíme prekryť pri vytváraní triedy pre SOAP rozšírenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.6'''' Trieda SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class SecureExtension : SoapExtension&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.7''' Povinné metódy triedy SOAP rozšírenia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Metóda'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|GetInitializer()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri prvom  vykonaní SOAP rozšírenia. To umožňuje inicializovať hodnoty niektorých dát, ktoré sa použijú pri spracovaní SOAP správ. Takisto v tejto metóde môžeme extrahovať hodnoty atribútu pre SOAP rozšírenie. Táto metóda má dve verzie. Volá sa vždy len jedna, v závislosti od toho či je SOAP rozšírenie nakonfigurované prostredníctvom atribútu alebo konfiguračného súboru.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Initialize()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri každom  vykonaní SOAP rozšírenia.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ProcessMessage()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda vykonáva vlastné spracovanie SOAP rozšírenia, umožňuje modifikovať SOAP správy. V tejto metóde sú volané metódy pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ChainStream()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňuje získať prístup k SOAP bez prerušenia iných rozšírení.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda SOAP rozšírenia SecureExtension implementuje v sebe dve pomocné metódy :&lt;br /&gt;
&lt;br /&gt;
* '''RequestMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  dešifrovanie a overenie digitálneho podpisu SOAP požiadavky.&lt;br /&gt;
* '''ResponseMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  zašifrovanie a  digitálne podpísanie SOAP odpovede .&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je v podobnej forme, s malými zmenami,  implementované aj na strane klienta, s malými zmenami .&lt;br /&gt;
&lt;br /&gt;
===Metóda ProcessMessage===&lt;br /&gt;
&lt;br /&gt;
Metóda ProcessMessage je volaná ASP.NET v týchto štyroch etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''BeforeDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
2. '''AfterDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
3. '''BeforeSerialize,'''&lt;br /&gt;
&lt;br /&gt;
4. '''AfterSerialize.'''&lt;br /&gt;
&lt;br /&gt;
Etapa '''BeforeDeserialize'''  je prvou etapou spracovanie SOAP požiadavky od klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Načítanie hodnoty autentifikačného lístka z hlavičky SOAP správy od klienta.&lt;br /&gt;
* Overenie platnosti autentifikačného lístka. Autentifikačný lístok sa vydáva klientovi s obmedzenou časovou  platnosťou. V databáze na strane webovej služby je každá hodnota autentifikačného lístka spojená s časom, kedy bol lístok vydaný. Na základe hodnoty lístka sú načítané parametre AES šifry a verejný kľúč klienta.&lt;br /&gt;
* Po úspešnom overení lístka je  SOAP stream predaný na dešifrovanie a overenie digitálneho podpisu prostredníctvom pomocnej metódy '''RequestMessage. '''Proces dešifrovania a overenia digitálneho podpisu je vykonávaný triedou SecureExtensionUtilities. Táto trieda bude popísaná v samostatnej podkapitole.&lt;br /&gt;
Spracovanie SOAP správy  v etape BeforeDeserialize je znázornené na Obr. 9.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_15.png|framed|center|Obr. 9.3 Spracovanie SOAP správy v etape BeforeDeserialize]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Etapa''' AfterSerialize''' je poslednou etapou spracovania SOAP odpovede zasielanej na klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Predanie SOAP streamu na digitálne podpísanie a zašifrovanie SOAP správy prostredníctvom pomocnej metódy '''ResponseMessage'''.  Samotný proces šifrovania a digitálneho podpisovania je vykonávaný triedou SecureExtensionUtilities.&lt;br /&gt;
&lt;br /&gt;
Hlavnou  úlohou triedy SecureExtension  je:&lt;br /&gt;
&lt;br /&gt;
* Počiatočná autentifikácia klienta na základe hodnoty lístka v SOAP hlavičke.&lt;br /&gt;
* Načítanie AES parametrov a verejného kľúča z databázy.&lt;br /&gt;
* Predanie SOAP streamov na spracovanie triede '''SecureExtensionUtilities'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_16.png|framed|center|Obr. 9.4 Životný cyklus triedy SecureExtension]]&lt;br /&gt;
&lt;br /&gt;
==Šifrovanie a dešifrovanie==&lt;br /&gt;
&lt;br /&gt;
Úlohou šifrovania je zabezpečiť dôvernosť a integritu komunikácie na komunikačnej ceste, ktorú tvorí viacero uzlov, čiže  vykryť nedostatky technológie SSL. Šifrovanie SOAP správ predstavuje tzv. zabezpečenie na úrovni správ. V našej bezpečnostnej platforme je umožnené selektívne šifrovanie SOAP,  ktoré sa dá podľa potreby nastavovať pomocou atribútov SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
Šifrovanie a dešifrovanie SOAP správ je vykonávané v triede SecureExtensionUtilities. Skôr ako vysvetlíme, akým spôsobom je zabezpečená dôvernosť a integrita komunikácie, rozoberieme si nevýhody použitia samotnej technológie SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nevýhody technológie SSL===&lt;br /&gt;
&lt;br /&gt;
Veľmi rozšíreným spôsobom zabezpečenia komunikácie webových aplikácií je použitie technológie SSL, ktorú sme si popísali v podkapitole  4.1. Pre zabezpečenie webových služieb nie je táto technológia veľmi vhodná. Medzi obmedzenia SSL v spojitosti s XML webovými službami patrí:&lt;br /&gt;
&lt;br /&gt;
* SSL predstavuje tzv. end - to - end zabezpečenie komunikácie. Pokrytý je len odosielateľ a príjemca správy. Pre XML webové služby je  nutné zabezpečiť komunikáciu medzi každými dvoma uzlami komunikácie, ide o tzv. point – to – point zabezpečenia.&lt;br /&gt;
* SSL predstavuje zabezpečenie komunikácie iba na transporte. Pre webové služby je vhodnejšie zabezpečenie na úrovni správ. SSL je závislé na HTTP protokole.&lt;br /&gt;
* SSL šifruje celú komunikáciu,  neumožňuje selektívne šifrovanie a takisto nepodporuje v plnej miere mechanizmus nepopierateľnosti. Pre webové služby, ktoré sú súčasťou SOA, je selektívne šifrovanie nutnou podmienkou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_17.png|framed|center|Obr. 9.5  Point-to-point a end-to-end zabezpečenie]]&lt;br /&gt;
&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
&lt;br /&gt;
Pri počiatočnej výmene konfiguračného XML dokumentu je využitá asymetrická šifra RSA s využitím kľúčov z certifikátov webovej služby a klienta. Ďalšia komunikácia je šifrovaná pomocou symetrického šifrovacieho algoritmu. Ako šifrovací algoritmus sme zvolili  symetrický blokový algoritmus Rijndael, ktorý bol v roku 1997  vyhlásený  americkým úradom pre štandardizáciu (NIST) ako štandard. Dodnes nie sú známe dôkazy o jeho prelomení. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;23&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AES  predstavuje blokový šifrovací algoritmus so šírkou bloku 128 bitov a možnými dĺžkami kľúčov 128, 192 a 256. Rijndael podporuje aj voliteľné väčšie dátové bloky a kľúče  v 32- bitových prírastkoch, ale tie nie sú  zahrnuté v špecifikácii  štandardu AES. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;22&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trieda SecureExtensionUtilities==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté, SOAP správy sú šifrované pomocou symetrickej šifry Rijndael,  ktoré časti SOAP správy budú šifrované, je určené pomocou atribútov SOAP rozšírenia. Trieda SecureExtensionUtilities  zabezpečuje šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
&lt;br /&gt;
SecureExtensionUtilities   implementuje v sebe dve hlavné verejné metódy:&lt;br /&gt;
&lt;br /&gt;
* '''InSoap,'''&lt;br /&gt;
* '''OutSoap,'''&lt;br /&gt;
a tieto pomocné privátne metódy:&lt;br /&gt;
&lt;br /&gt;
* DecryptString, metóda dešifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* DecryptSoap, dešifruje XML dokument.&lt;br /&gt;
* VerifySignedSoap, overuje digitálny podpis SOAP správy.&lt;br /&gt;
* SingSoap, digitálne podpisuje SOAP správu na základe štandardu XML Signature.&lt;br /&gt;
* EncryptString, metóda šifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* EncryptSoap, šifruje XML dokument.&lt;br /&gt;
&lt;br /&gt;
Metóda''' InSoap''' spracováva stream SOAP  požiadavky od klienta. Táto metóda je volaná  v etape BeforeDeserialize metódy ProcessMessage. Ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
Ak nie je SOAP správa šifrovaná, metóda InSoap vráti ASP.NET vstupný SOAP prúd. Celý proces spracovania je znázornený na Obr. 9.3. Pokiaľ príde k zmene SOAP správy počas prenosu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený a nepríde k spracovaniu SOAP správy, či už na strane webovej služby, alebo na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
'''Overovanie digitálneho podpisu na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom, že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie. Na overovanie je použitý verejný kľúč zo serverového certifikátu webovej služby. Úlohou metódy InSoap je teda dešifrovať SOAP správu a overiť jej digitálny podpis.&lt;br /&gt;
&lt;br /&gt;
Metóda''' OutSoap''' spracováva stream SOAP  odpovede zasielaného na klienta. Táto metóda je volaná  v etape AfterSerialize metódy ProcessMessage. Metóda OutSoap ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
* X509Certificate2 webServiceCert, objekt typu X509Certificate2 predstavuje serverový certifikát so súkromným kľúčom, ktorý sa použije na digitálne podpísanie SOAP správy.&lt;br /&gt;
Úlohou tejto metódy je digitálne podpísať a zašifrovať SOAP správu. Každá zašifrovaná SOAP správa od klienta má v SOAP hlavičke umiestnený dodatočný '''element IsEncrypted''', ktorý slúži na identifikáciu, či je daná SOAP správa zašifrovaná. V Tab. 9.8 je ukážka zašifrovania SOAP správy&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.8''' Ukážka zašifrovanie SOAP správy&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
               xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
               xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
    &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Ticket&amp;gt;2541a182-8f4f-46c3-84f7-e667c221f494&amp;lt;/Ticket&amp;gt;&lt;br /&gt;
    &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
    &amp;lt;IsEncrypted /&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
&amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;SseReadPatient xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;Wk/C7PGSj/+fg2jQhQlUyg==&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;/SseReadPatient&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Digitálne podpisovanie SOAP správ je realizované prostredníctvom '''štandardu XML Signature''', ktorý sme si popísali v podkapitole 8.1. SOAP správy sú podpisované na strane servera prostredníctvom súkromného kľúča zo serverového certifikátu. Na strane klienta je digitálne podpisovanie realizované prostredníctvom  súkromného kľúča z klientskeho certifikátu. V Tab. 9.9 je ukážka podpísanej SOAP správy.&lt;br /&gt;
&lt;br /&gt;
'''Digitálne podpisovanie na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie.  Na podpísanie  SOAP správy je použitý súkromný kľúč z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.9''' Podpísaná SOAP správa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope:xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
	 xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;http://www.w3.org/TR/2001/REC-xml-c14n-20010315&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Transforms&amp;gt;&lt;br /&gt;
	           &amp;lt;Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt; &lt;br /&gt;
               &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
           &amp;lt;DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt; &lt;br /&gt;
           &amp;lt;DigestValue&amp;gt;2yfAuq6taP4kPBsFEM+J79F7ysM=&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
        &amp;lt;/Reference&amp;gt;&lt;br /&gt;
     &amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
     &amp;lt;SignatureValue&amp;gt;r2NmZyXtsku0WfbAJ4Kej/Kx0W0hAYCGAq7ltU7P5EN/NfQLYtZBCr97KHqNHkrEOqnU8Freg6&lt;br /&gt;
	                 hEg1LXBhrkmF86bOApHTfOrdzpeK1WjK/tKO2G+xigjD8/PBhQszRK/qfG54gdY3kJ/y/kmn/S&lt;br /&gt;
			 F+W49scLowecDxxeIx29UeI3m4yF8GoDGL3xjB/sEN78u8owdaBVcwkH2jIHWz6CiwPHk7YNLF&lt;br /&gt;
			 c/Q0/XqE/ieBnAB2i0gLbM377AdHr9qLwMHVG/M9RVyl0JkWnUI8Viwm3Y268xz7cNlTnfa3uT&lt;br /&gt;
			 hOGHMgmVDrBboHL44zZIBAZbsNsbqSPEipTMDVc7efC0Vg==&lt;br /&gt;
	 &amp;lt;/SignatureValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri digitálnom podpisovaní sme použili kanonizačný algoritmus na element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;SignedInfo&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Použitie je indikované prostredníctvom elementu CanonicalizationMethodAlgorithm. Je to z toho dôvodu, aby sme zabránili  rozdielnym výsledkom pri overovaní digitálneho podpisu. Nakoľko textová reprezentácia XML môže byť spracovaná rozdielne v závislosti použitého dátového prúdu (prázdne tagy, white space, komentáre...), kanonizácia definuje presnú fyzickú štruktúru dokumentu.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.10''' Zoznam algoritmom použitých pri digitálnom podpisovaní SOAP&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Algoritmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SHA1&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Hašovací algoritmus použitý pri výpočte hašu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|RSA&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kryptografický algoritmus použitý na vytvorenie digitálneho podpisu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|REC&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kanonizačný algoritmus.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sme si popísali  štruktúru triedy SecureExtensionUtilities, vysvetlili sme si akým spôsobom je spracovaný SOAP stream z triedy SOAP rozšírenia, a taktiež digitálne podpisovanie, verifikáciu, šifrovanie a dešifrovanie  SOAP správ.&lt;br /&gt;
&lt;br /&gt;
==Autorizácia v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Selektívne šifrovanie a digitálne podpisovanie má ochrániť samotnú komunikáciu medzi webovou službou a jej klientom. Úlohou autorizácie  je rozhodnúť, aké operácie bude môcť autentifikovaný užívateľ vykonávať a k akým zdrojom bude mať prístup na strane webovej služby. Pri vytváraní autorizačných pravidiel sme mali tieto možnosti:&lt;br /&gt;
&lt;br /&gt;
* Vytvoriť autorizačné pravidlá v konfiguračnom súbore webovej služby. Týmto spôsobom sme sa zaoberali v podkapitole 6.1.&lt;br /&gt;
* Namapovať klientske certifikáty na užívateľské účty systému Windows prostredníctvom IIS.&lt;br /&gt;
* Použiť niektorý zo spôsobov impersonácie, ktorými sme sa zaoberali v podkapitole 5.2.1.&lt;br /&gt;
Použitie autorizačných pravidiel v súbore web.config je relatívne flexibilný spôsob autorizácie, ale neposkytuje také pokročilé možnosti ako impersonácia. Rozhodli sme sa použiť programovú impersonáciu, a to z nasledujúcich dôvodov :&lt;br /&gt;
&lt;br /&gt;
* Umožňuje mapovanie klientskych certifikátov na užívateľské účty systému dvoma rôznymi spôsobmi :&lt;br /&gt;
*  One – to – one,&lt;br /&gt;
*  Many – to – one.&lt;br /&gt;
* Programová impersonácia nám umožní flexibilne nastaviť, ktorá časť programového kódu bude vykonávaná pod účtom Network Service a ktorá pod nami zvoleným užívateľským účtom. Tento spôsob sa prostredníctvom mapovania klientskych certifikátov na IIS nedá docieliť.&lt;br /&gt;
Proces programovej impersonácie je nasledovný :&lt;br /&gt;
&lt;br /&gt;
* V databáze je priradený ku každému klientskemu certifikátu jeden užívateľský účet  systému Windows.&lt;br /&gt;
* Pri úspešnej počiatočnej autentifikácii klienta  prostredníctvom certifikátu, sa jeho autentifikačný lístok namapuje na užívateľský účet.&lt;br /&gt;
Programová impersonácia je vykonávaná triedou UserImpersonation, ktorá obsahuje tieto metódy :&lt;br /&gt;
&lt;br /&gt;
* Login  - získa príznak účtu užívateľa Windows.&lt;br /&gt;
* Impersonate - spustí proces vykonávania programového kódu v kontexte identity užívateľského účtu. Pokiaľ  klientov autentifikačný lístok nie je namapovaný na užívateľský účet, programový kód bude vykonávaný pod účtom Network Service, ktorý predstavuje prednastavený účet pre spracovanie ASPNET na systéme Windows Server 2003.&lt;br /&gt;
* UndoImpersonate -  ukončí impersonáciu programového kódu.&lt;br /&gt;
Prostredníctvom užívateľských účtov Windows môžeme jednotlivým klientom webovej služby vyčleniť prístup k súborom na disku, k databáze a pod. Použitie triedy UserImpersonate  je znázornené v Tab. 9.11.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.11'''  Použitie triedy UserImpersonate&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
UserImpersonation  _objImp = new UserImpersonation();&lt;br /&gt;
 &lt;br /&gt;
_objImp.ReadUserAccount(Ticket.Ticket);&lt;br /&gt;
&lt;br /&gt;
_objImp.Login();&lt;br /&gt;
&lt;br /&gt;
_objImp.Impersonate();&lt;br /&gt;
&lt;br /&gt;
//programový kód, ktorý ma byť vykonáný pod inou identitou&lt;br /&gt;
&lt;br /&gt;
_objImp.UndoImpesonate();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Výhody SOAP Security Enhancement pre ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V minulosti sa na zabezpečenie ASP.NET webových služieb využívalo rozšírenie Web Services Enhancements (WSE) &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;25&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;26&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;27&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Súčasná verzia 3.0 nepodporuje ASP.NET webové služby. Preto je veľmi ťažké porovnať navrhovanú vlastnú bezpečnostnú platformu s nejakým oficiálnym spôsobom zabezpečenia. Jediným možným riešením bolo porovnať  spôsob zabezpečenia s rozšírením WSE 2.0. Tento produkt mal veľmi veľa problémov v oblasti interoperability  a takisto je zastaralý. Preto sme sa vyhli porovnaniu našej bezpečnostnej platformy s týmto rozšírením.&lt;br /&gt;
&lt;br /&gt;
:Naša bezpečnostná platforma poskytuje zabezpečenie na úrovni aplikácie a taktiež na úrovni správ. Poskytuje dva spôsoby autentifikácie :&lt;br /&gt;
&lt;br /&gt;
* Počiatočnú autentifikáciu založenú na certifikátoch X509. Výhodou tohto spôsobu autentifikácie je dobrá kontrola nad užívateľskými identitami.&lt;br /&gt;
* Autentifikáciu založenú na autentifikačných lístkoch v SOAP hlavičke. Výhodou tohto spôsobu autentifikácie je :&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky  a pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
&lt;br /&gt;
Integrita komunikácie je zabezpečená prostredníctvom digitálneho podpisovania na základe štandardu XML Signature. SOAP správy sú podpisované na základe privátnych kľúčov z certifikátov a overované na základe verejných kľúčov z certifikátov. Pokiaľ príde k zmene SOAP správy počas transferu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený  a nepríde k spracovaniu SOAP správy, či už na strane webovej služby,  alebo na strane klientskej aplikácie&lt;br /&gt;
&lt;br /&gt;
Dôvernosť komunikácie je založená na šifrovaní SOAP správ pomocou symetrického blokového algoritmu Rijndael. Výhody:&lt;br /&gt;
&lt;br /&gt;
* SOAP správy sú selektívne šifrované, chránené sú len potrebné dáta. Selektívne šifrovanie je nevyhnutná podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
* Výhodou voči štandardu XML Encryption je ten, že pri našom šifrovaní nedochádza k „deformácii&amp;quot; XML tagov.&lt;br /&gt;
* Šifrovací algoritmus môže byť upravený podľa potreby praxe.&lt;br /&gt;
* Šifrovanie je realizované prostredníctvom SOAP rozšírenia. To znamená, že šifruje už serializované dáta. Vďaka tomu môžeme šifrovať a digitálne podpisovať aj vlastné dátové typy.&lt;br /&gt;
* Oproti technológii SSL predstavuje náš spôsob zabezpečenia point  to point, čo je ďalšia podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
&lt;br /&gt;
Veľkú výhodu nášho zabezpečenia vidíme v spôsobe jeho samotného použitia. Celý mechanizmus ochrany SOAP správ sa aplikuje na webovú metódu prostredníctvom atribútu SOAP rozšírenia, ktorý predstavuje len dopísanie jedného riadku kódu nad webovú metódu.  Náš spôsob zabezpečenia nemení spracovanie programového kódu webovej metódy.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.12 je ukážka nastavenia šifrovania elementu body SOAP správy zasielanej ako odpoveď na klientsku aplikáciu. Elementy SOAP správy, ktoré majú byť zašifrované sa zadefinujú prostredníctvom Xpath výrazu pomocou vlastnosti SoapElement  triedy  atribútu SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.12''' Použitie atribútu SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebMethod]&lt;br /&gt;
[SecureExtension(SoapElement = &amp;quot;//soap:Body/*/*&amp;quot;)]&lt;br /&gt;
public DataSet GetDataSet()&lt;br /&gt;
{&lt;br /&gt;
 //kód webovej metódy&lt;br /&gt;
}       &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
V práci sme opísali technologické pozadie XML webových služieb a  ich štandardy. Zamerali sme sa na ASP.NET webové služby. Vysvetlili sme si spôsoby, akým môžeme vytvoriť bezpečnostný komunikačný scenár medzi webovou službou a jej klientom. Rozobrali sme jednotlivé možnosti autentifikácie, autorizácie klientov webovej služby,  spôsoby na zabezpečenie dôvernosti a integrity komunikácie. Uviedli sme ich  výhody a nevýhody,  ktoré so sebou prinášajú. &lt;br /&gt;
&lt;br /&gt;
Ďalej sme upozornili na hlavné chyby, ktoré vznikajú pri zabezpečovaní XML webových služieb. Jedná sa hlavne o použitie technológie SSL a štandardu XML Encryption. Samotná technológia SSL nie je postačujúce na zabezpečenie komunikácia medzi webovou službou a jej klientom, nakoľko predstavuje zabezpečenie na úrovni komunikačného kanála  a predstavuje tzv. end – to  – end zabezpečenie. To nie je veľmi vhodné pre XML webové služby, nakoľko v praxi bývajú súčasť SOA. SOA architektúra tiež vyžaduje selektívne šifrovanie, ktoré nie je možné dosiahnuť so štandardom XML Encryption. Pri použití toho štandardu dochádza taktiež k deformácii XML tagov. Cieľom bezpečnostnej platformy bolo odstránenie týchto nedostatkov. Bezpečnostná platforma predstavuje zabezpečenie na úrovni aplikácie a tiež na úrovni správ. Počiatočná autentifikácia je realizovaná na základe certifikátov X509, pri volaní ďalších webových metód je klient autentifikovaný na základe autentifikačného lístka v SOAP hlavičke. Dĺžka platnosti autentifikačného lístka sa dá flexibilne meniť podľa potreby. SOAP správy sú selektívne šifrované pomocou AES, tým je dosiahnuté utajenie komunikácie. Integrita je zabezpečené prostredníctvom digitálneho podpisovania SOAP správ. Naša bezpečnostná platforma poskytuje autorizáčný mechanizmus prostredníctvom programovej impersonácie.&lt;br /&gt;
&lt;br /&gt;
Na otestovanie funkčnosti zabezpečenia komunikácie XML ASP.NET webovej služby  bola vytvorená Winforms klientska aplikácia. Programové knižnice predstavujúce bezpečnostnú platformu aj klientska aplikácia sú súčasťou DVD prílohy.&lt;br /&gt;
&lt;br /&gt;
=Použitá literatúra=&lt;br /&gt;
#MacDonald, Matthew., Beginning ASP.NET 3.5 in C# 2008: From Novice to Professional, Apress, 2007.  ISBN 978-1590598917&lt;br /&gt;
#Troelsen, Andrew., Pro C# 2008 and the .NET 3.5 Platform, Apress, 2007. ISBN 978-1590598849&lt;br /&gt;
#Glynn, Jay.,  Skinner, Morgan., Professional C# 2008, Wrox, 2008. ISBN  978-0470191378&lt;br /&gt;
#MacDonald, Matthew., Szpuszta, Mario., Pro ASP.NET 2.0 in C# 2005, Apress, 2005. ISBN 978-1590594964&lt;br /&gt;
#Foggon, Damien.,  Maharry, Daniel., Ullman, Chris., Watson, Karli., Programming Microsoft .NET XML Web Services, Microsoft Press, 2003. ISBN 978-0735619128&lt;br /&gt;
#Jones, Allen .,  Microsoft .NET XML Web Services Step by Step, Microsoft Press, 2002. ISBN13: 978-0735617209&lt;br /&gt;
#Eide, Andreas.,  Miller, Chris.,  Sempf, Bill Sempf., Professional ASP.NET Web Services,  Wrox Press, 2001. ISBN 978-1861005458&lt;br /&gt;
#Kurt, Chris., Web Services Architecture and Its Specifications: Essentials for Understanding WS, Microsoft Press, 2005. ISBN 978-0735621626&lt;br /&gt;
#Krowczyk, Andrew., Greenvoss, Zach., Banerjee. Ashish., Professional C# Web Services: Building .NET Web Services with ASP.NET and .NET Remoting, Wrox Press, 2001. ISBN 978-1861004390&lt;br /&gt;
#www.w3.org [online]. last updated: 2007-06-05 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/soap/&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2001-03-14 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/wsdl/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm&amp;gt;&lt;br /&gt;
#O'Neill, Mark., Web Services Security, McGraw-Hill Osborne Media, 2003. ISBN 978-0072224719&lt;br /&gt;
#Hartman, Bret.,  Flinn, Donald., Beznosov, Konstantin. Mastering Web Services Security, 2003. ISBN 978-0471267164&lt;br /&gt;
#Nantz, Brian., Expert Web Services Security in the .NET Platform, Apress, 2004. ISBN 978-1590591154&lt;br /&gt;
#Microsoft, Vytváříme zabezpečené aplikace v Microsoft ASP.NET, Computer Press, 2004. ISBN 80-251-0466-4&lt;br /&gt;
#www.w3.org [online]. last updated: 2008-06-10 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmldsig-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2002-12-13 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmlenc-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2004-03-26 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/MarkUp/SGML/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2005-12-20 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/XMKS/ &amp;gt;&lt;br /&gt;
#Rijmen, Vincent., The Design of Rijndael: AES - The Advanced Encryption Standard, Springer, 2002. ISBN 978-3540425809&lt;br /&gt;
#Tom, Denis., Cryptography for Developers, Syngress, 2007. ISBN 978-1597491044&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#Microsoft Corporation, Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0, Microsoft Press, 2006. ISBN 978-0735623149&lt;br /&gt;
#Hasan, Jeffrey., Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0, Apress, 2004. ISBN 978-1590593905&lt;br /&gt;
#Evjen, Bill., Web Services Enhancements: Understanding the WSE for .NET Enterprise Applications, Wiley, 2003. ISBN 978-0764537363&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/72wdk8cc(VS.71).aspx&lt;br /&gt;
#http://www.oasis-open.org [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/ms229335.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/e80y5yhx%28VS.80%29.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx&lt;br /&gt;
#Dostálek, Libor., Vohnoutová, Marta., Velký průvodce infrastrukturou PKI a technologií elektronického podpisu, 2006. ISBN 80-251-0828-7&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/cc488021.aspx&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5081</id>
		<title>SOAP Security Enhancement pre ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=SOAP_Security_Enhancement_pre_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5081"/>
		<updated>2010-06-11T12:45:12Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* SOAP Security Enhancement pre ASP.NET webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|9|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
=SOAP Security Enhancement pre ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich dvoch kapitolách sme si opísali teoretické možnosti zabezpečenia XML ASP.NET webových služieb a štandardy zamerané na bezpečnosť XML. Táto kapitola sa zaoberá vývojom vlastnej bezpečnostnej platformy pre XML ASP.NET webové služby v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, ktorú sme nazvali SOAP Security Enhancement (SSE) Naša bezpečnostná platforma bude predstavovať zabezpečenie na úrovni správ a tiež na úrovni aplikácie. Pri vytváraní  bezpečnostného systému pre webové aplikácie  treba zabezpečiť:&lt;br /&gt;
&lt;br /&gt;
* Mechanizmus pre overovanie klientskych aplikácií. Možnosti overovania klientov sme si podrobne rozobrali v kapitolách 5, 5.1, 5.2, 5.3.&lt;br /&gt;
* Mechanizmus pre autorizáciu klientov overených webovou službou. Spôsobmi autorizácie sme sa zaoberali kapitolách 5.1, kde sme sa zaoberali autorizáciou s využitým webového servera IIS a takisto autorizáciou prostredníctvom konfiguračného súboru webovej služby, ktorú sme si  opísali v kapitole 6.&lt;br /&gt;
* Mechanizmus pre zabezpečenie dôvernosti a integrity komunikácie. Spôsobov na vytvorenie bezpečnej komunikačnej linky je viacero. Najrozšírenejší spôsob je použitie technológie SSL, ktorou sme sa zaoberali v podkapitole 4.1. Táto technológia má aj svoje nedostatky, ktoré sme načrtli v kapitole  7 a s ktorými sa oboznámime v podkapitole 9.7.1.&lt;br /&gt;
V príslušných kapitolách sme vysvetlili výhody, nevýhody a oblasti použitia daných mechanizmov pre autentifikáciu, autorizáciu a zabezpečenie dôvernosti a integrity komunikácie. V tejto kapitole ponúkame vlastný komplexný spôsob, ako zabezpečiť komunikáciu medzi XML ASP.NET webovou službou a klientskou aplikáciou na platforme .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.1 sú prehľadne opísané spôsoby a technológie, ktoré použijeme na autentifikáciu, autorizáciu a  zabezpečenie dôvernosti a integrity komunikácie. Tie podrobnejšie popíšeme a vysvetlíme nasledujúcich podkapitolách.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.1'''  Popis technológií použitých pri vlastnej bezpečnostnej platforme&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Mechanizmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Technológia'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autentifikácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Certifikát X509'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Autorizácia bude realizovaná prostredníctvom programovej impersonácie, ktorú sme si vysvetlili v podkapitole 5.2.1. &lt;br /&gt;
|-&lt;br /&gt;
|Integrita a dôvernosť komunikácie&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Integrita a dôvernosť komunikácie bude zabezpečená prostredníctvom selektívneho šifrovania SOAP správ s využitím Advanced Encryption Standard  a prostredníctvom digitálneho podpisovania SOAP správ pomocou certifikátov X509 s využitím štandardu XML Signature.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Štruktúra SOAP Security Enhancement  z objektovo-orientovaného prístupu==&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.2 sú prehľadne opísané základné programové triedy bezpečnostnej platformy spolu s ich funkcionalitou. Podrobnejšie budú opísané v príslušných podkapitolách.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.2''' Triedy bezpečnostnej platformy &lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Názov triedy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AbstractDatabase&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda vytvorená podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DbProvider&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda pre prístup k MS SQL databázovému úložisku. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtension&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda SOAP rozšírenia umožňuje prístup k SOAP   správam v rôznych etapách spracovania. &lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje atribút SOAP rozšírenia, pomocou ktorého sa špecifikujú konkrétne časti (elementy) SOAP správy ktoré budú šifrované a digitálne podpísané.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureExtensionUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda obsahuje metódy na šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SecureUtilities&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Zabezpečuje autentifikáciu klienta, vygenerovanie parametrov AES šifry a vytvorenie konfiguračného XML dokumentu obsahujúce parametre pre bezpečnú komunikáciu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TicketIdentity&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto trieda  reprezentuje autentifikačný lístok umiestnený v SOAP hlavičke klienta.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserData&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje „data object“ reprezentujúci údaje pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserImpersonation&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TTrieda zabezpečuje mechanizmus autorizácie prostredníctvom Windows impersonácie.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia klientov v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Možnosti na overovanie klientov pre XML ASP.NET webové služby sú značne obmedzené. Kedže webová služba neposkytuje žiaden vstavaný spôsob akým, by mohol užívateľ predložiť prihlasovacie údaje, napríklad webový formulár. Najrozšírenejšie spôsoby overovania klientov webovou službou sú tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Autentifikácie Windows. Tento typ nie je veľmi flexibilný a má veľa nedostatkov, ktoré sme si opísali v kapitole 5.1.&lt;br /&gt;
* Vlastný typ autentifikačného procesu založeného na prihlasovacích lístkoch  s využitím SOAP rozšírenia.&lt;br /&gt;
* Použitie klientskych certifikátov X509.&lt;br /&gt;
&lt;br /&gt;
Autentifikáciu založenú na certifikátoch X509 sme zvolili z nasledujúcich dôvodov:&lt;br /&gt;
&lt;br /&gt;
1. Použitie klientskych certifikátov dáva značnú kontrolu nad užívateľskými identitami, nakoľko  certifikáty sú vydávané  certifikačnou autoritou, ktorá býva zvyčajne pod kontrolou administrátora servera, na ktorom môže byť hosťovaná webová služba. Tak isto je možné klientske certifikáty mapovať na užívateľské účty Windows, či už  priamo na webovom serveri IIS alebo priamo programovo vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
2. Certifikáty X509 predstavujú účinnú ochranu proti  podvrhnutiu falošného verejného kľúča ( Man-in-the-Middle Attack &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;36&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ).&lt;br /&gt;
&lt;br /&gt;
3. Tak isto predstavuje účinný mechanizmus na zabezpečenie toho, že vlastník verejného kľúča má k nemu zodpovedajúci súkromný kľúč.&lt;br /&gt;
&lt;br /&gt;
Certifikátom sme sa podrobnejšie venovali v podkapitole 4.1.1. Na vystavenie klientskych certifikátov sme  vytvorili vlastnú testovaciu certifikačnú autoritu na operačnom systéme Windows Server 2003.&lt;br /&gt;
&lt;br /&gt;
Počiatočnú autentifikáciu sme sa rozhodli teda realizovať prostredníctvom klientskych certifikátov X509. Na korektný prenos certifikátov X509 je nutný HTTPS prenos.&lt;br /&gt;
&lt;br /&gt;
Kedže použitie technológie SSL má aj nedostatky a pri prenose veľkého množstva dát je náročné, rozhodli sme sa, že HTTPS kanál bude použitý  pri komunikácii klienta a webovej služby iba raz, a to pri počiatočnom volaní webovej metódy, ktorá zabezpečí overenie klienta na základe klientskeho certifikátu X509. Následne bude klientovi vydaný „autentifikačný lístok&amp;quot;, ktorý bude umiestnený do SOAP hlavičky. Lístok obsahuje  128  bitové jedinečné číslo, ktoré  identifikuje užívateľa pri nasledujúcich volaniach webových metód, a je použitý na jeho overenie. Lístok sa vydáva klientovi s určitou časovou platnosťou, ktorú je možné podľa potreby a priority meniť.&lt;br /&gt;
&lt;br /&gt;
Hodnota ID  v autentifikačnom lístku je uložená spolu s príslušnými údajmi z klientskeho certifikátu do relačnej databázy, ktorú webová služba používa na ďalšie overovanie klienta pri volaní webových metód.&lt;br /&gt;
&lt;br /&gt;
Proces prvotnej autentifikácie je nasledovný. Pri počiatočnom prístupe klienta k webovej službe musí klient zavolať webovú metódu '''CreateConnection''' webovej služby. Metóda&lt;br /&gt;
&lt;br /&gt;
CreateConnection plní v komunikačnom scenári nasledujúce funkcie:&lt;br /&gt;
&lt;br /&gt;
* Overenie klientskeho certifikátu.&lt;br /&gt;
* Vytvorenie SOAP hlavičky s užívateľským ID.&lt;br /&gt;
* Zápis príslušných parametrov z klientskeho certifikátu do databázy.&lt;br /&gt;
* Vygenerovanie a zaslanie parametrov AES, ktoré sú použité na šifrovanie SOAP správ.&lt;br /&gt;
Prostredníctvom vlastnosti''' Context''', ktorú trieda webovej služby  získala odvodením z abstraktnej triedy WebService (pozri podkapitola 2.1),  je extrahovaný klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.3''' Extrahovanie klientského certifikátu z vlastnosti Context&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
X509Certificate2 cert = new X509Certificate2(Context.Request.ClientCertificate.Certificate);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Následne je klientsky certifikát overený na revokáciu a dôveryhodnosť certifikačnej autority.&lt;br /&gt;
&lt;br /&gt;
Pokiaľ je certifikát klienta úspešne overený,  webová metóda CreateConnection vygeneruje hodnotu ID v autentifikačnom lístku.&lt;br /&gt;
&lt;br /&gt;
Po vygenerovaní ID pre overeného klienta sú údaje z klientskeho certifikátu (verejný kľúč a common name), ID klienta spolu s  dátumom a časom vytvorenia lístka zapísané do databázy. Následne je vytvorená SOAP hlavička , do ktorej je umiestnené ID užívateľa.&lt;br /&gt;
&lt;br /&gt;
Výhoda vlastného autentifikačného systému na lístkoch:&lt;br /&gt;
&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód  nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
Parametre AES šifry sú zaslané webovou metódou''' CreateConnection''' vo forme XML dokumentu. XML dokument je zašifrovaný pomocou RSA šifry s využitím verejného kľúča z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
XML dokument obsahuje parametre AES šifry a takisto verejný kľúč z certifikátu servera, na overenie digitálneho podpisu SOAP správy webovej služby.&lt;br /&gt;
&lt;br /&gt;
Zašifrované XML je  na strane klienta dešifrované pomocou súkromného kľúča z patričného klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
Parametre AES šifry využíva objekt proxy na šifrovanie SOAP požiadaviek klienta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.4''' Autentifikačný lístok v SOAP hlavičke&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
       &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Ticket&amp;gt;f84bd797-8ea5-463c-9319-5d952ec30207&amp;lt;/Ticket&amp;gt; &lt;br /&gt;
       &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
   &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
   &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_13.png|framed|center|Obr. 9.1 Autentifikačný proces]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis autentifikačného procesu na Obr. 9.1 :&lt;br /&gt;
&lt;br /&gt;
1. Načítanie klientskeho certifikátu z úložiska.&lt;br /&gt;
&lt;br /&gt;
2. Pridanie certifikátu k objektu proxy a zavolanie webovej metódy CreateConnection.&lt;br /&gt;
&lt;br /&gt;
3. Autentifikácia klientskeho certifikátu, vydanie autentifikačného lístka, ak bol certifikát prijatý.&lt;br /&gt;
&lt;br /&gt;
4. Pri následnom volaní webovej metódy sa autentifikácia klienta vykoná na základe autentifikačného lístka a komunikácia prebieha cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Databázové úložisko==&lt;br /&gt;
&lt;br /&gt;
Ako sme v predchádzajúcej podkapitole spomenuli, informácie o autentifikovanom klientovi sú na strane webovej služby uchovávané v relačnej databáze, konkrétne MS SQL. Pre komunikáciu s databázovým úložiskom sme mohli použiť nasledujúce technológie:&lt;br /&gt;
&lt;br /&gt;
1. LINQ to SQL &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;32&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
2. ADO.NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LINQ to SQL poskytuje niektoré pokročilé možnosti v porovnaní s ADO.NET. Avšak samotná technológia ADO.NET poskytuje dostatočnú podporu pre rôzne DBMS &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;33&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* MS SQL Server,&lt;br /&gt;
* MS SQL Mobile Server,&lt;br /&gt;
* Oracle,&lt;br /&gt;
* MySQL,&lt;br /&gt;
* ODBC,&lt;br /&gt;
* OLEDB.&lt;br /&gt;
V praktickej časti sme vytvorili triedu AbstractDatabase podľa návrhového vzoru Abstract Factory, ktorá umožňuje flexibilne vytvoriť triedu na prístup k databázovému úložisku podľa konkrétneho DBMS. Tým je zabezpečená možnosť upraviť databázové úložisko pre potreby praxe. Pri komplexnej podnikovej aplikácii by bolo najvýhodnejšie použiť ORM Framework napr. NHibernate.  Dosiahli by sme separáciu objektového kódu od databázového kódu a znížili závislosť  logickej vrstvy od bussines vrstvy. Použitie ORM Frameworku je nad rámec tejto práce, ale považovali sme za vhodné ho spomenúť.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spracovanie SOAP správ==&lt;br /&gt;
&lt;br /&gt;
Jedným z prvkov na zabezpečenie integrity a dôvernosti komunikácie medzi klientskou aplikáciou a XML ASP.NET webovou službou je mechanizmus šifrovania a digitálneho podpisovania SOAP správ'''. '''Predtým, než si opíšeme spôsob, akým sú šifrované a podpisované SOAP správy, sa musíme oboznámiť so spôsobom, akým sú spracovávané SOAP správy na strane webovej služby aj na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
Spracovávanie SOAP správ na strane webovej služby, ale aj na strane klienta prebieha v 2 etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Serializácia.''' Požiadavka klienta alebo odpoveď webovej služby je serializovaná ako XML schéma.&lt;br /&gt;
&lt;br /&gt;
2. '''Deserializácia'''. SOAP správa je deserializovaná na dátové typy.&lt;br /&gt;
&lt;br /&gt;
Aby sme  mohli pristupovať k jednotlivým etapám spracovania SOAP správ, musíme implementovať mechanizmus SOAP rozšírenia na strane webovej služby, ale aj na strane klientskej aplikácie. Prístup k etapám serializácie a deserializácie je nutná podmienka na šifrovanie a digitálne podpisovanie SOAP správ&lt;br /&gt;
&lt;br /&gt;
==Rozšírenie SOAP==&lt;br /&gt;
&lt;br /&gt;
Rozšírenie SOAP predstavuje mechanizmus  akým môžeme manipulovať so SOAP správami na strane klienta aj na strane webovej služby. Tento spôsob je veľmi flexibilný, o čom sa presvedčíme neskôr. Pokiaľ vytvoríme SOP rozšírenie, spracovanie SOAP správ prechádza 4 etapami &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''BeforeDeserialize'''. Táto sa spúšťa v okamihu, keď webový server, poprípade objekt proxy dostanú SOAP správu.&lt;br /&gt;
* '''AfterDeserialize'''. V tejto etape je nespracovaná (raw) SOAP správa prevedená na dátové typy platformy .NET Framework. Vykonáva sa ešte pred spustením  webovej metódy.&lt;br /&gt;
* '''BeforeSerialize. '''V tejto etape sa už spracováva kód webovej metódy, ale návratová hodnota webovej metódy nie je ešte serializovaná do SOAP správy.&lt;br /&gt;
* '''AfterSerialize'''. V tejto etape je návratová hodnota webovej metódy serializovaná do SOAP správy, ale tá ešte nie je odoslaná na klientsku aplikáciu.&lt;br /&gt;
V etapách '''BeforeDeserialize '''a''' AfterSerialize '''môžeme získať celý obsah SOAP správy. SOAP rozšírenie musí byť vykonávané aj na strane klienta, a to prostredníctvom objektu proxy. Celý proces spracovania SOAP správ je na Obr. 9.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_14.png|framed|center|Obr. 9.2  Serializácia a Deserializácia SOAP správ]]&lt;br /&gt;
&lt;br /&gt;
==Vytvorenie SOAP rozšírenia==&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie na platforme .NET Framework sa skladá z 2 častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Samotného SOAP rozšírenia, reprezentovaného vlastnou triedou, ktorá musí byť vytvorená odvodením z triedy '''System.Web.Protocols.SoapExtension'''.&lt;br /&gt;
* Vlastného atribútu, ktorý sa použije u webovej metódy na indikáciu, že na danú webovú metódu sa má aplikovať SOAP rozšírenie. SOAP atribút sa vytvára odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút pre SOAP rozšírenie - SecureExtensionAttribute===&lt;br /&gt;
&lt;br /&gt;
Atribút SOAP rozšírenia umožňuje spojiť konkrétne rozšírenie SOAP s metódami webovej triedy. Vytvára sa odvodením z triedy '''System.Web.Protocols.SoapExtensionAttribute. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Atribút pre SOAP rozšírenie je v našej webovej službe implementovaný prostredníctvom triedy''' SecureExtensionAttribute'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.5''' Atribút SoapExtension&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[AttributeUsage(AttributeTargets.Method)]&lt;br /&gt;
 public class SecureExtensionAttribute : SoapExtensionAttribute&lt;br /&gt;
 {...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda pre SOAP rozšírenie obsahuje atribút AttributeUsage. Pomocou neho špecifikujeme oblasť použitia nášho atribútu. Náš atribút  bude teda použitý na  jednotlivé deklarácie webových metód.&lt;br /&gt;
&lt;br /&gt;
V našej triede pre SOAP rozšírenie je nutné prekryť 2 abstraktné vlastnosti, ktoré trieda získala odvodením z triedy System.Web.Protocols.SoapExtensionAttribute. Ide o vlastnosti &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Priority'''. Slúži na nastavenie poradia, v akom sa spracujú SOAP rozšírenia, pokiaľ ich je na webovú metódu nakonfigurovaných viacero.&lt;br /&gt;
* '''ExtensionType.''' Vracia objekt Type, ktorý reprezentuje našu vlastnú triedu pre SOAP rozšírenia.&lt;br /&gt;
Trieda '''SecureExtensionAttribute''' pre atribút SOAP rozšírenia implementuje metódu '''SoapElement''', pomocou ktorej budeme konfigurovať, ktoré časti SOAP správy budú šifrované. Konfigurácia sa vykonáva  prostredníctvom Xpath výrazu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Trieda  SOAP rozšírenia - SecureExtension===&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je implementované v našej webovej službe prostredníctvom triedy''' SecureExtension. '''Každá trieda pre SOAP rozšírenie musí byť vytvorená odvodením z '''System.Web.Protocols.SoapExtension. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. V Tab. 9.6 sú povinné metódy, ktoré musíme prekryť pri vytváraní triedy pre SOAP rozšírenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.6'''' Trieda SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public class SecureExtension : SoapExtension&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.7''' Povinné metódy triedy SOAP rozšírenia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Metóda'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|GetInitializer()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri prvom  vykonaní SOAP rozšírenia. To umožňuje inicializovať hodnoty niektorých dát, ktoré sa použijú pri spracovaní SOAP správ. Takisto v tejto metóde môžeme extrahovať hodnoty atribútu pre SOAP rozšírenie. Táto metóda má dve verzie. Volá sa vždy len jedna, v závislosti od toho či je SOAP rozšírenie nakonfigurované prostredníctvom atribútu alebo konfiguračného súboru.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Initialize()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda predáva počiatočné informácie pre SOAP rozšírenie. Je spúšťaná pri každom  vykonaní SOAP rozšírenia.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ProcessMessage()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto metóda vykonáva vlastné spracovanie SOAP rozšírenia, umožňuje modifikovať SOAP správy. V tejto metóde sú volané metódy pre šifrovanie a digitálne podpisovanie SOAP správ.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|ChainStream()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňuje získať prístup k SOAP bez prerušenia iných rozšírení.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Trieda SOAP rozšírenia SecureExtension implementuje v sebe dve pomocné metódy :&lt;br /&gt;
&lt;br /&gt;
* '''RequestMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  dešifrovanie a overenie digitálneho podpisu SOAP požiadavky.&lt;br /&gt;
* '''ResponseMessage'''. Jej úlohou je predať SOAP stream objektu typu SecureExtensionUtilities na  zašifrovanie a  digitálne podpísanie SOAP odpovede .&lt;br /&gt;
&lt;br /&gt;
SOAP rozšírenie je v podobnej forme, s malými zmenami,  implementované aj na strane klienta, s malými zmenami .&lt;br /&gt;
&lt;br /&gt;
===Metóda ProcessMessage===&lt;br /&gt;
&lt;br /&gt;
Metóda ProcessMessage je volaná ASP.NET v týchto štyroch etapách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''BeforeDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
2. '''AfterDeserialize,'''&lt;br /&gt;
&lt;br /&gt;
3. '''BeforeSerialize,'''&lt;br /&gt;
&lt;br /&gt;
4. '''AfterSerialize.'''&lt;br /&gt;
&lt;br /&gt;
Etapa '''BeforeDeserialize'''  je prvou etapou spracovanie SOAP požiadavky od klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Načítanie hodnoty autentifikačného lístka z hlavičky SOAP správy od klienta.&lt;br /&gt;
* Overenie platnosti autentifikačného lístka. Autentifikačný lístok sa vydáva klientovi s obmedzenou časovou  platnosťou. V databáze na strane webovej služby je každá hodnota autentifikačného lístka spojená s časom, kedy bol lístok vydaný. Na základe hodnoty lístka sú načítané parametre AES šifry a verejný kľúč klienta.&lt;br /&gt;
* Po úspešnom overení lístka je  SOAP stream predaný na dešifrovanie a overenie digitálneho podpisu prostredníctvom pomocnej metódy '''RequestMessage. '''Proces dešifrovania a overenia digitálneho podpisu je vykonávaný triedou SecureExtensionUtilities. Táto trieda bude popísaná v samostatnej podkapitole.&lt;br /&gt;
Spracovanie SOAP správy  v etape BeforeDeserialize je znázornené na Obr. 9.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_15.png|framed|center|Obr. 9.3 Spracovanie SOAP správy v etape BeforeDeserialize]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Etapa''' AfterSerialize''' je poslednou etapou spracovania SOAP odpovede zasielanej na klienta. V tejto etape sa na strane webovej služby vykonáva:&lt;br /&gt;
&lt;br /&gt;
* Predanie SOAP streamu na digitálne podpísanie a zašifrovanie SOAP správy prostredníctvom pomocnej metódy '''ResponseMessage'''.  Samotný proces šifrovania a digitálneho podpisovania je vykonávaný triedou SecureExtensionUtilities.&lt;br /&gt;
&lt;br /&gt;
Hlavnou  úlohou triedy SecureExtension  je:&lt;br /&gt;
&lt;br /&gt;
* Počiatočná autentifikácia klienta na základe hodnoty lístka v SOAP hlavičke.&lt;br /&gt;
* Načítanie AES parametrov a verejného kľúča z databázy.&lt;br /&gt;
* Predanie SOAP streamov na spracovanie triede '''SecureExtensionUtilities'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_16.png|framed|center|Obr. 9.4 Životný cyklus triedy SecureExtension]]&lt;br /&gt;
&lt;br /&gt;
==Šifrovanie a dešifrovanie==&lt;br /&gt;
&lt;br /&gt;
Úlohou šifrovania je zabezpečiť dôvernosť a integritu komunikácie na komunikačnej ceste, ktorú tvorí viacero uzlov, čiže  vykryť nedostatky technológie SSL. Šifrovanie SOAP správ predstavuje tzv. zabezpečenie na úrovni správ. V našej bezpečnostnej platforme je umožnené selektívne šifrovanie SOAP,  ktoré sa dá podľa potreby nastavovať pomocou atribútov SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
Šifrovanie a dešifrovanie SOAP správ je vykonávané v triede SecureExtensionUtilities. Skôr ako vysvetlíme, akým spôsobom je zabezpečená dôvernosť a integrita komunikácie, rozoberieme si nevýhody použitia samotnej technológie SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Nevýhody technológie SSL===&lt;br /&gt;
&lt;br /&gt;
Veľmi rozšíreným spôsobom zabezpečenia komunikácie webových aplikácií je použitie technológie SSL, ktorú sme si popísali v podkapitole  4.1. Pre zabezpečenie webových služieb nie je táto technológia veľmi vhodná. Medzi obmedzenia SSL v spojitosti s XML webovými službami patrí:&lt;br /&gt;
&lt;br /&gt;
* SSL predstavuje tzv. end - to - end zabezpečenie komunikácie. Pokrytý je len odosielateľ a príjemca správy. Pre XML webové služby je  nutné zabezpečiť komunikáciu medzi každými dvoma uzlami komunikácie, ide o tzv. point – to – point zabezpečenia.&lt;br /&gt;
* SSL predstavuje zabezpečenie komunikácie iba na transporte. Pre webové služby je vhodnejšie zabezpečenie na úrovni správ. SSL je závislé na HTTP protokole.&lt;br /&gt;
* SSL šifruje celú komunikáciu,  neumožňuje selektívne šifrovanie a takisto nepodporuje v plnej miere mechanizmus nepopierateľnosti. Pre webové služby, ktoré sú súčasťou SOA, je selektívne šifrovanie nutnou podmienkou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_17.png|framed|center|Obr. 9.5  Point-to-point a end-to-end zabezpečenie]]&lt;br /&gt;
&lt;br /&gt;
===Advanced Encryption Standard===&lt;br /&gt;
&lt;br /&gt;
Pri počiatočnej výmene konfiguračného XML dokumentu je využitá asymetrická šifra RSA s využitím kľúčov z certifikátov webovej služby a klienta. Ďalšia komunikácia je šifrovaná pomocou symetrického šifrovacieho algoritmu. Ako šifrovací algoritmus sme zvolili  symetrický blokový algoritmus Rijndael, ktorý bol v roku 1997  vyhlásený  americkým úradom pre štandardizáciu (NIST) ako štandard. Dodnes nie sú známe dôkazy o jeho prelomení. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;23&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AES  predstavuje blokový šifrovací algoritmus so šírkou bloku 128 bitov a možnými dĺžkami kľúčov 128, 192 a 256. Rijndael podporuje aj voliteľné väčšie dátové bloky a kľúče  v 32- bitových prírastkoch, ale tie nie sú  zahrnuté v špecifikácii  štandardu AES. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;22&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trieda SecureExtensionUtilities==&lt;br /&gt;
&lt;br /&gt;
Ako už bolo spomenuté, SOAP správy sú šifrované pomocou symetrickej šifry Rijndael,  ktoré časti SOAP správy budú šifrované, je určené pomocou atribútov SOAP rozšírenia. Trieda SecureExtensionUtilities  zabezpečuje šifrovanie, dešifrovanie, digitálne podpisovanie a verifikáciu digitálneho podpisu SOAP správ.&lt;br /&gt;
&lt;br /&gt;
SecureExtensionUtilities   implementuje v sebe dve hlavné verejné metódy:&lt;br /&gt;
&lt;br /&gt;
* '''InSoap,'''&lt;br /&gt;
* '''OutSoap,'''&lt;br /&gt;
a tieto pomocné privátne metódy:&lt;br /&gt;
&lt;br /&gt;
* DecryptString, metóda dešifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* DecryptSoap, dešifruje XML dokument.&lt;br /&gt;
* VerifySignedSoap, overuje digitálny podpis SOAP správy.&lt;br /&gt;
* SingSoap, digitálne podpisuje SOAP správu na základe štandardu XML Signature.&lt;br /&gt;
* EncryptString, metóda šifruje textový reťazec z XML dokumentu.&lt;br /&gt;
* EncryptSoap, šifruje XML dokument.&lt;br /&gt;
&lt;br /&gt;
Metóda''' InSoap''' spracováva stream SOAP  požiadavky od klienta. Táto metóda je volaná  v etape BeforeDeserialize metódy ProcessMessage. Ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
Ak nie je SOAP správa šifrovaná, metóda InSoap vráti ASP.NET vstupný SOAP prúd. Celý proces spracovania je znázornený na Obr. 9.3. Pokiaľ príde k zmene SOAP správy počas prenosu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený a nepríde k spracovaniu SOAP správy, či už na strane webovej služby, alebo na strane klientskej aplikácie.&lt;br /&gt;
&lt;br /&gt;
'''Overovanie digitálneho podpisu na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom, že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie. Na overovanie je použitý verejný kľúč zo serverového certifikátu webovej služby. Úlohou metódy InSoap je teda dešifrovať SOAP správu a overiť jej digitálny podpis.&lt;br /&gt;
&lt;br /&gt;
Metóda''' OutSoap''' spracováva stream SOAP  odpovede zasielaného na klienta. Táto metóda je volaná  v etape AfterSerialize metódy ProcessMessage. Metóda OutSoap ako vstupné parametre akceptuje:&lt;br /&gt;
&lt;br /&gt;
* string&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt; soapElement určuje, ktoré elementy SOAP správy budú šifrované.&lt;br /&gt;
* Stream inputStream predstavuje raw SOAP správu.&lt;br /&gt;
* User user, trieda User predstavuje dátový objekt obsahujúci AES parametre a verejný kľúč klienta.&lt;br /&gt;
* X509Certificate2 webServiceCert, objekt typu X509Certificate2 predstavuje serverový certifikát so súkromným kľúčom, ktorý sa použije na digitálne podpísanie SOAP správy.&lt;br /&gt;
Úlohou tejto metódy je digitálne podpísať a zašifrovať SOAP správu. Každá zašifrovaná SOAP správa od klienta má v SOAP hlavičke umiestnený dodatočný '''element IsEncrypted''', ktorý slúži na identifikáciu, či je daná SOAP správa zašifrovaná. V Tab. 9.8 je ukážka zašifrovania SOAP správy&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.8''' Ukážka zašifrovanie SOAP správy&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
               xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
               xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
    &amp;lt;TicketHeader xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Ticket&amp;gt;2541a182-8f4f-46c3-84f7-e667c221f494&amp;lt;/Ticket&amp;gt;&lt;br /&gt;
    &amp;lt;/TicketHeader&amp;gt;&lt;br /&gt;
    &amp;lt;IsEncrypted /&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
&amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;SseReadPatient xmlns=&amp;quot;http://tempuri.org/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;id&amp;gt;Wk/C7PGSj/+fg2jQhQlUyg==&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;/SseReadPatient&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Digitálne podpisovanie SOAP správ je realizované prostredníctvom '''štandardu XML Signature''', ktorý sme si popísali v podkapitole 8.1. SOAP správy sú podpisované na strane servera prostredníctvom súkromného kľúča zo serverového certifikátu. Na strane klienta je digitálne podpisovanie realizované prostredníctvom  súkromného kľúča z klientskeho certifikátu. V Tab. 9.9 je ukážka podpísanej SOAP správy.&lt;br /&gt;
&lt;br /&gt;
'''Digitálne podpisovanie na strane klienta''' je '''realizované '''obdobným spôsobom, rozdiel je v tom že podpisovanie SOAP správ realizuje objekt '''proxy''', v ktorom je implementované samotné SOAP rozšírenie.  Na podpísanie  SOAP správy je použitý súkromný kľúč z klientskeho certifikátu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.9''' Podpísaná SOAP správa&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope:xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; &lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
	 xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
  &amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;http://www.w3.org/TR/2001/REC-xml-c14n-20010315&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt; &lt;br /&gt;
        &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Transforms&amp;gt;&lt;br /&gt;
	           &amp;lt;Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt; &lt;br /&gt;
               &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
           &amp;lt;DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt; &lt;br /&gt;
           &amp;lt;DigestValue&amp;gt;2yfAuq6taP4kPBsFEM+J79F7ysM=&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
        &amp;lt;/Reference&amp;gt;&lt;br /&gt;
     &amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
     &amp;lt;SignatureValue&amp;gt;r2NmZyXtsku0WfbAJ4Kej/Kx0W0hAYCGAq7ltU7P5EN/NfQLYtZBCr97KHqNHkrEOqnU8Freg6&lt;br /&gt;
	                 hEg1LXBhrkmF86bOApHTfOrdzpeK1WjK/tKO2G+xigjD8/PBhQszRK/qfG54gdY3kJ/y/kmn/S&lt;br /&gt;
			 F+W49scLowecDxxeIx29UeI3m4yF8GoDGL3xjB/sEN78u8owdaBVcwkH2jIHWz6CiwPHk7YNLF&lt;br /&gt;
			 c/Q0/XqE/ieBnAB2i0gLbM377AdHr9qLwMHVG/M9RVyl0JkWnUI8Viwm3Y268xz7cNlTnfa3uT&lt;br /&gt;
			 hOGHMgmVDrBboHL44zZIBAZbsNsbqSPEipTMDVc7efC0Vg==&lt;br /&gt;
	 &amp;lt;/SignatureValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri digitálnom podpisovaní sme použili kanonizačný algoritmus na element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;SignedInfo&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Použitie je indikované prostredníctvom elementu CanonicalizationMethodAlgorithm. Je to z toho dôvodu, aby sme zabránili  rozdielnym výsledkom pri overovaní digitálneho podpisu. Nakoľko textová reprezentácia XML môže byť spracovaná rozdielne v závislosti použitého dátového prúdu (prázdne tagy, white space, komentáre...), kanonizácia definuje presnú fyzickú štruktúru dokumentu.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.10''' Zoznam algoritmom použitých pri digitálnom podpisovaní SOAP&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Algoritmus'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|SHA1&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Hašovací algoritmus použitý pri výpočte hašu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|RSA&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kryptografický algoritmus použitý na vytvorenie digitálneho podpisu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|REC&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Kanonizačný algoritmus.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sme si popísali  štruktúru triedy SecureExtensionUtilities, vysvetlili sme si akým spôsobom je spracovaný SOAP stream z triedy SOAP rozšírenia, a taktiež digitálne podpisovanie, verifikáciu, šifrovanie a dešifrovanie  SOAP správ.&lt;br /&gt;
&lt;br /&gt;
==Autorizácia v SOAP Security Enhancement==&lt;br /&gt;
&lt;br /&gt;
Selektívne šifrovanie a digitálne podpisovanie má ochrániť samotnú komunikáciu medzi webovou službou a jej klientom. Úlohou autorizácie  je rozhodnúť, aké operácie bude môcť autentifikovaný užívateľ vykonávať a k akým zdrojom bude mať prístup na strane webovej služby. Pri vytváraní autorizačných pravidiel sme mali tieto možnosti:&lt;br /&gt;
&lt;br /&gt;
* Vytvoriť autorizačné pravidlá v konfiguračnom súbore webovej služby. Týmto spôsobom sme sa zaoberali v podkapitole 6.1.&lt;br /&gt;
* Namapovať klientske certifikáty na užívateľské účty systému Windows prostredníctvom IIS.&lt;br /&gt;
* Použiť niektorý zo spôsobov impersonácie, ktorými sme sa zaoberali v podkapitole 5.2.1.&lt;br /&gt;
Použitie autorizačných pravidiel v súbore web.config je relatívne flexibilný spôsob autorizácie, ale neposkytuje také pokročilé možnosti ako impersonácia. Rozhodli sme sa použiť programovú impersonáciu, a to z nasledujúcich dôvodov :&lt;br /&gt;
&lt;br /&gt;
* Umožňuje mapovanie klientskych certifikátov na užívateľské účty systému dvoma rôznymi spôsobmi :&lt;br /&gt;
*  One – to – one,&lt;br /&gt;
*  Many – to – one.&lt;br /&gt;
* Programová impersonácia nám umožní flexibilne nastaviť, ktorá časť programového kódu bude vykonávaná pod účtom Network Service a ktorá pod nami zvoleným užívateľským účtom. Tento spôsob sa prostredníctvom mapovania klientskych certifikátov na IIS nedá docieliť.&lt;br /&gt;
Proces programovej impersonácie je nasledovný :&lt;br /&gt;
&lt;br /&gt;
* V databáze je priradený ku každému klientskemu certifikátu jeden užívateľský účet  systému Windows.&lt;br /&gt;
* Pri úspešnej počiatočnej autentifikácii klienta  prostredníctvom certifikátu, sa jeho autentifikačný lístok namapuje na užívateľský účet.&lt;br /&gt;
Programová impersonácia je vykonávaná triedou UserImpersonation, ktorá obsahuje tieto metódy :&lt;br /&gt;
&lt;br /&gt;
* Login  - získa príznak účtu užívateľa Windows.&lt;br /&gt;
* Impersonate - spustí proces vykonávania programového kódu v kontexte identity užívateľského účtu. Pokiaľ  klientov autentifikačný lístok nie je namapovaný na užívateľský účet, programový kód bude vykonávaný pod účtom Network Service, ktorý predstavuje prednastavený účet pre spracovanie ASPNET na systéme Windows Server 2003.&lt;br /&gt;
* UndoImpersonate -  ukončí impersonáciu programového kódu.&lt;br /&gt;
Prostredníctvom užívateľských účtov Windows môžeme jednotlivým klientom webovej služby vyčleniť prístup k súborom na disku, k databáze a pod. Použitie triedy UserImpersonate  je znázornené v Tab. 9.11.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.11'''  Použitie triedy UserImpersonate&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
UserImpersonation  _objImp = new UserImpersonation();&lt;br /&gt;
 &lt;br /&gt;
_objImp.ReadUserAccount(Ticket.Ticket);&lt;br /&gt;
&lt;br /&gt;
_objImp.Login();&lt;br /&gt;
&lt;br /&gt;
_objImp.Impersonate();&lt;br /&gt;
&lt;br /&gt;
//programový kód, ktorý ma byť vykonáný pod inou identitou&lt;br /&gt;
&lt;br /&gt;
_objImp.UndoImpesonate();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Výhody SOAP Security Enhancement pre ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V minulosti sa na zabezpečenie ASP.NET webových služieb využívalo rozšírenie Web Services Enhancements (WSE) &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;25&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;26&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;27&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Súčasná verzia 3.0 nepodporuje ASP.NET webové služby. Preto je veľmi ťažké porovnať navrhovanú vlastnú bezpečnostnú platformu s nejakým oficiálnym spôsobom zabezpečenia. Jediným možným riešením bolo porovnať  spôsob zabezpečenia s rozšírením WSE 2.0. Tento produkt mal veľmi veľa problémov v oblasti interoperability  a takisto je zastaralý. Preto sme sa vyhli porovnaniu našej bezpečnostnej platformy s týmto rozšírením.&lt;br /&gt;
&lt;br /&gt;
:Naša bezpečnostná platforma poskytuje zabezpečenie na úrovni aplikácie a taktiež na úrovni správ. Poskytuje dva spôsoby autentifikácie :&lt;br /&gt;
&lt;br /&gt;
* Počiatočnú autentifikáciu založenú na certifikátoch X509. Výhodou tohto spôsobu autentifikácie je dobrá kontrola nad užívateľskými identitami.&lt;br /&gt;
* Autentifikáciu založenú na autentifikačných lístkoch v SOAP hlavičke. Výhodou tohto spôsobu autentifikácie je :&lt;br /&gt;
* Výhoda vytvorenia SOAP hlavičky je tá, že objekt proxy ju na strane klienta automaticky udržuje. Pokiaľ klient používa rovnakú inštanciu triedy proxy, bude automaticky  a pri ďalšom odosielaní SOAP správ na webovú službu posielaný aj autentifikačný lístok v SOAP hlavičke.&lt;br /&gt;
* Pri opätovnom volaní webových metód nemusí byť posielaný s požiadavkou aplikácie aj klientsky certifikát. Vďaka tomu nemusí byť opätovne použité aj HTTPS spojenie.&lt;br /&gt;
* Autentifikačný lístok môže byť aplikácii vydaný s určitou časovou platnosťou, čo zvyšuje flexibilitu systému.&lt;br /&gt;
&lt;br /&gt;
Integrita komunikácie je zabezpečená prostredníctvom digitálneho podpisovania na základe štandardu XML Signature. SOAP správy sú podpisované na základe privátnych kľúčov z certifikátov a overované na základe verejných kľúčov z certifikátov. Pokiaľ príde k zmene SOAP správy počas transferu cez HTTP kanál, čiže overenie digitálneho podpisu SOAP správy indikuje sfalšovanie alebo podvrhnutie, klient je upozornený  a nepríde k spracovaniu SOAP správy, či už na strane webovej služby,  alebo na strane klientskej aplikácie&lt;br /&gt;
&lt;br /&gt;
Dôvernosť komunikácie je založená na šifrovaní SOAP správ pomocou symetrického blokového algoritmu Rijndael. Výhody:&lt;br /&gt;
&lt;br /&gt;
* SOAP správy sú selektívne šifrované, chránené sú len potrebné dáta. Selektívne šifrovanie je nevyhnutná podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
* Výhodou voči štandardu XML Encryption je ten, že pri našom šifrovaní nedochádza k „deformácii&amp;quot; XML tagov.&lt;br /&gt;
* Šifrovací algoritmus môže byť upravený podľa potreby praxe.&lt;br /&gt;
* Šifrovanie je realizované prostredníctvom SOAP rozšírenia. To znamená, že šifruje už serializované dáta. Vďaka tomu môžeme šifrovať a digitálne podpisovať aj vlastné dátové typy.&lt;br /&gt;
* Oproti technológii SSL predstavuje náš spôsob zabezpečenia point  to point, čo je ďalšia podmienka začlenenia XML webových služieb do SOA.&lt;br /&gt;
&lt;br /&gt;
Veľkú výhodu nášho zabezpečenia vidíme v spôsobe jeho samotného použitia. Celý mechanizmus ochrany SOAP správ sa aplikuje na webovú metódu prostredníctvom atribútu SOAP rozšírenia, ktorý predstavuje len dopísanie jedného riadku kódu nad webovú metódu.  Náš spôsob zabezpečenia nemení spracovanie programového kódu webovej metódy.&lt;br /&gt;
&lt;br /&gt;
V Tab. 9.12 je ukážka nastavenia šifrovania elementu body SOAP správy zasielanej ako odpoveď na klientsku aplikáciu. Elementy SOAP správy, ktoré majú byť zašifrované sa zadefinujú prostredníctvom Xpath výrazu pomocou vlastnosti SoapElement  triedy  atribútu SOAP rozšírenia.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 9.12''' Použitie atribútu SOAP rozšírenia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebMethod]&lt;br /&gt;
[SecureExtension(SoapElement = &amp;quot;//soap:Body/*/*&amp;quot;)]&lt;br /&gt;
public DataSet GetDataSet()&lt;br /&gt;
{&lt;br /&gt;
 //kód webovej metódy&lt;br /&gt;
}       &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Záver=&lt;br /&gt;
V práci sme opísali technologické pozadie XML webových služieb a  ich štandardy. Zamerali sme sa na ASP.NET webové služby. Vysvetlili sme si spôsoby, akým môžeme vytvoriť bezpečnostný komunikačný scenár medzi webovou službou a jej klientom. Rozobrali sme jednotlivé možnosti autentifikácie, autorizácie klientov webovej služby,  spôsoby na zabezpečenie dôvernosti a integrity komunikácie. Uviedli sme ich  výhody a nevýhody,  ktoré so sebou prinášajú. &lt;br /&gt;
&lt;br /&gt;
Ďalej sme upozornili na hlavné chyby, ktoré vznikajú pri zabezpečovaní XML webových služieb. Jedná sa hlavne o použitie technológie SSL a štandardu XML Encryption. Samotná technológia SSL nie je postačujúce na zabezpečenie komunikácia medzi webovou službou a jej klientom, nakoľko predstavuje zabezpečenie na úrovni komunikačného kanála  a predstavuje tzv. end – to  – end zabezpečenie. To nie je veľmi vhodné pre XML webové služby, nakoľko v praxi bývajú súčasť SOA. SOA architektúra tiež vyžaduje selektívne šifrovanie, ktoré nie je možné dosiahnuť so štandardom XML Encryption. Pri použití toho štandardu dochádza taktiež k deformácii XML tagov. Cieľom bezpečnostnej platformy bolo odstránenie týchto nedostatkov. Bezpečnostná platforma predstavuje zabezpečenie na úrovni aplikácie a tiež na úrovni správ. Počiatočná autentifikácia je realizovaná na základe certifikátov X509, pri volaní ďalších webových metód je klient autentifikovaný na základe autentifikačného lístka v SOAP hlavičke. Dĺžka platnosti autentifikačného lístka sa dá flexibilne meniť podľa potreby. SOAP správy sú selektívne šifrované pomocou AES, tým je dosiahnuté utajenie komunikácie. Integrita je zabezpečené prostredníctvom digitálneho podpisovania SOAP správ. Naša bezpečnostná platforma poskytuje autorizáčný mechanizmus prostredníctvom programovej impersonácie.&lt;br /&gt;
&lt;br /&gt;
Na otestovanie funkčnosti zabezpečenia komunikácie XML ASP.NET webovej služby  bola vytvorená Winforms klientska aplikácia. Programové knižnice predstavujúce bezpečnostnú platformu aj klientska aplikácia sú súčasťou DVD prílohy.&lt;br /&gt;
&lt;br /&gt;
=Použitá literatúra=&lt;br /&gt;
#MacDonald, Matthew., Beginning ASP.NET 3.5 in C# 2008: From Novice to Professional, Apress, 2007.  ISBN 978-1590598917&lt;br /&gt;
#Troelsen, Andrew., Pro C# 2008 and the .NET 3.5 Platform, Apress, 2007. ISBN 978-1590598849&lt;br /&gt;
#Glynn, Jay.,  Skinner, Morgan., Professional C# 2008, Wrox, 2008. ISBN  978-0470191378&lt;br /&gt;
#MacDonald, Matthew., Szpuszta, Mario., Pro ASP.NET 2.0 in C# 2005, Apress, 2005. ISBN 978-1590594964&lt;br /&gt;
#Foggon, Damien.,  Maharry, Daniel., Ullman, Chris., Watson, Karli., Programming Microsoft .NET XML Web Services, Microsoft Press, 2003. ISBN 978-0735619128&lt;br /&gt;
#Jones, Allen .,  Microsoft .NET XML Web Services Step by Step, Microsoft Press, 2002. ISBN13: 978-0735617209&lt;br /&gt;
#Eide, Andreas.,  Miller, Chris.,  Sempf, Bill Sempf., Professional ASP.NET Web Services,  Wrox Press, 2001. ISBN 978-1861005458&lt;br /&gt;
#Kurt, Chris., Web Services Architecture and Its Specifications: Essentials for Understanding WS, Microsoft Press, 2005. ISBN 978-0735621626&lt;br /&gt;
#Krowczyk, Andrew., Greenvoss, Zach., Banerjee. Ashish., Professional C# Web Services: Building .NET Web Services with ASP.NET and .NET Remoting, Wrox Press, 2001. ISBN 978-1861004390&lt;br /&gt;
#www.w3.org [online]. last updated: 2007-06-05 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/soap/&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2001-03-14 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/wsdl/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/uddi-spec/doc/tcspecs.htm&amp;gt;&lt;br /&gt;
#O'Neill, Mark., Web Services Security, McGraw-Hill Osborne Media, 2003. ISBN 978-0072224719&lt;br /&gt;
#Hartman, Bret.,  Flinn, Donald., Beznosov, Konstantin. Mastering Web Services Security, 2003. ISBN 978-0471267164&lt;br /&gt;
#Nantz, Brian., Expert Web Services Security in the .NET Platform, Apress, 2004. ISBN 978-1590591154&lt;br /&gt;
#Microsoft, Vytváříme zabezpečené aplikace v Microsoft ASP.NET, Computer Press, 2004. ISBN 80-251-0466-4&lt;br /&gt;
#www.w3.org [online]. last updated: 2008-06-10 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmldsig-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2002-12-13 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/xmlenc-core/ &amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2004-03-26 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/MarkUp/SGML/&amp;gt;&lt;br /&gt;
#www.oasis-open.org [online]. last updated: 2009-12-19 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&amp;gt;&lt;br /&gt;
#www.w3.org [online]. last updated: 2005-12-20 [cit. 2009-12-19]. Dostupná z WWW: &amp;lt; http://www.w3.org/TR/XMKS/ &amp;gt;&lt;br /&gt;
#Rijmen, Vincent., The Design of Rijndael: AES - The Advanced Encryption Standard, Springer, 2002. ISBN 978-3540425809&lt;br /&gt;
#Tom, Denis., Cryptography for Developers, Syngress, 2007. ISBN 978-1597491044&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#Microsoft Corporation, Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0, Microsoft Press, 2006. ISBN 978-0735623149&lt;br /&gt;
#Hasan, Jeffrey., Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0, Apress, 2004. ISBN 978-1590593905&lt;br /&gt;
#Evjen, Bill., Web Services Enhancements: Understanding the WSE for .NET Enterprise Applications, Wiley, 2003. ISBN 978-0764537363&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2009-12-22 [cit. 2009-12-22]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/system.security.cryptography.passwordderivebytes.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/72wdk8cc(VS.71).aspx&lt;br /&gt;
#http://www.oasis-open.org [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=xacml&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/ms229335.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/e80y5yhx%28VS.80%29.aspx&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx&lt;br /&gt;
#Dostálek, Libor., Vohnoutová, Marta., Velký průvodce infrastrukturou PKI a technologií elektronického podpisu, 2006. ISBN 80-251-0828-7&lt;br /&gt;
#www.msdn.microsoft.com [online]. last updated : 2010-01-07 [cit. 2010-01-07]. Dostupná z WWW: http://msdn.microsoft.com/en-us/library/cc488021.aspx&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_security&amp;diff=5080</id>
		<title>XML security</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_security&amp;diff=5080"/>
		<updated>2010-06-11T12:27:55Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* SAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|8|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML Security=&lt;br /&gt;
&lt;br /&gt;
Ako sme už spomenuli, komunikácia webových služieb a klientskych aplikácií prebieha prostredníctvom SOAP správ. Na komunikáciu je použitý typ SOAP správ nazývaný '''document-style''' (štýl dokument). Tento typ SOAP zobrazuje dáta, ktoré sú vymenované ako dokumenty, čiže každá SOAP správa obsahuje v tele '''XML dokument'''. Z toho dôvodu môžeme využiť pri zabezpečovaní SOAP správ technológie zamerané na bezpečnosť XML.&lt;br /&gt;
&lt;br /&gt;
XML Security predstavuje rozšírenie samotného XML o bezpečnostné mechanizmy. '''XML Security '''tvorí päť častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;14&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* XML Signature (XS),&lt;br /&gt;
* XML Encryption (XE),&lt;br /&gt;
* Security Assertion Markup Language (SAML),&lt;br /&gt;
* XML Access Control Markup Language (XACML),&lt;br /&gt;
* XML Key Managment Specification (XKMS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Signature==&lt;br /&gt;
&lt;br /&gt;
XML Signature je štandard definujúci XML schému  pre uloženie výsledku operácie digitálneho podpisu aplikovaného na ľubovoľné (XML) dáta. XML podpisy sú najčastejšie využívané pri XML transakciách. Digitálne podpisovanie XML poskytuje mechanizmus na &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* autentifikáciu,&lt;br /&gt;
* kontrolu integrity a dôvernosti dát,&lt;br /&gt;
* na podporu neopakovateľnosti ( non repundation).&lt;br /&gt;
XML Signature umožňuje podpísať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* celý XML dokument,&lt;br /&gt;
* vybrané časti XML dokumentu.&lt;br /&gt;
Možnosť podpísať len vybranú časť XML stromu umožňuje veľkú flexibilitu. Napríklad v situácii, kde rozličné časti XML dokumentu boli vytvorené viacerými autoritami, každá autorita môže podpísať len svoju časť XML dokumentu.&lt;br /&gt;
&lt;br /&gt;
Schéma XML digitálneho podpisu je v Tab. 8.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 8.1''' XML Signature&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
  &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SignatureMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Transforms&amp;gt;&lt;br /&gt;
        &amp;lt;Transform Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
      &amp;lt;DigestMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestValue&amp;gt;&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Reference&amp;gt;&lt;br /&gt;
&amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Popis dôležitých elementov XML Signature &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''Reference - '''Každý zdroj, ktorý má byť digitálne podpísaný má svoj vlastný Reference element, reprezentovaný URI adresou.&lt;br /&gt;
* '''Transform''' - Je zoznam procesov ktoré sa aplikujú na obsah XML dokumentu pred jeho  digitálnym podpísaním.&lt;br /&gt;
* '''Digest - '''Tento element obsahuje hodnotu digest odkazovaného zdroja.&lt;br /&gt;
* '''SignatureValue - '''Obsahuje hodnotu zašifrovaného digest  elementu '''SignedInfo'''.&lt;br /&gt;
&lt;br /&gt;
'''XML Signature ''' môže obsahovať ešte nepovinný element KeyInfo, ktorý určuje typ kľúča potrebného k overeniu digitálneho podpisu XML dokumentu.&lt;br /&gt;
&lt;br /&gt;
Technológiu XML Signature použijeme pri zabezpečovaní  komunikácie vo vlastnej bezpečnostnej platforme.&lt;br /&gt;
&lt;br /&gt;
==XML Encryption==&lt;br /&gt;
&lt;br /&gt;
XML Encryption je štandard definujúci XML schému pre uloženie výsledku operácie digitálneho šifrovania aplikovaného na ľubovoľné (XML) dáta. Takisto ako XML Signature aj XML Encryption umožňuje šifrovať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* celý XML dokument,&lt;br /&gt;
* vybrané časti XML dokumentu.&lt;br /&gt;
XML Encryption predstavuje point-to-point zabezpečenie, odstraňuje určité nedostatky technológie SSL alebo TLS.&lt;br /&gt;
&lt;br /&gt;
Tento štandard nebude použitý pri vytváraní vlastnej bezpečnostnej platformy, nakoľko sme sa rozhodli ponúknuť vlastný alternatívny spôsob ako selektívne šifrovať časti XML s použitím veľmi bezpečného '''Advanced Encryption Standard. Dôvod vlastného spôsobu šifrovania XML je ten, že pri XML Encryption dochádza k zašifrovaniu tagov XML a tým sa stráca určitá funkčnosť XML dokumentu, v našom prípade SOAP správy.'''&lt;br /&gt;
&lt;br /&gt;
Schéma XML Encrypt  je v Tab. 8.2.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 8.2''' XML Encrypt &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0'?&amp;gt;&lt;br /&gt;
&amp;lt;EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'&lt;br /&gt;
 MimeType='text/xml'&amp;gt;&lt;br /&gt;
  &amp;lt;CipherData&amp;gt;&lt;br /&gt;
    &amp;lt;CipherValue&amp;gt;A23B45C56&amp;lt;/CipherValue&amp;gt;&lt;br /&gt;
  &amp;lt;/CipherData&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/EncryptedData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre viac informácií odporúčame &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==SAML==&lt;br /&gt;
&lt;br /&gt;
Štandard SAML umožňuje zdieľanie autentifikačných a autorizačných informácií v rámci určitého systému. Medzi autentifikačné a autorizačné informácie patria roly a certifikáty. Dokument SAML môže byť digitálne podpísaný pomocou XML Signature. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Webový portál overí identitu užívateľa na základe klientskeho certifikátu. Užívateľovi pridelí určitú identitu, rolu.&lt;br /&gt;
&lt;br /&gt;
2. Rola užívateľa je pripojená do SOAP správy, ktorá je digitálne podpísaná webovým portálom.&lt;br /&gt;
&lt;br /&gt;
3. Webová služba overí identitu webového portálu, skontroluje digitálny podpis a následne zakáže alebo povolí klientovi prístup.&lt;br /&gt;
&lt;br /&gt;
Štandard SAML sa skladá z troch častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;19&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Definuje syntax a sémantiku správ obsahujúcich assertion (tvrdenia) vo forme XML.&lt;br /&gt;
&lt;br /&gt;
2. Definuje protokoly pre výmenu bezpečnostných informácií.&lt;br /&gt;
&lt;br /&gt;
3. Definuje pravidlá pre použitie assertion, štandardy pre transport. Napríklad SOAP tvrdenie môže byť poslané v SOAP správe cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
Security Assertion Markup Language sa dá využiť v týchto 3 nasledujúcich scenároch &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;19&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Single sing-on''' (Jediné prihlásenie),&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_12.png|framed|center|Obr. 8.2 SSO ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Klient je autentifikovaný prostredníctvom certifikátu na webovom portáli 1.&lt;br /&gt;
&lt;br /&gt;
2. Pri prístupe na webový portál 2 by musel znova predložiť certifikát.&lt;br /&gt;
&lt;br /&gt;
3. Pokiaľ je použitý SAML, webový portál 2 overí identitu na webovom portáli 1 a na základe toho sa rozhodne, či dovolí alebo odmietne prístup klientovi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Distribuované transakcie,'''&lt;br /&gt;
* '''Autorizačná služba.'''&lt;br /&gt;
&lt;br /&gt;
==XACML==&lt;br /&gt;
&lt;br /&gt;
Tento štandard úzko súvisí so SAML, ktorý slúži ako mechanizmus na šírenie autentifikačných a autorizačných informácií. XACML je autentifikačná a autorizačná informácia. Predstavuje XML metajazyk, ktorého úlohou je  štandardizovať popis autentifikačných a autorizačných politík. Definuje slovník pre popis práv a podmienok  subjektu.&lt;br /&gt;
&lt;br /&gt;
Nakoľko štandard XACML nebude v bezpečnostnej platforme použitý, nebudeme sa ním podrobnejšie zaoberať. Pre viac informácií odporúčame &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;30&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==XMKS==&lt;br /&gt;
&lt;br /&gt;
XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčmi konkrétne pre &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;21&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* registráciu,&lt;br /&gt;
* rušenie platnosti,&lt;br /&gt;
* obnovu kľúčov,&lt;br /&gt;
* vydanie nového kľúča.&lt;br /&gt;
&lt;br /&gt;
XMKS sa skladá z troch častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;21&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''XML Key Information Service Specification (X - KISS).''' Podporuje služby pre používanie kryptografických kľúčov.&lt;br /&gt;
&lt;br /&gt;
2. '''XML Key Registration Service Specification (X – KRSS). '''Podporuje služby spojené s držiteľom kryptografických kľúčov (obnova, registrácia).&lt;br /&gt;
&lt;br /&gt;
3. '''Bulk Key Regisration ( X- Bulk)''' predstavuje rozšírenie X – KRSS pre hromadnú registráciu kryptografických kľúčov. Tieto protokoly môžu byť použité spolu so SOAP&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_security&amp;diff=5079</id>
		<title>XML security</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_security&amp;diff=5079"/>
		<updated>2010-06-11T12:27:10Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|8|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML Security=&lt;br /&gt;
&lt;br /&gt;
Ako sme už spomenuli, komunikácia webových služieb a klientskych aplikácií prebieha prostredníctvom SOAP správ. Na komunikáciu je použitý typ SOAP správ nazývaný '''document-style''' (štýl dokument). Tento typ SOAP zobrazuje dáta, ktoré sú vymenované ako dokumenty, čiže každá SOAP správa obsahuje v tele '''XML dokument'''. Z toho dôvodu môžeme využiť pri zabezpečovaní SOAP správ technológie zamerané na bezpečnosť XML.&lt;br /&gt;
&lt;br /&gt;
XML Security predstavuje rozšírenie samotného XML o bezpečnostné mechanizmy. '''XML Security '''tvorí päť častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;14&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* XML Signature (XS),&lt;br /&gt;
* XML Encryption (XE),&lt;br /&gt;
* Security Assertion Markup Language (SAML),&lt;br /&gt;
* XML Access Control Markup Language (XACML),&lt;br /&gt;
* XML Key Managment Specification (XKMS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Signature==&lt;br /&gt;
&lt;br /&gt;
XML Signature je štandard definujúci XML schému  pre uloženie výsledku operácie digitálneho podpisu aplikovaného na ľubovoľné (XML) dáta. XML podpisy sú najčastejšie využívané pri XML transakciách. Digitálne podpisovanie XML poskytuje mechanizmus na &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* autentifikáciu,&lt;br /&gt;
* kontrolu integrity a dôvernosti dát,&lt;br /&gt;
* na podporu neopakovateľnosti ( non repundation).&lt;br /&gt;
XML Signature umožňuje podpísať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* celý XML dokument,&lt;br /&gt;
* vybrané časti XML dokumentu.&lt;br /&gt;
Možnosť podpísať len vybranú časť XML stromu umožňuje veľkú flexibilitu. Napríklad v situácii, kde rozličné časti XML dokumentu boli vytvorené viacerými autoritami, každá autorita môže podpísať len svoju časť XML dokumentu.&lt;br /&gt;
&lt;br /&gt;
Schéma XML digitálneho podpisu je v Tab. 8.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 8.1''' XML Signature&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
  &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SignatureMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Transforms&amp;gt;&lt;br /&gt;
        &amp;lt;Transform Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
      &amp;lt;DigestMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestValue&amp;gt;&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Reference&amp;gt;&lt;br /&gt;
&amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Popis dôležitých elementov XML Signature &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''Reference - '''Každý zdroj, ktorý má byť digitálne podpísaný má svoj vlastný Reference element, reprezentovaný URI adresou.&lt;br /&gt;
* '''Transform''' - Je zoznam procesov ktoré sa aplikujú na obsah XML dokumentu pred jeho  digitálnym podpísaním.&lt;br /&gt;
* '''Digest - '''Tento element obsahuje hodnotu digest odkazovaného zdroja.&lt;br /&gt;
* '''SignatureValue - '''Obsahuje hodnotu zašifrovaného digest  elementu '''SignedInfo'''.&lt;br /&gt;
&lt;br /&gt;
'''XML Signature ''' môže obsahovať ešte nepovinný element KeyInfo, ktorý určuje typ kľúča potrebného k overeniu digitálneho podpisu XML dokumentu.&lt;br /&gt;
&lt;br /&gt;
Technológiu XML Signature použijeme pri zabezpečovaní  komunikácie vo vlastnej bezpečnostnej platforme.&lt;br /&gt;
&lt;br /&gt;
==XML Encryption==&lt;br /&gt;
&lt;br /&gt;
XML Encryption je štandard definujúci XML schému pre uloženie výsledku operácie digitálneho šifrovania aplikovaného na ľubovoľné (XML) dáta. Takisto ako XML Signature aj XML Encryption umožňuje šifrovať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* celý XML dokument,&lt;br /&gt;
* vybrané časti XML dokumentu.&lt;br /&gt;
XML Encryption predstavuje point-to-point zabezpečenie, odstraňuje určité nedostatky technológie SSL alebo TLS.&lt;br /&gt;
&lt;br /&gt;
Tento štandard nebude použitý pri vytváraní vlastnej bezpečnostnej platformy, nakoľko sme sa rozhodli ponúknuť vlastný alternatívny spôsob ako selektívne šifrovať časti XML s použitím veľmi bezpečného '''Advanced Encryption Standard. Dôvod vlastného spôsobu šifrovania XML je ten, že pri XML Encryption dochádza k zašifrovaniu tagov XML a tým sa stráca určitá funkčnosť XML dokumentu, v našom prípade SOAP správy.'''&lt;br /&gt;
&lt;br /&gt;
Schéma XML Encrypt  je v Tab. 8.2.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 8.2''' XML Encrypt &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0'?&amp;gt;&lt;br /&gt;
&amp;lt;EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'&lt;br /&gt;
 MimeType='text/xml'&amp;gt;&lt;br /&gt;
  &amp;lt;CipherData&amp;gt;&lt;br /&gt;
    &amp;lt;CipherValue&amp;gt;A23B45C56&amp;lt;/CipherValue&amp;gt;&lt;br /&gt;
  &amp;lt;/CipherData&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/EncryptedData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre viac informácií odporúčame &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==SAML==&lt;br /&gt;
&lt;br /&gt;
Štandard SAML umožňuje zdieľanie autentifikačných a autorizačných informácií v rámci určitého systému. Medzi autentifikačné a autorizačné informácie patria roly a certifikáty. Dokument SAML môže byť digitálne podpísaný pomocou XML Signature. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Webový portál overí identitu užívateľa na základe klientskeho certifikátu. Užívateľovi pridelí určitú identitu, rolu.&lt;br /&gt;
&lt;br /&gt;
2. Rola užívateľa je pripojená do SOAP správy, ktorá je digitálne podpísaná webovým portálom.&lt;br /&gt;
&lt;br /&gt;
3. Webová služba overí identitu webového portálu, skontroluje digitálny podpis a následne zakáže alebo povolí klientovi prístup.&lt;br /&gt;
&lt;br /&gt;
Štandard SAML sa skladá z troch častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;19&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Definuje syntax a sémantiku správ obsahujúcich assertion (tvrdenia) vo forme XML.&lt;br /&gt;
&lt;br /&gt;
2. Definuje protokoly pre výmenu bezpečnostných informácií.&lt;br /&gt;
&lt;br /&gt;
3. Definuje pravidlá pre použitie assertion, štandardy pre transport. Napríklad SOAP tvrdenie môže byť poslané v SOAP správe cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
Security Assertion Markup Language sa dá využiť v týchto 3 nasledujúcich scenároch &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;19&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• '''Single sing-on''' (Jediné prihlásenie),&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_12.png|framed|center|Obr. 8.2 SSO ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Klient je autentifikovaný prostredníctvom certifikátu na webovom portáli 1.&lt;br /&gt;
&lt;br /&gt;
2. Pri prístupe na webový portál 2 by musel znova predložiť certifikát.&lt;br /&gt;
&lt;br /&gt;
3. Pokiaľ je použitý SAML, webový portál 2 overí identitu na webovom portáli 1 a na základe toho sa rozhodne, či dovolí alebo odmietne prístup klientovi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Distribuované transakcie,'''&lt;br /&gt;
* '''Autorizačná služba.'''&lt;br /&gt;
&lt;br /&gt;
==XACML==&lt;br /&gt;
&lt;br /&gt;
Tento štandard úzko súvisí so SAML, ktorý slúži ako mechanizmus na šírenie autentifikačných a autorizačných informácií. XACML je autentifikačná a autorizačná informácia. Predstavuje XML metajazyk, ktorého úlohou je  štandardizovať popis autentifikačných a autorizačných politík. Definuje slovník pre popis práv a podmienok  subjektu.&lt;br /&gt;
&lt;br /&gt;
Nakoľko štandard XACML nebude v bezpečnostnej platforme použitý, nebudeme sa ním podrobnejšie zaoberať. Pre viac informácií odporúčame &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;30&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==XMKS==&lt;br /&gt;
&lt;br /&gt;
XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčmi konkrétne pre &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;21&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* registráciu,&lt;br /&gt;
* rušenie platnosti,&lt;br /&gt;
* obnovu kľúčov,&lt;br /&gt;
* vydanie nového kľúča.&lt;br /&gt;
&lt;br /&gt;
XMKS sa skladá z troch častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;21&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''XML Key Information Service Specification (X - KISS).''' Podporuje služby pre používanie kryptografických kľúčov.&lt;br /&gt;
&lt;br /&gt;
2. '''XML Key Registration Service Specification (X – KRSS). '''Podporuje služby spojené s držiteľom kryptografických kľúčov (obnova, registrácia).&lt;br /&gt;
&lt;br /&gt;
3. '''Bulk Key Regisration ( X- Bulk)''' predstavuje rozšírenie X – KRSS pre hromadnú registráciu kryptografických kľúčov. Tieto protokoly môžu byť použité spolu so SOAP&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_security&amp;diff=5078</id>
		<title>XML security</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_security&amp;diff=5078"/>
		<updated>2010-06-11T12:26:48Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* XML Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|8|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
=XML Security=&lt;br /&gt;
&lt;br /&gt;
Ako sme už spomenuli, komunikácia webových služieb a klientskych aplikácií prebieha prostredníctvom SOAP správ. Na komunikáciu je použitý typ SOAP správ nazývaný '''document-style''' (štýl dokument). Tento typ SOAP zobrazuje dáta, ktoré sú vymenované ako dokumenty, čiže každá SOAP správa obsahuje v tele '''XML dokument'''. Z toho dôvodu môžeme využiť pri zabezpečovaní SOAP správ technológie zamerané na bezpečnosť XML.&lt;br /&gt;
&lt;br /&gt;
XML Security predstavuje rozšírenie samotného XML o bezpečnostné mechanizmy. '''XML Security '''tvorí päť častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;14&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* XML Signature (XS),&lt;br /&gt;
* XML Encryption (XE),&lt;br /&gt;
* Security Assertion Markup Language (SAML),&lt;br /&gt;
* XML Access Control Markup Language (XACML),&lt;br /&gt;
* XML Key Managment Specification (XKMS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Signature==&lt;br /&gt;
&lt;br /&gt;
XML Signature je štandard definujúci XML schému  pre uloženie výsledku operácie digitálneho podpisu aplikovaného na ľubovoľné (XML) dáta. XML podpisy sú najčastejšie využívané pri XML transakciách. Digitálne podpisovanie XML poskytuje mechanizmus na &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* autentifikáciu,&lt;br /&gt;
* kontrolu integrity a dôvernosti dát,&lt;br /&gt;
* na podporu neopakovateľnosti ( non repundation).&lt;br /&gt;
XML Signature umožňuje podpísať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* celý XML dokument,&lt;br /&gt;
* vybrané časti XML dokumentu.&lt;br /&gt;
Možnosť podpísať len vybranú časť XML stromu umožňuje veľkú flexibilitu. Napríklad v situácii, kde rozličné časti XML dokumentu boli vytvorené viacerými autoritami, každá autorita môže podpísať len svoju časť XML dokumentu.&lt;br /&gt;
&lt;br /&gt;
Schéma XML digitálneho podpisu je v Tab. 8.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 8.1''' XML Signature&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Signature xmlns=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SignedInfo&amp;gt;&lt;br /&gt;
  &amp;lt;CanonicalizationMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SignatureMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Reference URI=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Transforms&amp;gt;&lt;br /&gt;
        &amp;lt;Transform Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/Transforms&amp;gt;&lt;br /&gt;
      &amp;lt;DigestMethod Algorithm=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestValue&amp;gt;&amp;lt;/DigestValue&amp;gt; &lt;br /&gt;
  &amp;lt;/Reference&amp;gt;&lt;br /&gt;
&amp;lt;/SignedInfo&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/Signature&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Popis dôležitých elementov XML Signature &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;17&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''Reference - '''Každý zdroj, ktorý má byť digitálne podpísaný má svoj vlastný Reference element, reprezentovaný URI adresou.&lt;br /&gt;
* '''Transform''' - Je zoznam procesov ktoré sa aplikujú na obsah XML dokumentu pred jeho  digitálnym podpísaním.&lt;br /&gt;
* '''Digest - '''Tento element obsahuje hodnotu digest odkazovaného zdroja.&lt;br /&gt;
* '''SignatureValue - '''Obsahuje hodnotu zašifrovaného digest  elementu '''SignedInfo'''.&lt;br /&gt;
&lt;br /&gt;
'''XML Signature ''' môže obsahovať ešte nepovinný element KeyInfo, ktorý určuje typ kľúča potrebného k overeniu digitálneho podpisu XML dokumentu.&lt;br /&gt;
&lt;br /&gt;
Technológiu XML Signature použijeme pri zabezpečovaní  komunikácie vo vlastnej bezpečnostnej platforme.&lt;br /&gt;
&lt;br /&gt;
==XML Encryption==&lt;br /&gt;
&lt;br /&gt;
XML Encryption je štandard definujúci XML schému pre uloženie výsledku operácie digitálneho šifrovania aplikovaného na ľubovoľné (XML) dáta. Takisto ako XML Signature aj XML Encryption umožňuje šifrovať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* celý XML dokument,&lt;br /&gt;
* vybrané časti XML dokumentu.&lt;br /&gt;
XML Encryption predstavuje point-to-point zabezpečenie, odstraňuje určité nedostatky technológie SSL alebo TLS.&lt;br /&gt;
&lt;br /&gt;
Tento štandard nebude použitý pri vytváraní vlastnej bezpečnostnej platformy, nakoľko sme sa rozhodli ponúknuť vlastný alternatívny spôsob ako selektívne šifrovať časti XML s použitím veľmi bezpečného '''Advanced Encryption Standard. Dôvod vlastného spôsobu šifrovania XML je ten, že pri XML Encryption dochádza k zašifrovaniu tagov XML a tým sa stráca určitá funkčnosť XML dokumentu, v našom prípade SOAP správy.'''&lt;br /&gt;
&lt;br /&gt;
Schéma XML Encrypt  je v Tab. 8.2.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 8.2''' XML Encrypt &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version='1.0'?&amp;gt;&lt;br /&gt;
&amp;lt;EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'&lt;br /&gt;
 MimeType='text/xml'&amp;gt;&lt;br /&gt;
  &amp;lt;CipherData&amp;gt;&lt;br /&gt;
    &amp;lt;CipherValue&amp;gt;A23B45C56&amp;lt;/CipherValue&amp;gt;&lt;br /&gt;
  &amp;lt;/CipherData&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;/EncryptedData&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre viac informácií odporúčame &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;18&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==SAML==&lt;br /&gt;
&lt;br /&gt;
Štandard SAML umožňuje zdieľanie autentifikačných a autorizačných informácií v rámci určitého systému. Medzi autentifikačné a autorizačné informácie patria roly a certifikáty. Dokument SAML môže byť digitálne podpísaný pomocou XML Signature. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Webový portál overí identitu užívateľa na základe klientskeho certifikátu. Užívateľovi pridelí určitú identitu, rolu.&lt;br /&gt;
&lt;br /&gt;
2. Rola užívateľa je pripojená do SOAP správy, ktorá je digitálne podpísaná webovým portálom.&lt;br /&gt;
&lt;br /&gt;
3. Webová služba overí identitu webového portálu, skontroluje digitálny podpis a následne zakáže alebo povolí klientovi prístup.&lt;br /&gt;
&lt;br /&gt;
Štandard SAML sa skladá z troch častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;19&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Definuje syntax a sémantiku správ obsahujúcich assertion (tvrdenia) vo forme XML.&lt;br /&gt;
&lt;br /&gt;
2. Definuje protokoly pre výmenu bezpečnostných informácií.&lt;br /&gt;
&lt;br /&gt;
3. Definuje pravidlá pre použitie assertion, štandardy pre transport. Napríklad SOAP tvrdenie môže byť poslané v SOAP správe cez HTTP kanál.&lt;br /&gt;
&lt;br /&gt;
Security Assertion Markup Language sa dá využiť v týchto 3 nasledujúcich scenároch &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;19&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
• '''Single sing-on''' (Jediné prihlásenie),&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_12.png|framed|center|Obr. 8.2 SSO ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Klient je autentifikovaný prostredníctvom certifikátu na webovom portáli 1.&lt;br /&gt;
&lt;br /&gt;
2. Pri prístupe na webový portál 2 by musel znova predložiť certifikát.&lt;br /&gt;
&lt;br /&gt;
3. Pokiaľ je použitý SAML, webový portál 2 overí identitu na webovom portáli 1 a na základe toho sa rozhodne, či dovolí alebo odmietne prístup klientovi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Distribuované transakcie,'''&lt;br /&gt;
* '''Autorizačná služba.'''&lt;br /&gt;
&lt;br /&gt;
==XACML==&lt;br /&gt;
&lt;br /&gt;
Tento štandard úzko súvisí so SAML, ktorý slúži ako mechanizmus na šírenie autentifikačných a autorizačných informácií. XACML je autentifikačná a autorizačná informácia. Predstavuje XML metajazyk, ktorého úlohou je  štandardizovať popis autentifikačných a autorizačných politík. Definuje slovník pre popis práv a podmienok  subjektu.&lt;br /&gt;
&lt;br /&gt;
Nakoľko štandard XACML nebude v bezpečnostnej platforme použitý, nebudeme sa ním podrobnejšie zaoberať. Pre viac informácií odporúčame &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;30&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==XMKS==&lt;br /&gt;
&lt;br /&gt;
XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčmi konkrétne pre &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;21&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* registráciu,&lt;br /&gt;
* rušenie platnosti,&lt;br /&gt;
* obnovu kľúčov,&lt;br /&gt;
* vydanie nového kľúča.&lt;br /&gt;
&lt;br /&gt;
XMKS sa skladá z troch častí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;21&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''XML Key Information Service Specification (X - KISS).''' Podporuje služby pre používanie kryptografických kľúčov.&lt;br /&gt;
&lt;br /&gt;
2. '''XML Key Registration Service Specification (X – KRSS). '''Podporuje služby spojené s držiteľom kryptografických kľúčov (obnova, registrácia).&lt;br /&gt;
&lt;br /&gt;
3. '''Bulk Key Regisration ( X- Bulk)''' predstavuje rozšírenie X – KRSS pre hromadnú registráciu kryptografických kľúčov. Tieto protokoly môžu byť použité spolu so SOAP&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Denie_webov%C3%BDch_slu%C5%BEieb&amp;diff=5077</id>
		<title>Zabezpečenie webových služieb</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Denie_webov%C3%BDch_slu%C5%BEieb&amp;diff=5077"/>
		<updated>2010-06-11T12:22:34Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|7|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Zabezpečenie webových služieb=&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole sa  budeme venovať spôsobom a technikám zabezpečenia webových služieb ASP.NET založených na autentifikácii, autorizácii, dôvernosti a integrite komunikácie.&lt;br /&gt;
&lt;br /&gt;
Webová služba môže byť zabezpečená na týchto troch úrovniach &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* na úrovni  transportu, respektíve platformy,&lt;br /&gt;
* na úrovni správ,&lt;br /&gt;
* na úrovni aplikácie.&lt;br /&gt;
Prvé dve vymenované možnosti zabezpečujú komunikáciu medzi dvoma koncovými bodmi, pri poslednom variante ide o vlastný model zabezpečenia.&lt;br /&gt;
&lt;br /&gt;
==Zabezpečenie na úrovni transportu alebo platformy==&lt;br /&gt;
&lt;br /&gt;
Tento model slúži na vytvorenie  bezpečnej komunikácie medzi dvoma koncovými bodmi, webovou službou a klientskou aplikáciou. Pri tomto spôsobe sa využíva zabezpečený transportný kanál na prenos SOAP správ.&lt;br /&gt;
&lt;br /&gt;
:Bezpečnosť je zaistená platformou a transportným  protokolom. Autentifikácia je realizovaná webovým serverom, buď s využitím základnej, digestívnej, integrovanej Windows autentifikácie, alebo overovaním pomocou certifikátov. Integrita a dôvernosť komunikácie je zabezpečená napríklad pomocou protokolov SSL a IPSec.&lt;br /&gt;
&lt;br /&gt;
Hlavnou výhodou tohto typu  zabezpečenia je, že ide o jednoduchý a výhodný model pre veľa scenárov v intranete, kde máme kontrolu nad konfiguráciou koncových  komunikačných  bodov a takisto aj nad transportným mechanizmom.&lt;br /&gt;
&lt;br /&gt;
Medzi hlavné nevýhody  patrí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;13&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Nie sú zabezpečené  rôzne presmerovania v aplikačných uzloch, zabezpečené sú len koncové body komunikácie.&lt;br /&gt;
* Pri tomto spôsobe vzniká tesná väzba na transportný mechanizmus, nadradenú platformu a takisto na poskytovateľa zabezpečenia (NTLM, Kerberos a iný).&lt;br /&gt;
&lt;br /&gt;
===Architektúra zabezpečenia na úrovni  platformy===&lt;br /&gt;
&lt;br /&gt;
Volanie webovej služby klientom spúšťa nasledovný súbor udalostí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;14&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. Klient volá webovú službu. Pošle SOAP požiadavku.&lt;br /&gt;
&lt;br /&gt;
2. Služba IIS môže vykonať autentifikáciu klienta na základe autentifikačných metód, ako sú základná, digestívna, integrovaná Windows autentifikácia alebo autentifikácia založená na certifikácii. Následne sa môže vykonať autorizácia klienta, obmedzenie niektorých IP adries, NTFS oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. Pokiaľ overovanie a autorizácia klienta prebehne úspešne, služba IIS poskytne prístupový token overeného užívateľa do prostredia ASP.NET.&lt;br /&gt;
&lt;br /&gt;
4. ASP.NET vykoná autentifikáciu klienta a následne prebehne autorizácia klienta k webovej službe ( k súboru .asmx). Autorizačný mechanizmus môže vykonať autorizáciu na základe URL alebo autorizáciu prístupu k súborom.&lt;br /&gt;
&lt;br /&gt;
5. Následne webová služba môže použiť  nejaký  vzdialený prostriedok.&lt;br /&gt;
&lt;br /&gt;
Webové služby nepoužívajú zosobnenie, implicitne používajú konfiguračný účet ASP.NET, v prípade potreby môžeme využiť impersonáciu (zosobnenie) kódu a použiť identitu užívateľa, ktorý  volá webovú službu.&lt;br /&gt;
&lt;br /&gt;
Celý mechanizmus overovania a autorizácie je znázornený na Obr. 7.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_11.png|framed|center|Obr. 7.2 Architektúra zabezpečenia na úrovni platformy]]&lt;br /&gt;
&lt;br /&gt;
==Zabezpečenie na úrovni správ==&lt;br /&gt;
&lt;br /&gt;
Zabezpečenie na úrovni správ predstavuje najflexibilnejší a najvýkonnejší spôsob zabezpečenia. Integrita XML správ je realizovaná pomocou  digitálnych podpisov a utajenie komunikácie je zabezpečené kryptovaním.&lt;br /&gt;
&lt;br /&gt;
Tento spôsob je napríklad implementovaný GXA pomocou  špecifikácie WS – Security.&lt;br /&gt;
&lt;br /&gt;
Výhody tohto modelu zabezpečenia sú &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* bezpečnosť komunikácie je zaistená aj pri presmerovaní v aplikačných uzloch,&lt;br /&gt;
* nezávislosť na transportnom mechanizme,&lt;br /&gt;
* možnosť použiť viac typov kryptovacích technológií,&lt;br /&gt;
* podporuje nepopierateľnosť.&lt;br /&gt;
&lt;br /&gt;
==Zabezpečenie na úrovni aplikácie==&lt;br /&gt;
Pri tomto type zabezpečenia sú autentifikácia, autorizácia, poprípade zaistenie integrity a dôvernosti komunikácie ponechané na samotnej aplikácii. Tento spôsob je vhodné použiť, ak máme k dispozícii databázu existujúcich užívateľov a rolí. Ďalšou výhodou je selektívne kryptovanie prenášaných informácií, nie celej komunikácie, kedže proces kryptovania je sám o sebe z časového hľadiska náročný.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_5.png&amp;diff=5076</id>
		<title>Súbor:Dp 2010 jm 5.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_5.png&amp;diff=5076"/>
		<updated>2010-06-11T12:15:41Z</updated>

		<summary type="html">&lt;p&gt;Ian: bola nahraná nová verzia „Súbor:Dp 2010 jm 5.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5075</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5075"/>
		<updated>2010-06-11T12:13:29Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* XML a webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;  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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
&lt;br /&gt;
* komunikačné protokoly,&lt;br /&gt;
* formáty na popis dát,&lt;br /&gt;
* popisné jazyky,&lt;br /&gt;
* mechanizmy na „objavovanie&amp;quot; XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
&lt;br /&gt;
* Simple Object Access Protocol,&lt;br /&gt;
* Web Service Description Language,&lt;br /&gt;
* Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument má jeden koreňový prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;) '''a telo správy (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''). Formát SOAP správy je znázornený na obrázku 1.3.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
* RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* literal,&lt;br /&gt;
* SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* SOAP 1.1,&lt;br /&gt;
* SOAP 1.2.&lt;br /&gt;
&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri obálky sa nachádza nepovinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''a povinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. V Tab. 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* názov webovej metódy,&lt;br /&gt;
* počet, typy a poradie parametrov,&lt;br /&gt;
* typ návratovej hodnoty,&lt;br /&gt;
* volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;types&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;portType&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;binding&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;service&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' definujú protokol. WSDL dokument má jeden koreňový element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;definitions&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;6&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:types&amp;gt;&amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:message&amp;gt;&amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:portType &amp;gt;&amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:binding&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:service&amp;gt;&amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis hlavných elementov WSDL dokumentu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;11&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''PortType'''. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
* '''Binding.''' Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
* '''Service.''' Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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 &amp;quot;first WSDL&amp;quot; (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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; 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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;12&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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é. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Ďalším problémom, ktorý je výrazný, je to, že nikto nezaručuje dôveryhodnosť poskytovateľov služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;8&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
&lt;br /&gt;
* Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
* 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.)&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
&lt;br /&gt;
* Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, prípadne použije klient UDDI.&lt;br /&gt;
* Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
* Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
* Tá spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
* Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Autoriz%C3%A1cia_webov%C3%BDch_slu%C5%BEieb&amp;diff=5074</id>
		<title>Autorizácia webových služieb</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Autoriz%C3%A1cia_webov%C3%BDch_slu%C5%BEieb&amp;diff=5074"/>
		<updated>2010-06-11T12:12:44Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Autorizácia */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|6|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Autorizácia=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich kapitolách sme vysvetlili metódy, akými môžeme overiť identitu užívateľa volajúceho webovú službu. Podrobnejšie sme si rozobrali tie, ktoré sú v praxi úspešne využívané v rôznych bezpečnostných scenároch. Získanie skutočnej identity klienta predstavuje len prvý krok k vytvoreniu bezpečnej komunikácie. Potrebujeme vedieť, aké má klient oprávnenie v rámci našej webovej služby, aké webové metódy webovej služby môže volať, k akým zdrojom, či už k databázam, alebo súborom smie pristupovať. Proces, v ktorom zisťujeme oprávnenia, sa nazýva autorizácia.&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole si rozoberieme spôsoby autorizácie s využitím konfiguračného súboru '''web.config''' webovej služby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Autorizácia URL==&lt;br /&gt;
&lt;br /&gt;
Ako sme už spomenuli,  autorizačné pravidlá definujeme v konfiguračnom súbore webovej služby, tie sú vykonávané prostredníctvom špeciálneho HTTP modulu '''UrlAuthorization-Module'''. Princíp fungovania tohto modulu spočíva v analýze a kontrole každej požiadavky užívateľa, tým je zabezpečená ochrana neautorizovaného prístupu. Tento model autorizácie kontroluje bezpečnostný kontext a URL zdroj, ku ktorému žiada užívateľ prístup.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;13&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Autorizačné pravidlá==&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole si vysvetlíme samotný spôsob realizácie autorizácie v konfiguračnom súbore webovej služby. Autorizačné pravidlá sa definujú v súbore web.confing prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;authorization&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;, '''pomocou ktorého  môžeme vytvoriť  dva typy autorizačných pravidiel &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pravidlo  zakazujúce prístup, prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;deny&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;.'''&lt;br /&gt;
* Pravidlo povoľujúce prístup, prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;allows&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;.'''&lt;br /&gt;
Oba typy autorizačných pravidiel môžeme aplikovať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* Na jedného užívateľa použitím kľúčového slova '''user'''.&lt;br /&gt;
* Na skupinu užívateľov (rolí) použitím kľúčového slova '''roles'''.&lt;br /&gt;
* Alebo môžeme použiť kľúčové slovo '''verbs''' a prostredníctvom neho určiť konkrétne typy  HTTP požiadaviek, na ktoré sa bude pravidlo aplikovať.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 6.1''' Konfigurácia autorizačných pravidiel v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;authorization&amp;gt;&lt;br /&gt;
  &amp;lt;allow users=&amp;quot;Zoznam uzivatelov&amp;quot;&lt;br /&gt;
         roles=&amp;quot;Zoznam roli&amp;quot;&lt;br /&gt;
         verbs=&amp;quot;Typy HTTP poziadaviek&amp;quot;&lt;br /&gt;
         /&amp;gt;&lt;br /&gt;
  &amp;lt;deny users=&amp;quot;Zoznam uzivatelov&amp;quot;&lt;br /&gt;
        roles=&amp;quot;Zoznam roli&amp;quot;&lt;br /&gt;
        verbs=&amp;quot;Typy HTTP poziadaviek&amp;quot;&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
&amp;lt;/authorization&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri definovaní pravidiel môžeme využiť tieto zástupné  znaky &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Znak '''?''', ktorý reprezentuje všetkých anonymných užívateľov.&lt;br /&gt;
* Znak '''&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;''', ktorý reprezentuje všetkých užívateľov.&lt;br /&gt;
&lt;br /&gt;
Proces aplikácie konfiguračných pravidiel je pre webové služby ASP.NET nasledovný. Najskôr sa aplikujú konfiguračné pravidlá z príslušného konfiguračného súboru web.config a následné sa aplikujú pravidlá zo súboru machine.config. Autorizačné pravidlá sa aplikujú v tom poradí, v akom sú v konfiguračnom súbore zapísané. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Prostredníctvom autorizačných pravidiel sa riadi prístup užívateľov ku konkrétnym adresárom a súborom. Riadený prístup k adresárom sa realizuje umiestením konfiguračného súboru s autorizačnými pravidlami do príslušného adresára. Riadený prístup ku konkrétnym súborom sa realizuje prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;location&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , v ktorom konkretizujeme cestu k súboru. ( pozri Tab. 6.2)&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 6.2''' Konfigurácia autorizačných pravidiel pre riadený prístup k súboru&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;location path=&amp;quot;SecrurePage.asmx&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system.web&amp;gt;&lt;br /&gt;
  &amp;lt;authorization&amp;gt;&lt;br /&gt;
    &amp;lt;deny users=&amp;quot;?&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/authorization&amp;gt;     &lt;br /&gt;
&amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/location&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Autentifik%C3%A1cia&amp;diff=5073</id>
		<title>Autentifikácia</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Autentifik%C3%A1cia&amp;diff=5073"/>
		<updated>2010-06-11T12:08:48Z</updated>

		<summary type="html">&lt;p&gt;Ian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|5|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Autentifikácia=&lt;br /&gt;
&lt;br /&gt;
Autentifikácia predstavuje kľúčovú úlohu pri vytváraní bezpečnej komunikácie medzi klientom a webovou službou. Od identity klienta sa odvíja celý scenár komunikácie, preto sa samotnému overovaniu klientov budeme venovať podrobnejšie. Overovanie predstavuje proces, v ktorom sa zisťuje identita  užívateľa a zabezpečuje sa jej platnosť. V aplikáciách ASP.NET ju môžeme implementovať pomocou jedného z týchto štyroch systémov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Formulárová autentifikácia'''. Tento typ overovania je založený na prihlasovacej stránke a existujúcej databáze užívateľov. Užívateľ dostane lístok, ktorý je kombináciou zakryptovaných hodnôt uložených v cookies. Pre webové služby  nie je tento typ vhodný, kedže webové služby sú bezstavové a použitie cookies by ich zbytočne obmedzovalo.&lt;br /&gt;
&lt;br /&gt;
2. '''Passportová autentifikácia'''. Využíva infraštruktúru Microsoft Passport. Ten implementuje centrálnu správu identít. Prihlasovacie údaje užívateľov sú spracúvané samostatným passportovým serverom. Tento spôsob overovania je  neflexibilný a v tejto práci sa mu podrobnejšie nebudeme venovať.&lt;br /&gt;
&lt;br /&gt;
3. '''Integrovaná autentifikácia Windows'''.&lt;br /&gt;
&lt;br /&gt;
4. '''Autentifikácia založená na certifikácii.'''&lt;br /&gt;
&lt;br /&gt;
5. '''Vlastný typ autentifikačného procesu.'''&lt;br /&gt;
&lt;br /&gt;
Posledné tri spôsoby overovania klientskych aplikácií si rozoberieme v samostatných podkapitolách, nakoľko sú vhodné pre autentifikáciu klientov webových služieb. Vysvetlíme si princípy, na ktorých sú založené a oblasti, v ktorých sú nasadzované. Spomenieme výhody a nevýhody, ktoré so sebou prinášajú. A tak isto uvedieme ich programovú realizáciu v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Windows Autentifikácia==&lt;br /&gt;
&lt;br /&gt;
V tejto časti sa venujeme bezpečnosti webových služieb ASP.NET. Technológia Windows autentifikácie je úzko spojená s firmou Microsoft a tak isto operačnými systémami Windows od tejto spoločnosti. Jednou z najjednoduchších možností autentifikácie klientov webových služieb je ponechať túto autentifikáciu na webový server, napríklad ISS, respektíve na samotný operačný systém Windows. Princíp tohto typu autentifikácie je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Webový server požiada klientsku aplikáciu o autentifikáciu.&lt;br /&gt;
&lt;br /&gt;
2. Tá predloží prihlasovacie údaje.&lt;br /&gt;
&lt;br /&gt;
3. Tie sú následne namapované na užívateľský účet Windows.&lt;br /&gt;
&lt;br /&gt;
Táto metóda overovania užívateľov je vhodná, ak našu webovú službu využíva menší a stabilný počet užívateľov, ktorí majú existujúce užívateľské účty Windows. Tento typ sa využíva pre aplikácie, v ktorých webový server aj užívatelia patria do rovnakej lokálnej siete alebo intranetu.  Medzi výhody patrí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Využitie existujúcich účtov Windows.&lt;br /&gt;
* Využitie samotného zabezpečenia operačného systému Windows a impersonácie. Môžeme využiť už  existujúce oprávnenie užívateľských účtov, napríklad pre  prístup k súborom. Programový kód ASP.NET je vykonávaný pod fixným účtom, pre službu IIS 5.x  je to účet ASP.NET a pre IIS 6.0 je to účet Network Service. Použitie pevného účtu má veľa dôvodov. Skoro vo všetkých prípadoch sú práva pridelené užívateľom oveľa menšie ako sú práva potrebné pre aplikáciu. Existuje mechanizmus, pomocou ktorého je možné spúšťať programový kód pod prevzatou identitou. Ide o tzv. impersonáciu. Takýto model je vhodné použiť pre lokálne siete s malým počtom užívateľov, ktorí majú korektne zadefinované užívateľské oprávnenie Windows. Impersonácia bude vysvetlená  v podkapitole 5.2.1.&lt;br /&gt;
* Pri tomto type nie je nutné vytvárať prihlasovaciu stránku ani databázu užívateľov, čiže táto metóda nie je z programátorského hľadiska časovo náročná.&lt;br /&gt;
Existuje však veľa dôvodov, prečo sa tomuto spôsobu overovania vyhnúť. Napríklad &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Tento typ autentifikácie nie je veľmi flexibilný a veľmi zle sa prispôsobuje.&lt;br /&gt;
* Dochádza pri ňom k naviazaniu na užívateľské účty.&lt;br /&gt;
* Je nevyhnutné, aby klienti webovej služby mali operačný systém od spoločnosti Microsoft kvôli korektnej autentifikácii webovým serverom IIS.&lt;br /&gt;
* Táto metóda neumožňuje riadiť autentifikačný proces. Predstavuje to veľký problém, pokiaľ má byť webová služba verejná.&lt;br /&gt;
Pri Windows autentifikácii je overovanie klienta vykonávané webovým serverom IIS. Ten môže overiť a autorizovať klienta ešte skôr, ako webová aplikácia (napr. webová služba) začne obsluhovať jeho požiadavku. IIS má niekoľko bezpečnostných mechanizmov pomocou ktorých môže  overiť, autorizovať klienta, zabezpečiť dôvernosť a integritu komunikácie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Služba Internet Information Service===&lt;br /&gt;
&lt;br /&gt;
Webový server IIS zabezpečuje korektné prostredie pre beh aplikácie typu klient – server.&lt;br /&gt;
&lt;br /&gt;
K autentifikácii klientov má k dispozícii niekoľko stratégií. Môže použiť na overenie klienta &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Základnú autentifikáciu. '''Túto metódu vyvinulo konzorcium W3C. Definuje dodatočnú hlavičku HTTP, v ktorej sú prenášané užívateľské mená a heslá. Dáta nie sú kryptované, ale sú kódované vo formáte Base64. Tento typ je nutné používať s SSL.&lt;br /&gt;
* '''Digestívnu autentifikáciu. '''Je podobná základnej autentifikácii, prihlasovacie údaje nie sú prenášané v kódovaní Base64, ale sú hašované. Tento spôsob nie je veľmi rozšírený, našiel uplatnenie len v intranetoch.&lt;br /&gt;
* '''Integrovanú autentifikáciu Windows'''. Pri tomto type autentifikácie je overovanie užívateľa ponechané na samotný operačný systém. Využíva sa 96 bitové číslo SID (Secure identifier), ktoré slúži na identifikáciu každého prihláseného užívateľa. Identita každého prihláseného užívateľa sa predáva vo forme tokenu. Pretože integrovaná autentifikácia Windows je najvhodnejším overovacím štandardom pre intranetové aplikácie založené na WAN alebo LAN, budeme sa jej venovať v nasledujúcej podkapitole.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integrovaná autentifikácia Windows==&lt;br /&gt;
&lt;br /&gt;
Podmienkou korektného fungovania tohto typu overovania užívateľov je to, že klient aj webový server sa musia nachádzať na rovnakej lokálnej sieti. Pri tejto metóde sa neprenášajú mená a heslá užívateľov, ale spolupracuje s doménovým serverom alebo inštanciou Active Directory. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na prenos prihlasovacích údajov sa využíva autentifikačný protokol NTLM (NT LAN Manager) alebo protokol Kerberos 5. Druh overovacieho protokolu závisí od operačného systému klienta a serveru. Pokiaľ ide o operačný systém Windows 2000 a vyšší ako autentifikačný protokol je použitý Kerberos 5, inak bude overovanie realizované prostredníctvom NTLM. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole si rozoberieme nasledujúce schémy integrovaného overovania Windows &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Integrované overenie systému Windows s impersonáciou.&lt;br /&gt;
* Integrované overenie systému Windows bez impersonácie.&lt;br /&gt;
* Integrované overenie systému Windows s preddefinovanou identitou.&lt;br /&gt;
Ale skôr ako sa začneme venovať samotnej integrovanej autentifikácii systému Windows, je vhodné si objasniť proces impersonácie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Impersonácia===&lt;br /&gt;
&lt;br /&gt;
Impersonácia je proces vykonávania programového kódu v kontexte identity iného užívateľa. Ako už bolo spomenuté, kód webovej služby ASP.NET beží pod fixným účtom, typ účtu závisí od verzie služby IIS. Dôvody použitia impersonácie sú nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Zvýšenie flexibility systému. Pre každého užívateľa môžeme prideliť rôzne prístupové práva a vyhneme sa tým použitiu fixného účtu pre všetkých užívateľov.&lt;br /&gt;
* Rozlíšenie práv pre jednotlivé webové aplikácie na rovnakom počítači. V situácii, keď webový server používa veľké množstvo personalizovaných adresárov, môžeme pomocou impersonácie zabrániť, aby aplikácia nesprístupnila užívateľovi iné adresáre ako tie, na ktoré má oprávnenie.&lt;br /&gt;
ASP.NET podporuje dva typy impersonácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Konfiguračnú, prostredníctvom konfiguračného súboru '''web.config''' webovej služby.&lt;br /&gt;
* Programovú, ktorá umožňuje prepnutie identity v rámci programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Konfiguračná impersonácia====&lt;br /&gt;
&lt;br /&gt;
Predstavuje najjednoduchšiu formu impersonácie prostredníctvom nadefinovania v konfiguračnom súbore web.config pomocou prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;, '''ktorého hodnotu nastavíme na '''true. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.1'''  Konfiguračné nastavenie impersonácie v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;system.web&amp;gt;&lt;br /&gt;
      &amp;lt;identity impersonate=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
ASP.NET umožňuje pevné nastavenie identity, pod ktorou bude spúšťaný kód webovej služby.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.2'''  Konfiguračné nastavenie impersonácie s predefinovaným účtom&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;identity impersonate=&amp;quot;true&amp;quot; userName=&amp;quot;USER&amp;quot; password=&amp;quot;PASSWORD&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Programová impersonácia====&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole si vysvetlíme programovú impersonáciu s využitím platformy .NET Framework. Umožňuje väčšiu kontrolu  nad procesom. Pre programovú impersonáciu sa využíva metóda '''WindowsIdentity.Impersonate()''', ktorá je súčasťou menného priestoru''' System.Security.Principal. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pomocou tejto metódy môžeme nastaviť impersonáciu pre špecifický účet,  ktorý je určený príznakom účtu (account token). Postup pri programovej impersonácii je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. Najskôr získame príznak účtu Windows, ktorý chceme zosobniť.&lt;br /&gt;
&lt;br /&gt;
2. Pomocou metódy WindowsIdentity.Impersonate() spustíme proces impersonácie. Návratová hodnota tejto metódy je objekt '''WindowsImpersonationContext'''.&lt;br /&gt;
&lt;br /&gt;
3. Návrat k pôvodnej identite dosiahneme zavolaním metódy '''Undo() '''objektu WindowsImpersonationContext.&lt;br /&gt;
&lt;br /&gt;
Príznaky užívateľských účtov sú v platforme .NET reprezentované pomocou objektu IntPtr. Tento objekt  reprezentuje ukazovatele do oblasti neriadenej pamäte.&lt;br /&gt;
&lt;br /&gt;
Získanie príznaku účtu aktuálneho prihláseného užívateľa je Tab. 5.3.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.3'''  Získanie príznaku účtu Windows&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
IntPtr token = ((WindowsIdentity)User.Identity).Token;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Samotná impersonácia pomocou príznaku účtu s využitím metódy Impersonate() je v Tab. 5.4.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.4'''  Proces impersonácie s využitím metódy Impersonate()&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WindowsImpersonationContext impersonationContext;&lt;br /&gt;
impersonationContext = WindowsIdentity.Impersonate(token);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integrované overenie službou Windows s impersonáciou===&lt;br /&gt;
&lt;br /&gt;
Spôsoby realizácie impersonácie sme si vysvetlili v kapitole 5.2.1 Pre korektné využitie tohto typu overovania klientskych aplikácií je nutné zadeklarovať ten typ autentifikácie v konfiguračnom súbore webovej služby web.config prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;authentication mode&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;, '''ktorý nastavíme na typ Windows'''. '''Samotnú impersonáciu povolíme prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity impersonate&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; ''', ktorý nastavíme na hodnotu''' true'''. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.5'''  Nastavenie integrovanej autentifikácie Windows s impersonáciou v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;system.web&amp;gt;&lt;br /&gt;
      &amp;lt;authentication mode=&amp;quot;Windows&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;identity impersonate=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Táto konfigurácia zosobní kód webovej služby ASP.NET užívateľa, ktorý bol overený službou IIS. Pre zosobnenie kódu webovej služby je nutné zakázať anonymný prístup v službe IIS. Ak je v službe IIS povolený anonymný prístup,  kód ASP.NET bude spustený pod účtom hosťa v Internete, implicitne účet IUSER_POČÍTAČ.&lt;br /&gt;
&lt;br /&gt;
Pri tomto spôsobe autentifikácie máme tieto možnosti na autorizáciu klienta &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Zoznamy ACL (Access control list). Prostredníctvom nich môžeme obmedziť prístup k súborom webovej služby a prostriedkom, ktoré využíva.&lt;br /&gt;
* Autorizácia prostredníctvom adresy URL, ktorá sa realizuje konfiguračne v súbore web.config webovej služby alebo v súbore machine.confing.&lt;br /&gt;
Tento typ integrovaného overovania Windows je vhodné pre webové služby použiť v nasledujúcich situáciách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pokiaľ majú byť užívatelia webovej služby overovaní na základe existujúcich účtov Windows.&lt;br /&gt;
* Ak má byť kontext zabezpečenia spúšťajúceho užívateľa webovou službou  poslaný do ďalšej vrstvy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integrované overenie systému Windows bez impersonácie===&lt;br /&gt;
&lt;br /&gt;
Tento model overovania je po stránke konfiguračného zabezpečenia totožný s integrovaným overovaním Windows s impersonáciou. Jediný rozdiel je v tom, že v konfiguračnom súbore webovej služby web.config je prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity impersonate&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''nastavený na hodnotu '''false'''.   &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.6'''  Nastavenie integrovanej autentifikácie Windows bez impersonácie v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;system.web&amp;gt;&lt;br /&gt;
      &amp;lt;authentication mode=&amp;quot;Windows&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;identity impersonate=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Možnosti autorizácie a scenáre nasadenia tohto modelu sú rovnaké ako v predchádzajúcej kapitole Integrované overenie službou Windows s impersonáciou, preto ich neuvádzame.&lt;br /&gt;
&lt;br /&gt;
===Integrované overenie systému Windows s preddefinovanou identitou===&lt;br /&gt;
&lt;br /&gt;
Použitie pevnej identity  pre proces ASP.NET  nie je veľmi vhodné a zaužívané riešenie. Nakoľko implicitne je proces ASP.NET spúšťaný pod fixným účtom, ktorý je dobre zabezpečený, jeho typ záleží od verzie služby IIS. Pokiaľ by sme chceli spúšťať proces ASP.NET pod naším preddefinovaným fixným účtom, museli by sme mu zadefinovať veľmi silné oprávnenia. Pri zlej konfigurácii účtu to môže predstavovať veľmi silné  bezpečnostné riziko. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Takisto ako v predchádzajúcich dvoch schémach integrovaného overovania Windows, sa aj tento typ overovania  realizuje konfiguračne v súbore web.config webovej služby, kde sa hodnota prvku  '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity impersonate&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''nastaví na hodnotu''' true '''a v samotnom prvku uvedieme užívateľské meno a heslo účtu. Z dôvodu zvýšenia bezpečnosti môžeme využiť nástroj '''aspnet_setreg.exe '''na zakryptovanie prihlasovacích informácií. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;29&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samotná konfigurácia integrovaného overovania Windows s preddefinovaným pevným účtom je v Tab. 5.7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.7''' Nastavenie integrovanej autentifikácie Windows s preddefinovanou identitou v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
  &amp;lt;system.web&amp;gt;&lt;br /&gt;
    &amp;lt;authentication mode=&amp;quot;Windows&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;identity impersonate=&amp;quot;true&amp;quot;&lt;br /&gt;
       userName=&amp;quot;registry:HKLM\Software\AspNetIdentity,Name&amp;quot;&lt;br /&gt;
       password=&amp;quot;registry:HKLM\Software\AspNetIdentity,Pwd&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole sme sa venovali autentifikácii Windows. Tento model overovania sa využíva pre aplikácie, v ktorých webový server aj užívatelia patria do rovnakej lokálnej siete alebo intranetu. Podrobnejšie sme sa venovali integrovanej autentifikácii Windows, nakoľko predstavuje štandard pre intranetové aplikácie založené na WAN alebo LAN sieťach. Z  toho dôvodu je využívaná v malých podnikových sieťach. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia založená na certifikátoch==&lt;br /&gt;
&lt;br /&gt;
Samotný princíp a fungovanie certifikátov sme si vysvetlili v podkapitole 4.1.1. Overovanie klientskych certifikátov môžeme vo webovej službe využiť na overovanie:&lt;br /&gt;
&lt;br /&gt;
* klientskych a serverových aplikácií volajúcich webovú službu,&lt;br /&gt;
* iných webových služieb.&lt;br /&gt;
Existujú niektoré obmedzenia, s ktorými sa môžeme stretnúť pri overovaní klientskych aplikácií prostredníctvom certifikátov, v tejto kapitole sa pokúsime niektoré z nich načrtnúť a takisto ponúknuť aj riešenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Proces autentifikácie klientskych certifikátov===&lt;br /&gt;
&lt;br /&gt;
Problém vzniká, ak klient komunikuje s webovou službou prostredníctvom  webovej aplikácie. Webová aplikácia môže overiť klientsky certifikát, ale ten istý certifikát nie je možné použiť na overenie webovou službou. Webová aplikácia nemôže poskytnúť klientsky certifikát spúšťajúceho užívateľa do webovej službe. Dôvod je nasledovný: webová aplikácia nemá prístup k súkromnému kľúču klienta. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_7.png|framed|center|Obr. 5.1 Problém overovania klientskych certifikátov webovou službou]]&lt;br /&gt;
&lt;br /&gt;
===Proces autentifikácie klientskeho certifikátu prostredníctvom podsystému===&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sa oboznámime s riešením problému, ktorý sme si načrtli v podkapitole Proces autentifikácie klientskych certifikátov. Riešenie nášho problému môže byť odstránené nasledujúcim komunikačným scenárom &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Klient volá webovú službu prostredníctvom webovej aplikácie.&lt;br /&gt;
&lt;br /&gt;
2. Aplikácia plní úlohu autentifikácie a autorizácie klienta a je zodpovedná za svojich klientov.&lt;br /&gt;
&lt;br /&gt;
3. Po úspešnom overení na základe existencie členstva klienta v nejakej roli webová aplikácia môže volať webovú službu prostredníctvom rôznych certifikátov. Tým je zabezpečená existencia viacerých užívateľských rolí vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
4. Webová služba autorizuje webovú aplikáciu na základe  certifikátu, ktorý  od nej dostala.&lt;br /&gt;
&lt;br /&gt;
Dôvernosť a integrita komunikácie medzi  serverom webovej aplikácie a webovou službou je zabezpečená použitím protokolu SSL alebo IPSec. Prostredníctvom certifikátov je ošetrený neautorizovaný prístup. Celý  komunikačný scenár je znázornený na Obr. 5.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_8.png|framed|center|Obr. 5.2 Overovanie klientov webovou službou prostredníctvom podsystému]]&lt;br /&gt;
&lt;br /&gt;
===Implementácia overovanie klientov webovou službou prostredníctvom podsystému na platforme .NET Framework s využitím serverovej aplikácie===&lt;br /&gt;
Z dôvodu, že webová aplikácia ASP.NET nemá priamy prístup k certifikátom, musíme použiť dodatočný proces, ktorý zabezpečí volanie webovej služby a predanie samotných certifikátov službe. Proces musí byť nakonfigurovaný tak, aby bol spúšťaný s pridruženým užívateľským profilom, pretože ASP.NET aplikácia nemá načítaný príslušný užívateľský proces a k nemu zodpovedajúce úložisko certifikátov. Tento scenár môžeme realizovať prostredníctvom &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* služby systému Windows,&lt;br /&gt;
* serverovej aplikácie (Model Enterprise Services).&lt;br /&gt;
&lt;br /&gt;
Celý proces overovania s využitím serverovej aplikácie sa skladá z nasledujúcich krokov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. ASP.NET aplikácia autentifikuje volajúcich klientov na základe ich certifikátov.&lt;br /&gt;
&lt;br /&gt;
2. Webová aplikácia ASP.NET autorizuje prístup klientov k webovej službe.&lt;br /&gt;
&lt;br /&gt;
3. ASP.NET aplikácia volá  príslušný serverový komponent (ten je spúšťaný iba v serverovom procese).&lt;br /&gt;
&lt;br /&gt;
4. Serverová aplikácia je spúšťaná pod konkrétnym účtom. K nemu je pridružený užívateľský profil. Serverový komponent načíta certifikát z úložiska certifikátov. Ten je použitý webovou službou na overenie webovej aplikácie.&lt;br /&gt;
&lt;br /&gt;
5. Serverový komponent volá webovú službu ASP.NET a predáva jej klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
Celý proces overovania certifikátov s využitím serverového komponentu je znázornený na Obr. 5.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_9.png||framed|center|Obr. 5.3 Overovanie klientov webovou službou s využitím serverovej aplikácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ]]&lt;br /&gt;
&lt;br /&gt;
Takýto scenár server / server  funguje za predpokladu, že webová aplikácia správne autentifikovala a autorizovala klienta.  Použitie dodatočného procesu na prístup k certifikátom je nutný z toho dôvodu, že účet ASP.NET nemá prístup  k žiadnemu certifikátu na webovom serveri. Každý certifikát je spracovávaný v rámci užívateľského profilu s pridruženým účtom.&lt;br /&gt;
&lt;br /&gt;
===Overovanie desktopových aplikácií prostredníctvom klientskych certifikátov webovou službou===&lt;br /&gt;
&lt;br /&gt;
Doteraz sme sa zaoberali prípadom, v ktorom konzumentom XML ASP.NET webovej služby bola webová aplikácia, napríklad ASP.NET stránka. V tejto práci budeme neskôr vyvíjať vlastnú bezpečnostnú platformu pre XML ASP.NET webové služby, v ktorej budeme v komunikačnom scenári využívať desktopovú aplikáciu typu winforms. Pri overovaní klientskych certifikátov desktopovej aplikácie nie je nutné použitie podsystému. Celý proces overovania klientskeho certifikátu webovou službou má tieto kroky:&lt;br /&gt;
&lt;br /&gt;
1. Desktopová aplikácia načíta príslušný klientsky certifikát z úložiska certifikátov.&lt;br /&gt;
&lt;br /&gt;
2. Aplikácia winforms  pripojí klientsky certifikát k vlastnosti '''ClientCertificates '''triedy proxy, ktorej význam sme si vysvetlili v kapitole  Trieda proxy.&lt;br /&gt;
&lt;br /&gt;
3. Cez HTTPS kanál pošle SOAP požiadavku na XML webovú službu.&lt;br /&gt;
&lt;br /&gt;
4. Klientsky certifikát na strane webovej služby môže byť overený dvoma spôsobmi &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* webovým serverom,&lt;br /&gt;
* priamo v programovom kóde webovej služby ASP.NET.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_10.png||framed|center|Obr. 5.4 Overenie klientskeho certifikátu desktopovej aplikácie XML ASP.NET webovou službou]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Autentifik%C3%A1cia&amp;diff=5072</id>
		<title>Autentifikácia</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Autentifik%C3%A1cia&amp;diff=5072"/>
		<updated>2010-06-11T12:06:19Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|5|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia==&lt;br /&gt;
&lt;br /&gt;
Autentifikácia predstavuje kľúčovú úlohu pri vytváraní bezpečnej komunikácie medzi klientom a webovou službou. Od identity klienta sa odvíja celý scenár komunikácie, preto sa samotnému overovaniu klientov budeme venovať podrobnejšie. Overovanie predstavuje proces, v ktorom sa zisťuje identita  užívateľa a zabezpečuje sa jej platnosť. V aplikáciách ASP.NET ju môžeme implementovať pomocou jedného z týchto štyroch systémov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. '''Formulárová autentifikácia'''. Tento typ overovania je založený na prihlasovacej stránke a existujúcej databáze užívateľov. Užívateľ dostane lístok, ktorý je kombináciou zakryptovaných hodnôt uložených v cookies. Pre webové služby  nie je tento typ vhodný, kedže webové služby sú bezstavové a použitie cookies by ich zbytočne obmedzovalo.&lt;br /&gt;
&lt;br /&gt;
2. '''Passportová autentifikácia'''. Využíva infraštruktúru Microsoft Passport. Ten implementuje centrálnu správu identít. Prihlasovacie údaje užívateľov sú spracúvané samostatným passportovým serverom. Tento spôsob overovania je  neflexibilný a v tejto práci sa mu podrobnejšie nebudeme venovať.&lt;br /&gt;
&lt;br /&gt;
3. '''Integrovaná autentifikácia Windows'''.&lt;br /&gt;
&lt;br /&gt;
4. '''Autentifikácia založená na certifikácii.'''&lt;br /&gt;
&lt;br /&gt;
5. '''Vlastný typ autentifikačného procesu.'''&lt;br /&gt;
&lt;br /&gt;
Posledné tri spôsoby overovania klientskych aplikácií si rozoberieme v samostatných podkapitolách, nakoľko sú vhodné pre autentifikáciu klientov webových služieb. Vysvetlíme si princípy, na ktorých sú založené a oblasti, v ktorých sú nasadzované. Spomenieme výhody a nevýhody, ktoré so sebou prinášajú. A tak isto uvedieme ich programovú realizáciu v jazyku C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Windows Autentifikácia==&lt;br /&gt;
&lt;br /&gt;
V tejto časti sa venujeme bezpečnosti webových služieb ASP.NET. Technológia Windows autentifikácie je úzko spojená s firmou Microsoft a tak isto operačnými systémami Windows od tejto spoločnosti. Jednou z najjednoduchších možností autentifikácie klientov webových služieb je ponechať túto autentifikáciu na webový server, napríklad ISS, respektíve na samotný operačný systém Windows. Princíp tohto typu autentifikácie je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Webový server požiada klientsku aplikáciu o autentifikáciu.&lt;br /&gt;
&lt;br /&gt;
2. Tá predloží prihlasovacie údaje.&lt;br /&gt;
&lt;br /&gt;
3. Tie sú následne namapované na užívateľský účet Windows.&lt;br /&gt;
&lt;br /&gt;
Táto metóda overovania užívateľov je vhodná, ak našu webovú službu využíva menší a stabilný počet užívateľov, ktorí majú existujúce užívateľské účty Windows. Tento typ sa využíva pre aplikácie, v ktorých webový server aj užívatelia patria do rovnakej lokálnej siete alebo intranetu.  Medzi výhody patrí &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Využitie existujúcich účtov Windows.&lt;br /&gt;
* Využitie samotného zabezpečenia operačného systému Windows a impersonácie. Môžeme využiť už  existujúce oprávnenie užívateľských účtov, napríklad pre  prístup k súborom. Programový kód ASP.NET je vykonávaný pod fixným účtom, pre službu IIS 5.x  je to účet ASP.NET a pre IIS 6.0 je to účet Network Service. Použitie pevného účtu má veľa dôvodov. Skoro vo všetkých prípadoch sú práva pridelené užívateľom oveľa menšie ako sú práva potrebné pre aplikáciu. Existuje mechanizmus, pomocou ktorého je možné spúšťať programový kód pod prevzatou identitou. Ide o tzv. impersonáciu. Takýto model je vhodné použiť pre lokálne siete s malým počtom užívateľov, ktorí majú korektne zadefinované užívateľské oprávnenie Windows. Impersonácia bude vysvetlená  v podkapitole 5.2.1.&lt;br /&gt;
* Pri tomto type nie je nutné vytvárať prihlasovaciu stránku ani databázu užívateľov, čiže táto metóda nie je z programátorského hľadiska časovo náročná.&lt;br /&gt;
Existuje však veľa dôvodov, prečo sa tomuto spôsobu overovania vyhnúť. Napríklad &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Tento typ autentifikácie nie je veľmi flexibilný a veľmi zle sa prispôsobuje.&lt;br /&gt;
* Dochádza pri ňom k naviazaniu na užívateľské účty.&lt;br /&gt;
* Je nevyhnutné, aby klienti webovej služby mali operačný systém od spoločnosti Microsoft kvôli korektnej autentifikácii webovým serverom IIS.&lt;br /&gt;
* Táto metóda neumožňuje riadiť autentifikačný proces. Predstavuje to veľký problém, pokiaľ má byť webová služba verejná.&lt;br /&gt;
Pri Windows autentifikácii je overovanie klienta vykonávané webovým serverom IIS. Ten môže overiť a autorizovať klienta ešte skôr, ako webová aplikácia (napr. webová služba) začne obsluhovať jeho požiadavku. IIS má niekoľko bezpečnostných mechanizmov pomocou ktorých môže  overiť, autorizovať klienta, zabezpečiť dôvernosť a integritu komunikácie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Služba Internet Information Service===&lt;br /&gt;
&lt;br /&gt;
Webový server IIS zabezpečuje korektné prostredie pre beh aplikácie typu klient – server.&lt;br /&gt;
&lt;br /&gt;
K autentifikácii klientov má k dispozícii niekoľko stratégií. Môže použiť na overenie klienta &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* '''Základnú autentifikáciu. '''Túto metódu vyvinulo konzorcium W3C. Definuje dodatočnú hlavičku HTTP, v ktorej sú prenášané užívateľské mená a heslá. Dáta nie sú kryptované, ale sú kódované vo formáte Base64. Tento typ je nutné používať s SSL.&lt;br /&gt;
* '''Digestívnu autentifikáciu. '''Je podobná základnej autentifikácii, prihlasovacie údaje nie sú prenášané v kódovaní Base64, ale sú hašované. Tento spôsob nie je veľmi rozšírený, našiel uplatnenie len v intranetoch.&lt;br /&gt;
* '''Integrovanú autentifikáciu Windows'''. Pri tomto type autentifikácie je overovanie užívateľa ponechané na samotný operačný systém. Využíva sa 96 bitové číslo SID (Secure identifier), ktoré slúži na identifikáciu každého prihláseného užívateľa. Identita každého prihláseného užívateľa sa predáva vo forme tokenu. Pretože integrovaná autentifikácia Windows je najvhodnejším overovacím štandardom pre intranetové aplikácie založené na WAN alebo LAN, budeme sa jej venovať v nasledujúcej podkapitole.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integrovaná autentifikácia Windows==&lt;br /&gt;
&lt;br /&gt;
Podmienkou korektného fungovania tohto typu overovania užívateľov je to, že klient aj webový server sa musia nachádzať na rovnakej lokálnej sieti. Pri tejto metóde sa neprenášajú mená a heslá užívateľov, ale spolupracuje s doménovým serverom alebo inštanciou Active Directory. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na prenos prihlasovacích údajov sa využíva autentifikačný protokol NTLM (NT LAN Manager) alebo protokol Kerberos 5. Druh overovacieho protokolu závisí od operačného systému klienta a serveru. Pokiaľ ide o operačný systém Windows 2000 a vyšší ako autentifikačný protokol je použitý Kerberos 5, inak bude overovanie realizované prostredníctvom NTLM. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole si rozoberieme nasledujúce schémy integrovaného overovania Windows &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Integrované overenie systému Windows s impersonáciou.&lt;br /&gt;
* Integrované overenie systému Windows bez impersonácie.&lt;br /&gt;
* Integrované overenie systému Windows s preddefinovanou identitou.&lt;br /&gt;
Ale skôr ako sa začneme venovať samotnej integrovanej autentifikácii systému Windows, je vhodné si objasniť proces impersonácie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Impersonácia===&lt;br /&gt;
&lt;br /&gt;
Impersonácia je proces vykonávania programového kódu v kontexte identity iného užívateľa. Ako už bolo spomenuté, kód webovej služby ASP.NET beží pod fixným účtom, typ účtu závisí od verzie služby IIS. Dôvody použitia impersonácie sú nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Zvýšenie flexibility systému. Pre každého užívateľa môžeme prideliť rôzne prístupové práva a vyhneme sa tým použitiu fixného účtu pre všetkých užívateľov.&lt;br /&gt;
* Rozlíšenie práv pre jednotlivé webové aplikácie na rovnakom počítači. V situácii, keď webový server používa veľké množstvo personalizovaných adresárov, môžeme pomocou impersonácie zabrániť, aby aplikácia nesprístupnila užívateľovi iné adresáre ako tie, na ktoré má oprávnenie.&lt;br /&gt;
ASP.NET podporuje dva typy impersonácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Konfiguračnú, prostredníctvom konfiguračného súboru '''web.config''' webovej služby.&lt;br /&gt;
* Programovú, ktorá umožňuje prepnutie identity v rámci programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Konfiguračná impersonácia====&lt;br /&gt;
&lt;br /&gt;
Predstavuje najjednoduchšiu formu impersonácie prostredníctvom nadefinovania v konfiguračnom súbore web.config pomocou prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;, '''ktorého hodnotu nastavíme na '''true. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.1'''  Konfiguračné nastavenie impersonácie v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;system.web&amp;gt;&lt;br /&gt;
      &amp;lt;identity impersonate=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
ASP.NET umožňuje pevné nastavenie identity, pod ktorou bude spúšťaný kód webovej služby.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.2'''  Konfiguračné nastavenie impersonácie s predefinovaným účtom&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;identity impersonate=&amp;quot;true&amp;quot; userName=&amp;quot;USER&amp;quot; password=&amp;quot;PASSWORD&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Programová impersonácia====&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole si vysvetlíme programovú impersonáciu s využitím platformy .NET Framework. Umožňuje väčšiu kontrolu  nad procesom. Pre programovú impersonáciu sa využíva metóda '''WindowsIdentity.Impersonate()''', ktorá je súčasťou menného priestoru''' System.Security.Principal. '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pomocou tejto metódy môžeme nastaviť impersonáciu pre špecifický účet,  ktorý je určený príznakom účtu (account token). Postup pri programovej impersonácii je nasledovný &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. Najskôr získame príznak účtu Windows, ktorý chceme zosobniť.&lt;br /&gt;
&lt;br /&gt;
2. Pomocou metódy WindowsIdentity.Impersonate() spustíme proces impersonácie. Návratová hodnota tejto metódy je objekt '''WindowsImpersonationContext'''.&lt;br /&gt;
&lt;br /&gt;
3. Návrat k pôvodnej identite dosiahneme zavolaním metódy '''Undo() '''objektu WindowsImpersonationContext.&lt;br /&gt;
&lt;br /&gt;
Príznaky užívateľských účtov sú v platforme .NET reprezentované pomocou objektu IntPtr. Tento objekt  reprezentuje ukazovatele do oblasti neriadenej pamäte.&lt;br /&gt;
&lt;br /&gt;
Získanie príznaku účtu aktuálneho prihláseného užívateľa je Tab. 5.3.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.3'''  Získanie príznaku účtu Windows&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
IntPtr token = ((WindowsIdentity)User.Identity).Token;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Samotná impersonácia pomocou príznaku účtu s využitím metódy Impersonate() je v Tab. 5.4.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.4'''  Proces impersonácie s využitím metódy Impersonate()&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WindowsImpersonationContext impersonationContext;&lt;br /&gt;
impersonationContext = WindowsIdentity.Impersonate(token);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integrované overenie službou Windows s impersonáciou===&lt;br /&gt;
&lt;br /&gt;
Spôsoby realizácie impersonácie sme si vysvetlili v kapitole 5.2.1 Pre korektné využitie tohto typu overovania klientskych aplikácií je nutné zadeklarovať ten typ autentifikácie v konfiguračnom súbore webovej služby web.config prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;authentication mode&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;, '''ktorý nastavíme na typ Windows'''. '''Samotnú impersonáciu povolíme prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity impersonate&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; ''', ktorý nastavíme na hodnotu''' true'''. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.5'''  Nastavenie integrovanej autentifikácie Windows s impersonáciou v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;system.web&amp;gt;&lt;br /&gt;
      &amp;lt;authentication mode=&amp;quot;Windows&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;identity impersonate=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Táto konfigurácia zosobní kód webovej služby ASP.NET užívateľa, ktorý bol overený službou IIS. Pre zosobnenie kódu webovej služby je nutné zakázať anonymný prístup v službe IIS. Ak je v službe IIS povolený anonymný prístup,  kód ASP.NET bude spustený pod účtom hosťa v Internete, implicitne účet IUSER_POČÍTAČ.&lt;br /&gt;
&lt;br /&gt;
Pri tomto spôsobe autentifikácie máme tieto možnosti na autorizáciu klienta &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Zoznamy ACL (Access control list). Prostredníctvom nich môžeme obmedziť prístup k súborom webovej služby a prostriedkom, ktoré využíva.&lt;br /&gt;
* Autorizácia prostredníctvom adresy URL, ktorá sa realizuje konfiguračne v súbore web.config webovej služby alebo v súbore machine.confing.&lt;br /&gt;
Tento typ integrovaného overovania Windows je vhodné pre webové služby použiť v nasledujúcich situáciách &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pokiaľ majú byť užívatelia webovej služby overovaní na základe existujúcich účtov Windows.&lt;br /&gt;
* Ak má byť kontext zabezpečenia spúšťajúceho užívateľa webovou službou  poslaný do ďalšej vrstvy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integrované overenie systému Windows bez impersonácie===&lt;br /&gt;
&lt;br /&gt;
Tento model overovania je po stránke konfiguračného zabezpečenia totožný s integrovaným overovaním Windows s impersonáciou. Jediný rozdiel je v tom, že v konfiguračnom súbore webovej služby web.config je prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity impersonate&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''nastavený na hodnotu '''false'''.   &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.6'''  Nastavenie integrovanej autentifikácie Windows bez impersonácie v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;system.web&amp;gt;&lt;br /&gt;
      &amp;lt;authentication mode=&amp;quot;Windows&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;identity impersonate=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Možnosti autorizácie a scenáre nasadenia tohto modelu sú rovnaké ako v predchádzajúcej kapitole Integrované overenie službou Windows s impersonáciou, preto ich neuvádzame.&lt;br /&gt;
&lt;br /&gt;
===Integrované overenie systému Windows s preddefinovanou identitou===&lt;br /&gt;
&lt;br /&gt;
Použitie pevnej identity  pre proces ASP.NET  nie je veľmi vhodné a zaužívané riešenie. Nakoľko implicitne je proces ASP.NET spúšťaný pod fixným účtom, ktorý je dobre zabezpečený, jeho typ záleží od verzie služby IIS. Pokiaľ by sme chceli spúšťať proces ASP.NET pod naším preddefinovaným fixným účtom, museli by sme mu zadefinovať veľmi silné oprávnenia. Pri zlej konfigurácii účtu to môže predstavovať veľmi silné  bezpečnostné riziko. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Takisto ako v predchádzajúcich dvoch schémach integrovaného overovania Windows, sa aj tento typ overovania  realizuje konfiguračne v súbore web.config webovej služby, kde sa hodnota prvku  '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;identity impersonate&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''nastaví na hodnotu''' true '''a v samotnom prvku uvedieme užívateľské meno a heslo účtu. Z dôvodu zvýšenia bezpečnosti môžeme využiť nástroj '''aspnet_setreg.exe '''na zakryptovanie prihlasovacích informácií. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;9&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;29&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Samotná konfigurácia integrovaného overovania Windows s preddefinovaným pevným účtom je v Tab. 5.7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 5.7''' Nastavenie integrovanej autentifikácie Windows s preddefinovanou identitou v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
  &amp;lt;system.web&amp;gt;&lt;br /&gt;
    &amp;lt;authentication mode=&amp;quot;Windows&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;identity impersonate=&amp;quot;true&amp;quot;&lt;br /&gt;
       userName=&amp;quot;registry:HKLM\Software\AspNetIdentity,Name&amp;quot;&lt;br /&gt;
       password=&amp;quot;registry:HKLM\Software\AspNetIdentity,Pwd&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
V tejto kapitole sme sa venovali autentifikácii Windows. Tento model overovania sa využíva pre aplikácie, v ktorých webový server aj užívatelia patria do rovnakej lokálnej siete alebo intranetu. Podrobnejšie sme sa venovali integrovanej autentifikácii Windows, nakoľko predstavuje štandard pre intranetové aplikácie založené na WAN alebo LAN sieťach. Z  toho dôvodu je využívaná v malých podnikových sieťach. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Autentifikácia založená na certifikátoch==&lt;br /&gt;
&lt;br /&gt;
Samotný princíp a fungovanie certifikátov sme si vysvetlili v podkapitole 4.1.1. Overovanie klientskych certifikátov môžeme vo webovej službe využiť na overovanie:&lt;br /&gt;
&lt;br /&gt;
* klientskych a serverových aplikácií volajúcich webovú službu,&lt;br /&gt;
* iných webových služieb.&lt;br /&gt;
Existujú niektoré obmedzenia, s ktorými sa môžeme stretnúť pri overovaní klientskych aplikácií prostredníctvom certifikátov, v tejto kapitole sa pokúsime niektoré z nich načrtnúť a takisto ponúknuť aj riešenie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Proces autentifikácie klientskych certifikátov===&lt;br /&gt;
&lt;br /&gt;
Problém vzniká, ak klient komunikuje s webovou službou prostredníctvom  webovej aplikácie. Webová aplikácia môže overiť klientsky certifikát, ale ten istý certifikát nie je možné použiť na overenie webovou službou. Webová aplikácia nemôže poskytnúť klientsky certifikát spúšťajúceho užívateľa do webovej službe. Dôvod je nasledovný: webová aplikácia nemá prístup k súkromnému kľúču klienta. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_7.png|framed|center|Obr. 5.1 Problém overovania klientskych certifikátov webovou službou]]&lt;br /&gt;
&lt;br /&gt;
===Proces autentifikácie klientskeho certifikátu prostredníctvom podsystému===&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole sa oboznámime s riešením problému, ktorý sme si načrtli v podkapitole Proces autentifikácie klientskych certifikátov. Riešenie nášho problému môže byť odstránené nasledujúcim komunikačným scenárom &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. Klient volá webovú službu prostredníctvom webovej aplikácie.&lt;br /&gt;
&lt;br /&gt;
2. Aplikácia plní úlohu autentifikácie a autorizácie klienta a je zodpovedná za svojich klientov.&lt;br /&gt;
&lt;br /&gt;
3. Po úspešnom overení na základe existencie členstva klienta v nejakej roli webová aplikácia môže volať webovú službu prostredníctvom rôznych certifikátov. Tým je zabezpečená existencia viacerých užívateľských rolí vo webovej službe.&lt;br /&gt;
&lt;br /&gt;
4. Webová služba autorizuje webovú aplikáciu na základe  certifikátu, ktorý  od nej dostala.&lt;br /&gt;
&lt;br /&gt;
Dôvernosť a integrita komunikácie medzi  serverom webovej aplikácie a webovou službou je zabezpečená použitím protokolu SSL alebo IPSec. Prostredníctvom certifikátov je ošetrený neautorizovaný prístup. Celý  komunikačný scenár je znázornený na Obr. 5.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_8.png|framed|center|Obr. 5.2 Overovanie klientov webovou službou prostredníctvom podsystému]]&lt;br /&gt;
&lt;br /&gt;
===Implementácia overovanie klientov webovou službou prostredníctvom podsystému na platforme .NET Framework s využitím serverovej aplikácie===&lt;br /&gt;
Z dôvodu, že webová aplikácia ASP.NET nemá priamy prístup k certifikátom, musíme použiť dodatočný proces, ktorý zabezpečí volanie webovej služby a predanie samotných certifikátov službe. Proces musí byť nakonfigurovaný tak, aby bol spúšťaný s pridruženým užívateľským profilom, pretože ASP.NET aplikácia nemá načítaný príslušný užívateľský proces a k nemu zodpovedajúce úložisko certifikátov. Tento scenár môžeme realizovať prostredníctvom &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* služby systému Windows,&lt;br /&gt;
* serverovej aplikácie (Model Enterprise Services).&lt;br /&gt;
&lt;br /&gt;
Celý proces overovania s využitím serverovej aplikácie sa skladá z nasledujúcich krokov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
1. ASP.NET aplikácia autentifikuje volajúcich klientov na základe ich certifikátov.&lt;br /&gt;
&lt;br /&gt;
2. Webová aplikácia ASP.NET autorizuje prístup klientov k webovej službe.&lt;br /&gt;
&lt;br /&gt;
3. ASP.NET aplikácia volá  príslušný serverový komponent (ten je spúšťaný iba v serverovom procese).&lt;br /&gt;
&lt;br /&gt;
4. Serverová aplikácia je spúšťaná pod konkrétnym účtom. K nemu je pridružený užívateľský profil. Serverový komponent načíta certifikát z úložiska certifikátov. Ten je použitý webovou službou na overenie webovej aplikácie.&lt;br /&gt;
&lt;br /&gt;
5. Serverový komponent volá webovú službu ASP.NET a predáva jej klientsky certifikát.&lt;br /&gt;
&lt;br /&gt;
Celý proces overovania certifikátov s využitím serverového komponentu je znázornený na Obr. 5.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_9.png||framed|center|Obr. 5.3 Overovanie klientov webovou službou s využitím serverovej aplikácie &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;16&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; ]]&lt;br /&gt;
&lt;br /&gt;
Takýto scenár server / server  funguje za predpokladu, že webová aplikácia správne autentifikovala a autorizovala klienta.  Použitie dodatočného procesu na prístup k certifikátom je nutný z toho dôvodu, že účet ASP.NET nemá prístup  k žiadnemu certifikátu na webovom serveri. Každý certifikát je spracovávaný v rámci užívateľského profilu s pridruženým účtom.&lt;br /&gt;
&lt;br /&gt;
===Overovanie desktopových aplikácií prostredníctvom klientskych certifikátov webovou službou===&lt;br /&gt;
&lt;br /&gt;
Doteraz sme sa zaoberali prípadom, v ktorom konzumentom XML ASP.NET webovej služby bola webová aplikácia, napríklad ASP.NET stránka. V tejto práci budeme neskôr vyvíjať vlastnú bezpečnostnú platformu pre XML ASP.NET webové služby, v ktorej budeme v komunikačnom scenári využívať desktopovú aplikáciu typu winforms. Pri overovaní klientskych certifikátov desktopovej aplikácie nie je nutné použitie podsystému. Celý proces overovania klientskeho certifikátu webovou službou má tieto kroky:&lt;br /&gt;
&lt;br /&gt;
1. Desktopová aplikácia načíta príslušný klientsky certifikát z úložiska certifikátov.&lt;br /&gt;
&lt;br /&gt;
2. Aplikácia winforms  pripojí klientsky certifikát k vlastnosti '''ClientCertificates '''triedy proxy, ktorej význam sme si vysvetlili v kapitole  Trieda proxy.&lt;br /&gt;
&lt;br /&gt;
3. Cez HTTPS kanál pošle SOAP požiadavku na XML webovú službu.&lt;br /&gt;
&lt;br /&gt;
4. Klientsky certifikát na strane webovej služby môže byť overený dvoma spôsobmi &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* webovým serverom,&lt;br /&gt;
* priamo v programovom kóde webovej služby ASP.NET.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_10.png||framed|center|Obr. 5.4 Overenie klientskeho certifikátu desktopovej aplikácie XML ASP.NET webovou službou]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_6.png&amp;diff=5071</id>
		<title>Súbor:Dp 2010 jm 6.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_6.png&amp;diff=5071"/>
		<updated>2010-06-11T11:44:30Z</updated>

		<summary type="html">&lt;p&gt;Ian: bola nahraná nová verzia „Súbor:Dp 2010 jm 6.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_5.png&amp;diff=5070</id>
		<title>Súbor:Dp 2010 jm 5.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_5.png&amp;diff=5070"/>
		<updated>2010-06-11T11:44:18Z</updated>

		<summary type="html">&lt;p&gt;Ian: bola nahraná nová verzia „Súbor:Dp 2010 jm 5.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5069</id>
		<title>Zabezpečennie webových aplikácií</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5069"/>
		<updated>2010-06-11T11:40:36Z</updated>

		<summary type="html">&lt;p&gt;Ian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|3|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečenie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Zabezpečenie webových aplikácií=&lt;br /&gt;
V predchádzajúcej kapitole sme opísali technologické a programové pozadie XML ASP.NET webových služieb. Pri vytváraní  verejných webových služieb predstavuje ich bezpečnosť faktor, ktorým môžeme určovať ich kvalitu. Webové služby komunikujú s klientskymi aplikáciami prostredníctvom XML správ, samy o sebe nezabezpečujú ochranu prenášaných dát. Pokiaľ webová služba poskytuje citlivé informácie, napríklad  bankové webové služby, webové služby zdravotných poisťovní, poprípade webové služby leteckých spoločností a iné, musí byť zabezpečená ochrana prenášaných dát. Musia byť vytvorené mechanizmy na identifikáciu klientov volajúcich webové služby, na ich autorizáciu a mechanizmy na zabezpečenie integrity  a dôvernosti komunikácie.&lt;br /&gt;
&lt;br /&gt;
Táto kapitola sa zaoberá práve autentifikáciou, autorizáciou klientov webových služieb ASP.NET a zabezpečením integrity a dôvernosti komunikácie. Tie predstavujú hlavné úrovne bezpečnosti.&lt;br /&gt;
&lt;br /&gt;
==Úrovne bezpečnosti==&lt;br /&gt;
Všeobecne pri webových aplikáciách pri  implementácii bezpečnosti  je  nutné zabezpečiť nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. '''Autentifikáciu'''. To znamená, že najskôr musíme overiť identitu užívateľa, ktorý napríklad  volá niektorú z metód webovej služby.&lt;br /&gt;
&lt;br /&gt;
2. '''Autorizáciu'''.  Na základe jeho identity sa musíme rozhodnúť, aké operácie bude môcť užívateľ vykonávať a k akým zdrojom bude mať prístup. Autorizácia zisťuje, na čo všetko má klient oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. '''Utajenie'''. Počas komunikácie klientskej aplikácie s webovou službou musíme zabezpečiť ochranu prenášaných dát. Z toho dôvodu je nutné kryptovať prenosový kanál medzi klientskou aplikáciou a webovým serverom.&lt;br /&gt;
&lt;br /&gt;
4. '''Integritu'''. Predstavuje ochranu  prenášaných dát pred neoprávneným pozmenením neautorizovanými činiteľmi. Je realizovaná prostredníctvom digitálnych podpisov.&lt;br /&gt;
&lt;br /&gt;
Začneme tým, že sa oboznámime s utajením a integritou komunikácie, aj keď prvým krokom pri vytváraní bezpečnej komunikácie je overenie klienta. Je to z dôvodu, že v kapitole 4 sa oboznámime s princípom certifikátov, ktoré predstavujú jednu z overovacích metód klientov. Autentifikácia klientov prostredníctvom certifikátov je rozobraná v samostatnej kapitole 5.3.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5068</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5068"/>
		<updated>2010-06-11T11:39:37Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* XML ASP.NET webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraní XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúcim danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom serveri.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb, napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mať schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup ku globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká HTTP kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility podľa aktuálnej požiadavky.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút WebService===&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebServiceBinding===&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebMethod===&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nulu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informáciám  v kolekcii Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webová metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pred zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false má zmysel len vtedy, ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.é.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek poľom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poľiami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaný na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Trieda proxy==&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .*config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C#, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor, do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastaveným protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
===Popis kódu  triedy proxy===&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda začínajúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda začínajúca asynchrónne volanie webovej metódy, doporučená metóda..&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda začínajúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúži na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakania klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúži na nastavenie alebo získanie URL ASP.NET webovej &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5067</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5067"/>
		<updated>2010-06-11T11:31:56Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Základná štruktúra Web Service Description Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML a webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;  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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
&lt;br /&gt;
* komunikačné protokoly,&lt;br /&gt;
* formáty na popis dát,&lt;br /&gt;
* popisné jazyky,&lt;br /&gt;
* mechanizmy na „objavovanie&amp;quot; XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
&lt;br /&gt;
* Simple Object Access Protocol,&lt;br /&gt;
* Web Service Description Language,&lt;br /&gt;
* Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument má jeden koreňový prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;) '''a telo správy (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''). Formát SOAP správy je znázornený na obrázku 1.3.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
* RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* literal,&lt;br /&gt;
* SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* SOAP 1.1,&lt;br /&gt;
* SOAP 1.2.&lt;br /&gt;
&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri obálky sa nachádza nepovinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''a povinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. V Tab. 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* názov webovej metódy,&lt;br /&gt;
* počet, typy a poradie parametrov,&lt;br /&gt;
* typ návratovej hodnoty,&lt;br /&gt;
* volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;types&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;portType&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;binding&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;service&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' definujú protokol. WSDL dokument má jeden koreňový element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;definitions&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;6&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:types&amp;gt;&amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:message&amp;gt;&amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:portType &amp;gt;&amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:binding&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
  &amp;lt;wsdl:service&amp;gt;&amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
&amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis hlavných elementov WSDL dokumentu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;11&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''PortType'''. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
* '''Binding.''' Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
* '''Service.''' Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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 &amp;quot;first WSDL&amp;quot; (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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; 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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;12&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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é. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Ďalším problémom, ktorý je výrazný, je to, že nikto nezaručuje dôveryhodnosť poskytovateľov služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;8&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
&lt;br /&gt;
* Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
* 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.)&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
&lt;br /&gt;
* Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, prípadne použije klient UDDI.&lt;br /&gt;
* Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
* Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
* Tá spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
* Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5066</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5066"/>
		<updated>2010-06-11T11:31:18Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Popis kódu  triedy proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút WebService===&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebServiceBinding===&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebMethod===&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Trieda proxy==&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
===Popis kódu  triedy proxy===&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5065</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5065"/>
		<updated>2010-06-11T11:31:00Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Trieda proxy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút WebService===&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebServiceBinding===&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebMethod===&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Trieda proxy==&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5064</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5064"/>
		<updated>2010-06-11T11:30:41Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Atribút WebMethod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút WebService===&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebServiceBinding===&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebMethod===&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5063</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5063"/>
		<updated>2010-06-11T11:30:20Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Atribút WebService */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atribút WebService===&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebServiceBinding===&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5062</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5062"/>
		<updated>2010-06-11T11:30:05Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Atribút WebServiceBinding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribút WebServiceBinding===&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5061</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5061"/>
		<updated>2010-06-11T11:29:40Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Atribúty triedy XML ASP.NET webovej služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Atribúty triedy XML ASP.NET webovej služby==&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5060</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5060"/>
		<updated>2010-06-11T11:28:58Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Základná trieda WebService */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Základná trieda WebService==&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5059</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5059"/>
		<updated>2010-06-11T11:28:26Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=XML ASP.NET webové služby=&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Základná trieda WebService===&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5058</id>
		<title>Zabezpečennie webových aplikácií</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5058"/>
		<updated>2010-06-11T11:27:24Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Zabezpečenie webových aplikácií */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|3|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečenie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
=Zabezpečenie webových aplikácií=&lt;br /&gt;
==Bezpečnosť webových aplikácií==&lt;br /&gt;
V predchádzajúcej kapitole sme opísali technologické a programové pozadie XML ASP.NET webových služieb. Pri vytváraní  verejných webových služieb predstavuje ich bezpečnosť faktor, ktorým môžeme určovať ich kvalitu. Webové služby komunikujú s klientskymi aplikáciami prostredníctvom XML správ, samy o sebe nezabezpečujú ochranu prenášaných dát. Pokiaľ webová služba poskytuje citlivé informácie, napríklad  bankové webové služby, webové služby zdravotných poisťovní, poprípade webové služby leteckých spoločností a iné, musí byť zabezpečená ochrana prenášaných dát. Musia byť vytvorené mechanizmy na identifikáciu klientov volajúcich webové služby, na ich autorizáciu a mechanizmy na zabezpečenie integrity  a dôvernosti komunikácie.&lt;br /&gt;
&lt;br /&gt;
Táto kapitola sa zaoberá práve autentifikáciou, autorizáciou klientov webových služieb ASP.NET a zabezpečením integrity a dôvernosti komunikácie. Tie predstavujú hlavné úrovne bezpečnosti.&lt;br /&gt;
&lt;br /&gt;
==Úrovne bezpečnosti==&lt;br /&gt;
&lt;br /&gt;
Všeobecne pri webových aplikáciách pri  implementácii bezpečnosti  je  nutné zabezpečiť nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. '''Autentifikáciu'''. To znamená, že najskôr musíme overiť identitu užívateľa, ktorý napríklad  volá niektorú z metód webovej služby.&lt;br /&gt;
&lt;br /&gt;
2. '''Autorizáciu'''.  Na základe jeho identity sa musíme rozhodnúť, aké operácie bude môcť užívateľ vykonávať a k akým zdrojom bude mať prístup. Autorizácia zisťuje, na čo všetko má klient oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. '''Utajenie'''. Počas komunikácie klientskej aplikácie s webovou službou musíme zabezpečiť ochranu prenášaných dát. Z toho dôvodu je nutné kryptovať prenosový kanál medzi klientskou aplikáciou a webovým serverom.&lt;br /&gt;
&lt;br /&gt;
4. '''Integritu'''. Predstavuje ochranu  prenášaných dát pred neoprávneným pozmenením neautorizovanými činiteľmi. Je realizovaná prostredníctvom digitálnych podpisov.&lt;br /&gt;
&lt;br /&gt;
Začneme tým, že sa oboznámime s utajením a integritou komunikácie, aj keď prvým krokom pri vytváraní bezpečnej komunikácie je overenie klienta. Je to z dôvodu, že v kapitole 4 sa oboznámime s princípom certifikátov, ktoré predstavujú jednu z overovacích metód klientov. Autentifikácia klientov prostredníctvom certifikátov je rozobraná v samostatnej kapitole 5.3.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5057</id>
		<title>Zabezpečennie webových aplikácií</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5057"/>
		<updated>2010-06-11T11:25:46Z</updated>

		<summary type="html">&lt;p&gt;Ian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|3|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečenie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Zabezpečenie webových aplikácií==&lt;br /&gt;
V predchádzajúcej kapitole sme opísali technologické a programové pozadie XML ASP.NET webových služieb. Pri vytváraní  verejných webových služieb predstavuje ich bezpečnosť faktor, ktorým môžeme určovať ich kvalitu. Webové služby komunikujú s klientskymi aplikáciami prostredníctvom XML správ, samy o sebe nezabezpečujú ochranu prenášaných dát. Pokiaľ webová služba poskytuje citlivé informácie, napríklad  bankové webové služby, webové služby zdravotných poisťovní, poprípade webové služby leteckých spoločností a iné, musí byť zabezpečená ochrana prenášaných dát. Musia byť vytvorené mechanizmy na identifikáciu klientov volajúcich webové služby, na ich autorizáciu a mechanizmy na zabezpečenie integrity  a dôvernosti komunikácie.&lt;br /&gt;
&lt;br /&gt;
Táto kapitola sa zaoberá práve autentifikáciou, autorizáciou klientov webových služieb ASP.NET a zabezpečením integrity a dôvernosti komunikácie. Tie predstavujú hlavné úrovne bezpečnosti.&lt;br /&gt;
&lt;br /&gt;
==Úrovne bezpečnosti==&lt;br /&gt;
&lt;br /&gt;
Všeobecne pri webových aplikáciách pri  implementácii bezpečnosti  je  nutné zabezpečiť nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. '''Autentifikáciu'''. To znamená, že najskôr musíme overiť identitu užívateľa, ktorý napríklad  volá niektorú z metód webovej služby.&lt;br /&gt;
&lt;br /&gt;
2. '''Autorizáciu'''.  Na základe jeho identity sa musíme rozhodnúť, aké operácie bude môcť užívateľ vykonávať a k akým zdrojom bude mať prístup. Autorizácia zisťuje, na čo všetko má klient oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. '''Utajenie'''. Počas komunikácie klientskej aplikácie s webovou službou musíme zabezpečiť ochranu prenášaných dát. Z toho dôvodu je nutné kryptovať prenosový kanál medzi klientskou aplikáciou a webovým serverom.&lt;br /&gt;
&lt;br /&gt;
4. '''Integritu'''. Predstavuje ochranu  prenášaných dát pred neoprávneným pozmenením neautorizovanými činiteľmi. Je realizovaná prostredníctvom digitálnych podpisov.&lt;br /&gt;
&lt;br /&gt;
Začneme tým, že sa oboznámime s utajením a integritou komunikácie, aj keď prvým krokom pri vytváraní bezpečnej komunikácie je overenie klienta. Je to z dôvodu, že v kapitole 4 sa oboznámime s princípom certifikátov, ktoré predstavujú jednu z overovacích metód klientov. Autentifikácia klientov prostredníctvom certifikátov je rozobraná v samostatnej kapitole 5.3.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5056</id>
		<title>Zabezpečennie webových aplikácií</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5056"/>
		<updated>2010-06-11T11:20:36Z</updated>

		<summary type="html">&lt;p&gt;Ian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|3|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečenie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Bezpečnosť webových aplikácií==&lt;br /&gt;
V predchádzajúcej kapitole sme opísali technologické a programové pozadie XML ASP.NET webových služieb. Pri vytváraní  verejných webových služieb predstavuje ich bezpečnosť faktor, ktorým môžeme určovať ich kvalitu. Webové služby komunikujú s klientskymi aplikáciami prostredníctvom XML správ, samy o sebe nezabezpečujú ochranu prenášaných dát. Pokiaľ webová služba poskytuje citlivé informácie, napríklad  bankové webové služby, webové služby zdravotných poisťovní, poprípade webové služby leteckých spoločností a iné, musí byť zabezpečená ochrana prenášaných dát. Musia byť vytvorené mechanizmy na identifikáciu klientov volajúcich webové služby, na ich autorizáciu a mechanizmy na zabezpečenie integrity  a dôvernosti komunikácie.&lt;br /&gt;
&lt;br /&gt;
Táto kapitola sa zaoberá práve autentifikáciou, autorizáciou klientov webových služieb ASP.NET a zabezpečením integrity a dôvernosti komunikácie. Tie predstavujú hlavné úrovne bezpečnosti.&lt;br /&gt;
&lt;br /&gt;
==Úrovne bezpečnosti==&lt;br /&gt;
&lt;br /&gt;
Všeobecne pri webových aplikáciách pri  implementácii bezpečnosti  je  nutné zabezpečiť nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. '''Autentifikáciu'''. To znamená, že najskôr musíme overiť identitu užívateľa, ktorý napríklad  volá niektorú z metód webovej služby.&lt;br /&gt;
&lt;br /&gt;
2. '''Autorizáciu'''.  Na základe jeho identity sa musíme rozhodnúť, aké operácie bude môcť užívateľ vykonávať a k akým zdrojom bude mať prístup. Autorizácia zisťuje, na čo všetko má klient oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. '''Utajenie'''. Počas komunikácie klientskej aplikácie s webovou službou musíme zabezpečiť ochranu prenášaných dát. Z toho dôvodu je nutné kryptovať prenosový kanál medzi klientskou aplikáciou a webovým serverom.&lt;br /&gt;
&lt;br /&gt;
4. '''Integritu'''. Predstavuje ochranu  prenášaných dát pred neoprávneným pozmenením neautorizovanými činiteľmi. Je realizovaná prostredníctvom digitálnych podpisov.&lt;br /&gt;
&lt;br /&gt;
Začneme tým, že sa oboznámime s utajením a integritou komunikácie, aj keď prvým krokom pri vytváraní bezpečnej komunikácie je overenie klienta. Je to z dôvodu, že v kapitole 4 sa oboznámime s princípom certifikátov, ktoré predstavujú jednu z overovacích metód klientov. Autentifikácia klientov prostredníctvom certifikátov je rozobraná v samostatnej kapitole 5.3.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5055</id>
		<title>Zabezpečennie webových aplikácií</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5055"/>
		<updated>2010-06-11T11:19:44Z</updated>

		<summary type="html">&lt;p&gt;Ian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|3|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Bezpečnosť webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Bezpečnosť webových aplikácií==&lt;br /&gt;
V predchádzajúcej kapitole sme opísali technologické a programové pozadie XML ASP.NET webových služieb. Pri vytváraní  verejných webových služieb predstavuje ich bezpečnosť faktor, ktorým môžeme určovať ich kvalitu. Webové služby komunikujú s klientskymi aplikáciami prostredníctvom XML správ, samy o sebe nezabezpečujú ochranu prenášaných dát. Pokiaľ webová služba poskytuje citlivé informácie, napríklad  bankové webové služby, webové služby zdravotných poisťovní, poprípade webové služby leteckých spoločností a iné, musí byť zabezpečená ochrana prenášaných dát. Musia byť vytvorené mechanizmy na identifikáciu klientov volajúcich webové služby, na ich autorizáciu a mechanizmy na zabezpečenie integrity  a dôvernosti komunikácie.&lt;br /&gt;
&lt;br /&gt;
Táto kapitola sa zaoberá práve autentifikáciou, autorizáciou klientov webových služieb ASP.NET a zabezpečením integrity a dôvernosti komunikácie. Tie predstavujú hlavné úrovne bezpečnosti.&lt;br /&gt;
&lt;br /&gt;
==Úrovne bezpečnosti==&lt;br /&gt;
&lt;br /&gt;
Všeobecne pri webových aplikáciách pri  implementácii bezpečnosti  je  nutné zabezpečiť nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. '''Autentifikáciu'''. To znamená, že najskôr musíme overiť identitu užívateľa, ktorý napríklad  volá niektorú z metód webovej služby.&lt;br /&gt;
&lt;br /&gt;
2. '''Autorizáciu'''.  Na základe jeho identity sa musíme rozhodnúť, aké operácie bude môcť užívateľ vykonávať a k akým zdrojom bude mať prístup. Autorizácia zisťuje, na čo všetko má klient oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. '''Utajenie'''. Počas komunikácie klientskej aplikácie s webovou službou musíme zabezpečiť ochranu prenášaných dát. Z toho dôvodu je nutné kryptovať prenosový kanál medzi klientskou aplikáciou a webovým serverom.&lt;br /&gt;
&lt;br /&gt;
4. '''Integritu'''. Predstavuje ochranu  prenášaných dát pred neoprávneným pozmenením neautorizovanými činiteľmi. Je realizovaná prostredníctvom digitálnych podpisov.&lt;br /&gt;
&lt;br /&gt;
Začneme tým, že sa oboznámime s utajením a integritou komunikácie, aj keď prvým krokom pri vytváraní bezpečnej komunikácie je overenie klienta. Je to z dôvodu, že v kapitole 4 sa oboznámime s princípom certifikátov, ktoré predstavujú jednu z overovacích metód klientov. Autentifikácia klientov prostredníctvom certifikátov je rozobraná v samostatnej kapitole 5.3.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5054</id>
		<title>Zabezpečennie webových aplikácií</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Zabezpe%C4%8Dennie_webov%C3%BDch_aplik%C3%A1ci%C3%AD&amp;diff=5054"/>
		<updated>2010-06-11T10:59:37Z</updated>

		<summary type="html">&lt;p&gt;Ian: /*  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|3|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Bezpečnosť webových aplikácií==&lt;br /&gt;
V predchádzajúcej kapitole sme opísali technologické a programové pozadie XML ASP.NET webových služieb. Pri vytváraní  verejných webových služieb predstavuje ich bezpečnosť faktor, ktorým môžeme určovať ich kvalitu. Webové služby komunikujú s klientskymi aplikáciami prostredníctvom XML správ, samy o sebe nezabezpečujú ochranu prenášaných dát. Pokiaľ webová služba poskytuje citlivé informácie, napríklad  bankové webové služby, webové služby zdravotných poisťovní, poprípade webové služby leteckých spoločností a iné, musí byť zabezpečená ochrana prenášaných dát. Musia byť vytvorené mechanizmy na identifikáciu klientov volajúcich webové služby, na ich autorizáciu a mechanizmy na zabezpečenie integrity  a dôvernosti komunikácie.&lt;br /&gt;
&lt;br /&gt;
Táto kapitola sa zaoberá práve autentifikáciou, autorizáciou klientov webových služieb ASP.NET a zabezpečením integrity a dôvernosti komunikácie. Tie predstavujú hlavné úrovne bezpečnosti.&lt;br /&gt;
&lt;br /&gt;
==Úrovne bezpečnosti==&lt;br /&gt;
&lt;br /&gt;
Všeobecne pri webových aplikáciách pri  implementácii bezpečnosti  je  nutné zabezpečiť nasledovné &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
1. '''Autentifikáciu'''. To znamená, že najskôr musíme overiť identitu užívateľa, ktorý napríklad  volá niektorú z metód webovej služby.&lt;br /&gt;
&lt;br /&gt;
2. '''Autorizáciu'''.  Na základe jeho identity sa musíme rozhodnúť, aké operácie bude môcť užívateľ vykonávať a k akým zdrojom bude mať prístup. Autorizácia zisťuje, na čo všetko má klient oprávnenie.&lt;br /&gt;
&lt;br /&gt;
3. '''Utajenie'''. Počas komunikácie klientskej aplikácie s webovou službou musíme zabezpečiť ochranu prenášaných dát. Z toho dôvodu je nutné kryptovať prenosový kanál medzi klientskou aplikáciou a webovým serverom.&lt;br /&gt;
&lt;br /&gt;
4. '''Integritu'''. Predstavuje ochranu  prenášaných dát pred neoprávneným pozmenením neautorizovanými činiteľmi. Je realizovaná prostredníctvom digitálnych podpisov.&lt;br /&gt;
&lt;br /&gt;
Začneme tým, že sa oboznámime s utajením a integritou komunikácie, aj keď prvým krokom pri vytváraní bezpečnej komunikácie je overenie klienta. Je to z dôvodu, že v kapitole 4 sa oboznámime s princípom certifikátov, ktoré predstavujú jednu z overovacích metód klientov. Autentifikácia klientov prostredníctvom certifikátov je rozobraná v samostatnej kapitole 5.3.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5053</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=5053"/>
		<updated>2010-06-11T10:51:10Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* XML ASP.NET webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
==XML ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logického  hierarchického kontajnera, nazývaného menný priestor. Pre viac informácií o platforme .NET Framework odporúčame referenčnú príručku .NET. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Na Obr. 2.1  je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraní XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Základná trieda WebService===&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby je automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService, umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením, sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''' môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvkov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje, že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje, že je v súlade so špecifikáciou WSI Basic Profile 1.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenia sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu klienta s XML ASP.NET webovou službou musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým buderozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi náročný, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva namiesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správy, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, ale aj kvôli zvýšenej bezpečnosti na strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy záleží od špecifikácie protokolu, ktorý má trieda proxy používať pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby  pripojený pomalým sieťovým pripojením.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5052</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=5052"/>
		<updated>2010-06-11T10:45:30Z</updated>

		<summary type="html">&lt;p&gt;Ian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML a webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;  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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
&lt;br /&gt;
* komunikačné protokoly,&lt;br /&gt;
* formáty na popis dát,&lt;br /&gt;
* popisné jazyky,&lt;br /&gt;
* mechanizmy na „objavovanie&amp;quot; XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
&lt;br /&gt;
* Simple Object Access Protocol,&lt;br /&gt;
* Web Service Description Language,&lt;br /&gt;
* Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument má jeden koreňový prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;) '''a telo správy (prvok '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''). Formát SOAP správy je znázornený na obrázku 1.3.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
* RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* literal,&lt;br /&gt;
* SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;10&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* SOAP 1.1,&lt;br /&gt;
* SOAP 1.2.&lt;br /&gt;
&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Envelope&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri obálky sa nachádza nepovinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Header&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''a povinný element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;Body&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. V Tab. 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* názov webovej metódy,&lt;br /&gt;
* počet, typy a poradie parametrov,&lt;br /&gt;
* typ návratovej hodnoty,&lt;br /&gt;
* volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;types&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;portType&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;binding&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' a '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;service&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' definujú protokol. WSDL dokument má jeden koreňový element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;definitions&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;'''. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;message&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;6&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:portType &amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:service&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
 &amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Popis hlavných elementov WSDL dokumentu &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;11&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''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.&lt;br /&gt;
* '''PortType'''. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
* '''Binding.''' Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
* '''Service.''' Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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 &amp;quot;first WSDL&amp;quot; (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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; 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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;12&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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é. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Ďalším problémom, ktorý je výrazný, je to, že nikto nezaručuje dôveryhodnosť poskytovateľov služieb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;8&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;5&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
&lt;br /&gt;
* Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
* 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.)&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
&lt;br /&gt;
* Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, prípadne použije klient UDDI.&lt;br /&gt;
* Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
* Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
* Tá spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
* Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Autoriz%C3%A1cia_webov%C3%BDch_slu%C5%BEieb&amp;diff=4606</id>
		<title>Autorizácia webových služieb</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Autoriz%C3%A1cia_webov%C3%BDch_slu%C5%BEieb&amp;diff=4606"/>
		<updated>2010-05-25T18:37:38Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Autorizačné pravidlá */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|6|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
==Autorizácia==&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcich kapitolách sme si vysvetlili metódy, akými môžeme overiť identitu užívateľa volajúceho webovú službu. Podrobnejšie sme si rozobrali tie, ktoré sú v praxi úspešne využívané v rôznych bezpečnostných scenároch. Získanie skutočnej identity klienta predstavuje len prvý krok, k vytvoreniu bezpečnej komunikácie. Potrebujeme vedieť, aké má klient oprávnenie v rámci našej webovej služby. Aké webové metódy webovej služby môže volať, k akým zdrojom, či už k databázam alebo súborom smie pristupovať. Proces, v ktorom zisťujeme oprávnenia sa nazýva autorizácia.&lt;br /&gt;
&lt;br /&gt;
:V tejto kapitole si rozoberieme spôsoby autorizácia s využitím konfiguračného súboru '''web.confing''' webovej služby.&lt;br /&gt;
&lt;br /&gt;
===Autorizácia URL===&lt;br /&gt;
&lt;br /&gt;
Ako sme už spomenuli  autorizačné pravidlá definujeme v konfiguračnom súbore webovej služby .Tie sú vykonávané prostredníctvom špeciálneho HTTP modulu '''UrlAuthorization-Module'''. Princíp fungovania tohto module spočíva v analýze a kontrole každého požiadavku užívateľa, tým je zabezpečená ochrana neautorizovaného prístupu. Tento model autorizácie kontroluje bezpečnostný kontext a URL zdroja, ku ktorému žiada užívateľ prístup.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;13&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Autorizačné pravidlá===&lt;br /&gt;
&lt;br /&gt;
V tejto podkapitole si vysvetlíme samotný spôsob realizácie autorizácie v konfiguračnou súbore webovej služby. Autorizačné pravidlá sa definujú v súbore web.confing prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;authorization&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; '''pomocou, ktorého  môžeme vytvoriť  dva typy autorizačných pravidiel &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pravidlo  zakazujúce prístup, prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;deny&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;.'''&lt;br /&gt;
* Pravidlo povoľujúce prístup, prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;allows&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;.'''&lt;br /&gt;
Oba typy autorizačných pravidiel môžeme aplikovať &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* Jedného užívateľa použitím kľúčového slova '''user'''.&lt;br /&gt;
* Na skupinu užívateľov (rolí) použitím kľúčového slova '''roles'''.&lt;br /&gt;
* Alebo môžeme použiť kľúčové slovo '''verbs''', a prostredníctvom neho určiť konkrétne typy  HTTP požiadaviek, na ktoré sa bude pravidlo aplikovať.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 6.1''' Konfigurácia autorizačných pravidiel v súbore web.config&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;authorization&amp;gt;&lt;br /&gt;
  &amp;lt;allow users=&amp;quot;Zoznam uzivatelov&amp;quot;&lt;br /&gt;
         roles=&amp;quot;Zoznam roli&amp;quot;&lt;br /&gt;
         verbs=&amp;quot;Typy HTTP poziadaviek&amp;quot;&lt;br /&gt;
         /&amp;gt;&lt;br /&gt;
  &amp;lt;deny users=&amp;quot;Zoznam uzivatelov&amp;quot;&lt;br /&gt;
        roles=&amp;quot;Zoznam roli&amp;quot;&lt;br /&gt;
        verbs=&amp;quot;Typy HTTP poziadaviek&amp;quot;&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
&amp;lt;/authorization&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri definovaný pravidiel môžeme využiť tieto zástupné  znaky &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Znak '''?''', ktorý reprezentuje všetkých anonymných užívateľov.&lt;br /&gt;
* Znak '''&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;''', ktorý reprezentuje všetkých užívateľov.&lt;br /&gt;
&lt;br /&gt;
Proces aplikácie konfiguračných pravidiel je pre webové služby ASP.NET nasledovný. Najskôr sa aplikujú konfiguračné pravidlá z príslušného konfiguračného súboru web.confing a následné sa aplikujú pravidlá zo súboru machine.confing. Autorizačné pravidlá sa aplikujú v tom poradí, v akom sú v konfiguračnom súbore zapísané. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;15&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Prostredníctvom autorizačných pravidiel môže riadiť prístup užívateľov ku konkrétnym adresárom a súborom. Riadení prístup k adresárom sa realizuje umiestením konfiguračného súboru s autorizačnými pravidlami do príslušného adresára. Riadení prístup ku konkrétnym súborom sa realizuje prostredníctvom prvku '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;location&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt;''' , v ktorom konkretizujem cestu k súboru. ( pozri Tab. 6.2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 6.2''' Konfigurácia autorizačných pravidiel pre riadený prístup k súboru&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;location path=&amp;quot;SecrurePage.asmx&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;system.web&amp;gt;&lt;br /&gt;
  &amp;lt;authorization&amp;gt;&lt;br /&gt;
    &amp;lt;deny users=&amp;quot;?&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/authorization&amp;gt;     &lt;br /&gt;
&amp;lt;/system.web&amp;gt;&lt;br /&gt;
&amp;lt;/location&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4605</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4605"/>
		<updated>2010-05-25T18:36:03Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Porovnanie XML webových služieb s technológiou COM a CORBA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML a webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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 systémov, 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].&lt;br /&gt;
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].&lt;br /&gt;
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.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
*komunikačné protokoly,&lt;br /&gt;
*formáty na popis dát,&lt;br /&gt;
*popisné jazyky,&lt;br /&gt;
*mechanizmy na „objavovanie“ XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
*Simple Object Access Protocol,&lt;br /&gt;
*Web Service Description Language,&lt;br /&gt;
*Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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].&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument ma jeden koreňový prvok &amp;lt;Envelope&amp;gt; , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok &amp;lt;Header&amp;gt;) a telo správy (prvok &amp;lt;Body&amp;gt;). Formát SOAP správy je znázornený na obrázku 1.3.1.[10]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP [2]:&lt;br /&gt;
*štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
*RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP &lt;br /&gt;
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.&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako [4] :&lt;br /&gt;
*literal,&lt;br /&gt;
*SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP [10]:&lt;br /&gt;
*SOAP 1.1,&lt;br /&gt;
*SOAP 1.2.&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu &amp;lt;Envelope&amp;gt;. Vo vnútri obálky sa nachádza nepovinný element &amp;lt;Header&amp;gt; a povinný element &amp;lt;Body&amp;gt;. V tabuľke 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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]:&lt;br /&gt;
*názov webovej metódy,&lt;br /&gt;
*počet, typy a poradie parametrov,&lt;br /&gt;
*typ návratovej hodnoty,&lt;br /&gt;
*volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy &amp;lt;types&amp;gt;, &amp;lt;message&amp;gt; a &amp;lt;portType&amp;gt; sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva &amp;lt;binding&amp;gt; a &amp;lt;service&amp;gt; definujú protokol. WSDL dokument má jeden koreňový element &amp;lt;definitions&amp;gt;. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element &amp;lt;message&amp;gt; sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu.[5],[6]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:portType &amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:service&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
 &amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opis hlavných elementov WSDL dokumentu [11]:&lt;br /&gt;
*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.&lt;br /&gt;
*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.&lt;br /&gt;
*PortType. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
*Binding. Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
*Service. Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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 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]&lt;br /&gt;
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ť. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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]&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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. &lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
*Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
*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)&lt;br /&gt;
*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. &lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
*Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, poprípadne použije klient UDDI.&lt;br /&gt;
*Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
*Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
*Ta spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
*Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_14.png&amp;diff=4604</id>
		<title>Súbor:Dp 2010 jm 14.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_14.png&amp;diff=4604"/>
		<updated>2010-05-25T15:39:58Z</updated>

		<summary type="html">&lt;p&gt;Ian: bola nahraná nová verzia „Súbor:Dp 2010 jm 14.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_14.png&amp;diff=4603</id>
		<title>Súbor:Dp 2010 jm 14.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_14.png&amp;diff=4603"/>
		<updated>2010-05-25T15:39:21Z</updated>

		<summary type="html">&lt;p&gt;Ian: bola nahraná nová verzia „Súbor:Dp 2010 jm 14.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_11.png&amp;diff=4602</id>
		<title>Súbor:Dp 2010 jm 11.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Dp_2010_jm_11.png&amp;diff=4602"/>
		<updated>2010-05-24T19:07:32Z</updated>

		<summary type="html">&lt;p&gt;Ian: bola nahraná nová verzia „Súbor:Dp 2010 jm 11.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4379</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4379"/>
		<updated>2010-05-18T20:14:22Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Atribút WebMethod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
==XML ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logickej a hierarchického kontajnera, nazývaného menný priestor. Pre viac informácii o platforme .NET Framework odporúčame referenčnú príručku .NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Na Obr. 1.2 je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Obr. Chyba! V dokumente nie je žiaden text v zadanom štýle..3 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraný XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Základná trieda WebService===&lt;br /&gt;
&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''', môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvokov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje že je v súlade so špecifikáciou WSI Basic Profile 1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod, musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaní XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenie sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikácia klienta s XML ASP.NET webovou službou, musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým bude rozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi obtiažny, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva miesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správa, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, aj kvôli zvýšenej bezpečnosti strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL (Dynamic-link library) knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy, záleží od špecifikácie protokolu, ktorý má trieda proxy používať, pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework, umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby je pripojený pomalým sieťovaním pripojením. Týmto spôsobom volania webových metód sa v práci nebudeme zaoberať.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4378</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4378"/>
		<updated>2010-05-18T20:12:58Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Základná trieda WebService */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
==XML ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logickej a hierarchického kontajnera, nazývaného menný priestor. Pre viac informácii o platforme .NET Framework odporúčame referenčnú príručku .NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Na Obr. 1.2 je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Obr. Chyba! V dokumente nie je žiaden text v zadanom štýle..3 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraný XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Základná trieda WebService===&lt;br /&gt;
&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorená trieda webovej služby automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''', môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvokov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje že je v súlade so špecifikáciou WSI Basic Profile 1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod, musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaný XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenie sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť, môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikácia klienta s XML ASP.NET webovou službou, musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým bude rozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi obtiažny, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva miesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správa, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, aj kvôli zvýšenej bezpečnosti strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL (Dynamic-link library) knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy, záleží od špecifikácie protokolu, ktorý má trieda proxy používať, pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework, umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby je pripojený pomalým sieťovaním pripojením. Týmto spôsobom volania webových metód sa v práci nebudeme zaoberať.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4377</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4377"/>
		<updated>2010-05-18T20:12:19Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* XML ASP.NET webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
==XML ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logickej a hierarchického kontajnera, nazývaného menný priestor. Pre viac informácii o platforme .NET Framework odporúčame referenčnú príručku .NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Na Obr. 1.2 je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Obr. Chyba! V dokumente nie je žiaden text v zadanom štýle..3 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestorov je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraný XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Základná trieda WebService===&lt;br /&gt;
&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorené trieda webovej služby automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''', môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvokov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje že je v súlade so špecifikáciou WSI Basic Profile 1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod, musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaný XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenie sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť, môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikácia klienta s XML ASP.NET webovou službou, musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým bude rozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi obtiažny, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva miesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správa, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, aj kvôli zvýšenej bezpečnosti strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL (Dynamic-link library) knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy, záleží od špecifikácie protokolu, ktorý má trieda proxy používať, pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework, umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby je pripojený pomalým sieťovaním pripojením. Týmto spôsobom volania webových metód sa v práci nebudeme zaoberať.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4376</id>
		<title>XML ASP.NET webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=XML_ASP.NET_webov%C3%A9_slu%C5%BEby&amp;diff=4376"/>
		<updated>2010-05-18T20:11:48Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* XML ASP.NET webové služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Praca_uvod|2|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
= =&lt;br /&gt;
==XML ASP.NET webové služby==&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej kapitole sme si vysvetlili princípy XML webových služieb, popísali štandardy na ktorých sú vystavané, ich výhody aj nevýhody a spôsob, akým komunikujú webové služby s klientskymi aplikáciami.&lt;br /&gt;
&lt;br /&gt;
Táto práca sa zaoberá bezpečnosťou XML ASP.NET  webových služieb.  Technológia ASP.NET je integrovaná s programovou platformou .NET Framework. .NET Framework predstavuje programovú platformu, ktorá je rozčlenená do kolekcie funkčných častí, zahŕňajúcich viac ako 7000 tried, štruktúr, rozhraní a ďalších typov. Každá zo skupiny tried v .NET Framework je zoskupená do  logickej a hierarchického kontajnera, nazývaného menný priestor. Pre viac informácii o platforme .NET Framework odporúčame referenčnú príručku .NET &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;31&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;. Na Obr. 1.2 je znázornená štruktúra programovej platformy .NET Framework 3.5.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_3.png|framed|center|Obr. 2.1 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Obr. Chyba! V dokumente nie je žiaden text v zadanom štýle..3 .NET Framework 3.5 &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASP.NET implementuje XML webové služby ako súbory s príponou .asmx. Kód webovej služby môže byť umiestnený priamo do súboru .asmx alebo do triedy v súbore s kódom na pozadí. Táto práca  predpokladá určitú znalosť programovej platformy .NET Framework a technológie ASP.NET, a preto sa nebudeme samotnou programovou platformou v práci zaoberať.&lt;br /&gt;
&lt;br /&gt;
Pri vytváraní XML ASP.NET webových služieb pod platformou .NET Framework je nutné sa najskôr oboznámiť s niektorými mennými priestormi .NET Framework, ktoré umožňujú komunikovať s technológiou XML webových služieb. Popis jednotlivých menných priestoroch je v Tab. 2.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.1'''  Menné priestory .NET Framework zamerané na XML ASP.NET webové služby  &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje základné typy nutné pri vytváraný XML webových služieb.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Configuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú konfiguráciu správania sa webových služieb ASP.NET&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú programátorsky komunikovať s dokumentom WSDL popisujúci danú XML ASP.NET webovú službu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Obsahuje typy, ktoré umožňujú klientovi webovej služby programátorsky zistiť, aké webové služby sú nainštalované na danom servery.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|System.Web.Service.Discovery&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Definuje typy, ktoré reprezentujú základ rôznych protokolov XML webových služieb , napríklad HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Všetky menné priestory zamerané na XML ASP.NET webové služby sú obsiahnuté v assembly '''System.Web.Services.dll'''.&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Najdôležitejší menný priestor pri vytváraný XML ASP.NET webových služieb je '''System.Web.Services'''. Popis členov tohto menného priestoru je v Tab. 2.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.2'''  Popis menného priestoru System.Web.Services  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Menný priestor'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebMethodAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pokiaľ je metóda alebo vlastnosť triedy webovej služby špecifikovaná pomocou  tohoto atribútu, znamená to, že člena bude možné volať cez HTTP kanál a serializovať ako XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebService&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Predstavuje základnú, nepovinnú triedu XML ASP.NET webových služieb budovaných pomocou .NET. Pokiaľ je trieda XML webovej služby odvodená z tejto základnej triedy, bude mat schopnosť si uchovávať stavové informácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto atribútu sa dajú pridávať informácie do webovej služby, ako napríklad reťazec popisujúci jej funkcionalitu a podkladový priestor XML.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WebServiceBindingAttribute&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento atribút deklaruje protokol viazania, ktorý XML ASP.NET webová služba implementuje.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|WsiProfiles&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popisuje špecifikáciu interoperability webovej služby (WSI).&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Základná trieda WebService===&lt;br /&gt;
&lt;br /&gt;
Pokiaľ vytvárame XML ASP.NET webovú službu s využitím IDE Visual Studio, novovytvorené trieda webovej služby automaticky odvodená zo základnej triedy WebService. (pozri Tab. 2.3). To, že trieda webovej služby dedí zo základnej triedy WebService umožňuje prístup ku všetkým zabudovaným objektom ASP.NET, napríklad Application, Session atd. Vlastnosti základnej triedy WebService, ktoré získa trieda webovej služby dedením sú v Tab. 2.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.3 '''  Vytvorenie triedy webovej služby dedením zo základnej triedy WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
WebServiceClass: System.Web.Services&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.4'''  Vlastnosti základnej triedy WebService  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Vlastnosť'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Application&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpApplicationState, ktorá poskytuje prístup k globálnemu stavu webovej aplikácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Context&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k HttpContext, ktorý zapúzdruje všetky špecifiká http kontextu pre aktuálnu požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Server&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Poskytuje prístup k objektu HttpServerUtility aktuálneho požiadavku.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Session&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Inštancia triedy HttpSessionState, ktorá poskytuje prístup k aktuálnemu stavu relácie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|User&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekt IPrincipal, ktorý umožňuje preskúmať oprávnenia a rolu užívateľa, ktorý bol autentifikovaný.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Atribúty triedy XML ASP.NET webovej služby===&lt;br /&gt;
&lt;br /&gt;
Každá trieda XML ASP.NET webovej služby môže byť kvalifikovaná pomocou atribútov &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* WebService,&lt;br /&gt;
* WebServiceBinding.&lt;br /&gt;
&lt;br /&gt;
====Atribút WebService====&lt;br /&gt;
&lt;br /&gt;
Atribút WebService podporuje niekoľko pomenovaných vlastností, konkrétne tieto &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Namespace,&lt;br /&gt;
* Description,&lt;br /&gt;
* Name.&lt;br /&gt;
Prostredníctvom vlastnosti '''Namespace''', môžeme vytvoriť menný XML priestor, ktorý sa bude používať vo vnútri WSDL dokumentu (pozri Tab. 2.6).  Vlastnosť '''Description''' popisuje webovú službu prostredníctvom textového reťazca. Prostredníctvom vlastnosti '''Name''' môžeme oddeliť názov triedy webovej služby od názvu, pod ktorým bude webová služba sprístupnená z Internetu alebo LAN. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Tab. 2.5'''  Vlastnosti atribútu WebService&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
[WebService(Description=&amp;quot;Secure web service&amp;quot;,&lt;br /&gt;
Namespace = &amp;quot;http://DiplomaWork.sk/&amp;quot;,&lt;br /&gt;
Name= &amp;quot;SecureWebService&amp;quot;)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.6'''  Menný priestor WSDL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:documentation xmlns:wsdl=&amp;quot;http://schemas.xmlsoap.org/wsdl/&amp;quot;&amp;gt;Secure web service&amp;lt;/wsdl:documentation&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebServiceBinding====&lt;br /&gt;
&lt;br /&gt;
Atribút '''WebServiceBinding''' špecifikuje, či je XML ASP.NET webová služba v súlade s Web Services Interoperability (WSI) Basic Profile 1.1. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; Tým, že je trieda  webovej služby kvalifikovaná atribútom WebServiceBinding, prehlasuje, že  je v súlade so špecifikáciou WSI Basic Profile 1.1.  Špecifikácia WSI Basic Profile odstraňuje nejednoznačnú interpretáciu prvokov WSDL dokumentu webovými servermi, napríklad IIS, Apache a architektúrami .NET a J2EE.  Prostredníctvom vlastnosti '''ConformsTo''' atribútu WebServiceBinding môžeme nastaviť, či je daná webová služba v súlade so špecifikáciou WSI. Vlastnosť ConformsTo môže nadobúdať tieto hodnoty &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* None, webová služba neprehlasuje že je v súlade s WSI.&lt;br /&gt;
* BasicProfile1_1, webová služba prehlasuje že je v súlade so špecifikáciou WSI Basic Profile 1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.7'''  Atribút WebServiceBinding&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=csharp&amp;gt;&lt;br /&gt;
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;
public class WebServiceClas : System.Web.Services.WebService&lt;br /&gt;
{...}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Atribút WebMethod====&lt;br /&gt;
&lt;br /&gt;
Atribút WebMethod, musí byť aplikovaný na každú metódu triedy XML ASP.NET webovej služby, ktorá má byť dostupná cez HTTP kanál a serializovaná ako XML. Vlastnosti atribútu WebMethod sú v Tab. 2.8.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.8'''  Vlastnosti atribútu WebMethod  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Description&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Popis webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|MessageName&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Alias mena metódy, ktorý je používaný v prípade, že máme preťažované metódy, alebo pokiaľ chceme sprístupniť webovú metódu pod iným názvom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CacheDuration&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Doba, na ktorú je uložená odpoveď webovej metódy do cache. Štandardne je hodnota cache nastavená na nula.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EnableSession&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Určuje, či daná webová metóda môže pristupovať k informácia  v kolekcií Session. Umožňuje vytvoriť reláciu medzi webovou službou a klientom.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|TransactionOption&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Nastaví, či daná webové metóda podporuje transakcie. Nakoľko webové služby sú bezstavové, môžu sa zúčastniť iba ako koreňový objekt transakcie.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BufferResponse&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Táto vlastnosť umožňuje riadiť, kedy budú dáta vrátené z webovej služby zaslané na klienta. Štandardne je vlastnosť BufferResponse nastavená na true. To znamená, že všetky výsledky sú pre zaslaním na klienta serializované. Pokiaľ je BufferResponse nastavená na false, výsledky sú serializované a posielané na klienta po častiach. Nastavenie vlastnosti BufferResponse na false ma zmysel, len vtedy ak webová služba vracia veľké množstvo dát.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pri používaný XML ASP.NET webových služieb existujú určité obmedzenia ohľadom vstupných parametrov webových metód a ich návratových hodnôt. Tieto obmedzenie sú z toho dôvodu, že webové služby sú vybudované na štandardoch pre výmenu dát, a tie sú založené na jazyku XML. Webové metódy pracujú so sadou dátových typov, ktoré sú rozpoznávané štandardom schémy XML. Dátové typy webových metód XML ASP.NET webových služieb sú v Tab. 2.9. Toto obmedzenie je logické, pretože iné programovacie jazyky nemajú žiadne mechanizmy na rozpoznávanie napríklad komplexných tried, neboli by schopné interpretovať takéto dátové typy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.9'''  Dátové typy pre parametre a návratové hodnoty webových metód  &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Dátový typ'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Základné dátové typy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Jednoduché dátové typy ako int, long, float, double, bool, string, char, byte a iné.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Polia&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Webové služby dokážu pracovať s akýmkoľvek polom podporovaného typu, prípadne kolekciami .NET ako HashTable, prípadne binárnymi poliami.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastné objekty&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Akýkoľvek vlastný objekt môže byť, môže byť webovou službou poslaní na klienta. Prenášajú sa iba verejné členy triedy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Enumerations&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|XmlNode&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Objekty založené na System.XmlNode reprezentujúce časti XML dokumentu.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|DataSet a DataTable&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tieto objekty patria medzi dátové objekty ADO.NET a môžu byť použité pre posielanie informácií z relačnej databázy. Tieto objekty sú XML ASP.NET webovou službou automaticky skonvertované na XML.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Trieda proxy===&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikácia klienta s XML ASP.NET webovou službou, musí byť klient schopný vytvárať, posielať a dostávať SOAP správy založené na XML, ktorým bude rozumieť. Principiálne jednoduchý proces, ale v praxi  veľmi obtiažny, nakoľko by sme museli dookola  písať rovnaký kód infraštruktúry nižšej úrovne. &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platforma  .NET  to rieši v podobe '''triedy proxy''', ktorá to vykonáva miesto klientskej aplikácie. Trieda proxy zabezpečuje správne vytváranie formátu SOAP správa, riadi prenos správ pomocou HTTP po sieti, tak isto konvertuje výsledok prijatej správy do správneho formátu.&lt;br /&gt;
&lt;br /&gt;
Na vytvorenie triedy proxy v .NET  existujú  dva spôsoby &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* Pomocou utility wsdl.exe.&lt;br /&gt;
* Pomocou webovej referencie v IDE Visual Studio.&lt;br /&gt;
Generovanie triedy proxy prostredníctvom utility wsdl.exe''' '''je flexibilnejšie, nakoľko nám umožňuje vygenerovaný kód danej triedy modifikovať.&lt;br /&gt;
&lt;br /&gt;
Názov utility wsdl.exe je odvodený od štandardu Web Service Description Language pre popis  XML webových služieb. Tento nástroj vygeneruje z XML webovej služby  zdrojový kód triedy proxy vo zvolenom jazyku.&lt;br /&gt;
&lt;br /&gt;
Utilita wsdl.exe podporuje veľké množstvo prepínačov, najbežnejšie argumenty sú v Tab. 2.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.10'''  Argumenty utility wsdl.exe &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;1&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Argument'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Význam'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/appsettingurlkey&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Trieda proxy bude nakonfigurovaná tak, aby načítavala URL zo súboru .&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;config na klientskej strane.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/language&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Pomocou tohto argumentu špecifikujeme jazyk pre vygenerovanú triedu (C&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;, VB.NET, JS, VJS).&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/namespace&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Argument špecifikuje menný priestor pre vygenerovanú triedu proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/out&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Špecifikuje súbor do ktorého sa uloží vygenerovaný kód proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/protocol&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Tento argument špecifikuje protokol, ktorý sa má použiť vo vnútri triedy proxy. Prednastavení protokolom je SOAP. Ďalšie podporované protokoly sú HTTP POST a HTTP GET.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|/serverInterface&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Na základe WSDL dokumentu sa vygeneruje kostra webovej služby na strane servera.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pre korektnú komunikáciu medzi webovou službou a klientmi, aj kvôli zvýšenej bezpečnosti strane prevádzkovateľa webovej služby sa využíva implementácia triedy proxy prostredníctvom DLL (Dynamic-link library) knižnice u klienta.&lt;br /&gt;
&lt;br /&gt;
====Popis kódu  triedy proxy====&lt;br /&gt;
&lt;br /&gt;
Každá trieda proxy je vytvorená odvodením z triedy :&lt;br /&gt;
&lt;br /&gt;
* '''System.Web.Services.Protocols.SoapHttpClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpGetClientProtocol,'''&lt;br /&gt;
* '''System.Web.Services.Protocols.HttpPostClientProtocol.'''&lt;br /&gt;
Konkrétny typ použitej triedy, záleží od špecifikácie protokolu, ktorý má trieda proxy používať, pri generovaní  prostredníctvom utility wsdl.exe.&lt;br /&gt;
&lt;br /&gt;
Vytvorenie triedy proxy odvodením z príslušnej triedy .NET Framework, umožňuje triede proxy korektne formátovať a konvertovať správy. Dôležité  zdedené členy triedy proxy sú v Tab. 2.11.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 2.11'''  Popis členov triedy proxy &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;7&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Člen triedy proxy'''&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|'''Popis'''&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|BeginInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|CancelAsync()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda preruší asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|EndInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda ukončí asynchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|AsynInvoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca asynchrónne volanie webovej metódy, doporučená metóda.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Invoke()&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda zahajujúca synchrónne volanie webovej metódy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Proxy&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie a získanie informácie proxy.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Timeout&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Metóda umožňujúca nastaviť dobu čakanie klientskej aplikácie na odpoveď od webovej služby v milisekundách.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Url&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžia na nastavenie alebo získanie URL ASP.NET webovej služby.&lt;br /&gt;
|-&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|UserAgent&lt;br /&gt;
|align = &amp;quot;justify&amp;quot;|Vlastnosť slúžiaca na nastavenie hlavičky agenta užívateľa, ktorá je odosielaná s každou SOAP požiadavkou, slúži na identifikáciu klienta.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Asynchrónne volanie XML ASP.NET webových služieb umožňuje klientskej aplikácii pokračovať v činnosti, zatiaľ čo čaká na odpoveď od webovej služby. Asynchrónne volanie webovej služby má zmysel použiť, pokiaľ je server webovej služby je pripojený pomalým sieťovaním pripojením. Týmto spôsobom volania webových metód sa v práci nebudeme zaoberať.&lt;br /&gt;
&lt;br /&gt;
Komunikácia klientskej aplikácie s využitím triedy proxy je znázornená na Obr. 2.2.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_4.png|framed|center|Obr. 2.2 Komunikácia klienta s webovou službou prostredníctvom triedy proxy]]&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4375</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4375"/>
		<updated>2010-05-18T20:11:03Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Životný cyklus webovej služby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML a webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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].&lt;br /&gt;
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].&lt;br /&gt;
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.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
*komunikačné protokoly,&lt;br /&gt;
*formáty na popis dát,&lt;br /&gt;
*popisné jazyky,&lt;br /&gt;
*mechanizmy na „objavovanie“ XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
*Simple Object Access Protocol,&lt;br /&gt;
*Web Service Description Language,&lt;br /&gt;
*Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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].&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument ma jeden koreňový prvok &amp;lt;Envelope&amp;gt; , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok &amp;lt;Header&amp;gt;) a telo správy (prvok &amp;lt;Body&amp;gt;). Formát SOAP správy je znázornený na obrázku 1.3.1.[10]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP [2]:&lt;br /&gt;
*štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
*RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP &lt;br /&gt;
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.&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako [4] :&lt;br /&gt;
*literal,&lt;br /&gt;
*SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP [10]:&lt;br /&gt;
*SOAP 1.1,&lt;br /&gt;
*SOAP 1.2.&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu &amp;lt;Envelope&amp;gt;. Vo vnútri obálky sa nachádza nepovinný element &amp;lt;Header&amp;gt; a povinný element &amp;lt;Body&amp;gt;. V tabuľke 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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]:&lt;br /&gt;
*názov webovej metódy,&lt;br /&gt;
*počet, typy a poradie parametrov,&lt;br /&gt;
*typ návratovej hodnoty,&lt;br /&gt;
*volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy &amp;lt;types&amp;gt;, &amp;lt;message&amp;gt; a &amp;lt;portType&amp;gt; sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva &amp;lt;binding&amp;gt; a &amp;lt;service&amp;gt; definujú protokol. WSDL dokument má jeden koreňový element &amp;lt;definitions&amp;gt;. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element &amp;lt;message&amp;gt; sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu.[5],[6]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:portType &amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:service&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
 &amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opis hlavných elementov WSDL dokumentu [11]:&lt;br /&gt;
*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.&lt;br /&gt;
*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.&lt;br /&gt;
*PortType. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
*Binding. Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
*Service. Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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 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]&lt;br /&gt;
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ť. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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]&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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. &lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
*Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
*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)&lt;br /&gt;
*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. &lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
*Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, poprípadne použije klient UDDI.&lt;br /&gt;
*Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
*Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
*Ta spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
*Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4374</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4374"/>
		<updated>2010-05-18T20:10:30Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* DISCO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML a webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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].&lt;br /&gt;
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].&lt;br /&gt;
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.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
*komunikačné protokoly,&lt;br /&gt;
*formáty na popis dát,&lt;br /&gt;
*popisné jazyky,&lt;br /&gt;
*mechanizmy na „objavovanie“ XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
*Simple Object Access Protocol,&lt;br /&gt;
*Web Service Description Language,&lt;br /&gt;
*Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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].&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument ma jeden koreňový prvok &amp;lt;Envelope&amp;gt; , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok &amp;lt;Header&amp;gt;) a telo správy (prvok &amp;lt;Body&amp;gt;). Formát SOAP správy je znázornený na obrázku 1.3.1.[10]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP [2]:&lt;br /&gt;
*štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
*RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP &lt;br /&gt;
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.&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako [4] :&lt;br /&gt;
*literal,&lt;br /&gt;
*SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP [10]:&lt;br /&gt;
*SOAP 1.1,&lt;br /&gt;
*SOAP 1.2.&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu &amp;lt;Envelope&amp;gt;. Vo vnútri obálky sa nachádza nepovinný element &amp;lt;Header&amp;gt; a povinný element &amp;lt;Body&amp;gt;. V tabuľke 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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]:&lt;br /&gt;
*názov webovej metódy,&lt;br /&gt;
*počet, typy a poradie parametrov,&lt;br /&gt;
*typ návratovej hodnoty,&lt;br /&gt;
*volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy &amp;lt;types&amp;gt;, &amp;lt;message&amp;gt; a &amp;lt;portType&amp;gt; sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva &amp;lt;binding&amp;gt; a &amp;lt;service&amp;gt; definujú protokol. WSDL dokument má jeden koreňový element &amp;lt;definitions&amp;gt;. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element &amp;lt;message&amp;gt; sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu.[5],[6]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:portType &amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:service&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
 &amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opis hlavných elementov WSDL dokumentu [11]:&lt;br /&gt;
*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.&lt;br /&gt;
*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.&lt;br /&gt;
*PortType. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
*Binding. Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
*Service. Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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 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]&lt;br /&gt;
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ť. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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]&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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. &lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
*Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
*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)&lt;br /&gt;
*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. &lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
*Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, poprípadne použije klient UDDI.&lt;br /&gt;
*Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
*Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
*Ta spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
*Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4373</id>
		<title>Návrh a implementácia bezpečnostnej technológie pre webové služby</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=N%C3%A1vrh_a_implement%C3%A1cia_bezpe%C4%8Dnostnej_technol%C3%B3gie_pre_webov%C3%A9_slu%C5%BEby&amp;diff=4373"/>
		<updated>2010-05-18T20:09:53Z</updated>

		<summary type="html">&lt;p&gt;Ian: /* Štandardy XML webových služieb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študentské práce]][[Kategória:Diplomové práce]][[Kategória:Informatika]][[Kategória:Webové služby]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Ján Minárik|&lt;br /&gt;
Ing. Tomáš Páleník|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|1|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{Abstrakt&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
|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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Úvod'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=XML a webové služby=&lt;br /&gt;
==Porovnanie XML webových služieb s technológiou COM a CORBA==&lt;br /&gt;
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.&lt;br /&gt;
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].&lt;br /&gt;
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].&lt;br /&gt;
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.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.1'''  Porovnanie jednotlivých distribuovaných technológii &amp;lt;nowiki&amp;gt;[4&amp;lt;/nowiki&amp;gt;&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
!CORBA&lt;br /&gt;
!DCOM&lt;br /&gt;
!Webová služba&lt;br /&gt;
|-&lt;br /&gt;
!Mechanizmus vzdialeného volania&amp;lt;br&amp;gt;funkcie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IIOP&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|DCE-RPC&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|HTTP&lt;br /&gt;
|-&lt;br /&gt;
!Kódovanie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|CDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|NDR&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|XML&lt;br /&gt;
|-&lt;br /&gt;
!Popis rozhrania&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|IDL&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|WSDL&lt;br /&gt;
|-&lt;br /&gt;
!Sprístupnenie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Naming service&amp;lt;br&amp;gt;Tranding service&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Register&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|UDDI&lt;br /&gt;
|-&lt;br /&gt;
!Prívetivosť voči firewallu&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|-&lt;br /&gt;
!Zložitosť protokolov&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Vysoká&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nízka&lt;br /&gt;
|-&lt;br /&gt;
!Použitie medzi platformami&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Čiastočná&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Nie&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Áno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Štandardy XML webových služieb==&lt;br /&gt;
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é :&lt;br /&gt;
*komunikačné protokoly,&lt;br /&gt;
*formáty na popis dát,&lt;br /&gt;
*popisné jazyky,&lt;br /&gt;
*mechanizmy na „objavovanie“ XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
Pri budovaní XML webových služieb sa využívajú tieto štandardy:&lt;br /&gt;
*Simple Object Access Protocol,&lt;br /&gt;
*Web Service Description Language,&lt;br /&gt;
*Hypertext Transfer Protocol.&lt;br /&gt;
V nasledujúcej podkapitole sa budeme venovať práve štandardom XML webových služieb.&lt;br /&gt;
&lt;br /&gt;
==Simple Object Access Protocol==&lt;br /&gt;
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].&lt;br /&gt;
Každá SOAP správa predstavuje XML dokument. Tento XML dokument ma jeden koreňový prvok &amp;lt;Envelope&amp;gt; , ktorý slúži ako obálka SOAP správy. Zvyšok správy je vo vnútri obálky, ktorá obsahuje hlavičku (prvok &amp;lt;Header&amp;gt;) a telo správy (prvok &amp;lt;Body&amp;gt;). Formát SOAP správy je znázornený na obrázku 1.3.1.[10]&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_1.png|framed|center|Obr. 1.1 SOAP správa &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;3&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Existujú dva štýly SOAP [2]:&lt;br /&gt;
*štýl dokumentu SOAP (document-style SOAP),&lt;br /&gt;
*RPC štýl SOAP.&lt;br /&gt;
RPC štýl SOAP je využívaný pri volaní vzdialených objektov. Štýl dokumentu SOAP &lt;br /&gt;
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.&lt;br /&gt;
SOAP dáta môžu byť kódované dvoma spôsobmi, ako [4] :&lt;br /&gt;
*literal,&lt;br /&gt;
*SOAP sekcia 5 (SOAP section 5).&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
V súčasnosti existujú dve verzie SOAP [10]:&lt;br /&gt;
*SOAP 1.1,&lt;br /&gt;
*SOAP 1.2.&lt;br /&gt;
===Štruktúra Simple Object Access Protocol===&lt;br /&gt;
&lt;br /&gt;
Každá SOAP správa je uzatvorená do koreňového elementu &amp;lt;Envelope&amp;gt;. Vo vnútri obálky sa nachádza nepovinný element &amp;lt;Header&amp;gt; a povinný element &amp;lt;Body&amp;gt;. V tabuľke 1.2 je znázornená základná štruktúra SOAP správy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.2''' Základná štruktúra SOAP správ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;
     &amp;lt;soap:Body&amp;gt;&lt;br /&gt;
     &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;
 &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Web Service Description Language==&lt;br /&gt;
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]:&lt;br /&gt;
*názov webovej metódy,&lt;br /&gt;
*počet, typy a poradie parametrov,&lt;br /&gt;
*typ návratovej hodnoty,&lt;br /&gt;
*volajúce konvencie HTTP GET, HTTP POST a SOAP.&lt;br /&gt;
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.&lt;br /&gt;
===Základná štruktúra Web Service Description Language===&lt;br /&gt;
WSDL dokument je tvorený z piatich hlavných elementov, ktoré sa navzájom kombinujú  a popisujú XML webovú službu. Prvé tri elementy &amp;lt;types&amp;gt;, &amp;lt;message&amp;gt; a &amp;lt;portType&amp;gt; sú abstraktné. Vzájomne sa kombinujú  a definujú rozhranie XML webovej služby. Posledné dva &amp;lt;binding&amp;gt; a &amp;lt;service&amp;gt; definujú protokol. WSDL dokument má jeden koreňový element &amp;lt;definitions&amp;gt;. Vo vnútri koreňového elementu sa nachádza päť hlavných elementov, pričom element &amp;lt;message&amp;gt; sa môže vyskytnúť viackrát. V Tab. 1.3 je uvedená základná štruktúra WSDL dokumentu.[5],[6]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
'''Tab. 1.3''' Štruktúra WSDL dokumentu&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;wsdl:definitions xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/wsdl/soap/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:types&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:message&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:portType &amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:portType&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:binding&amp;gt;&lt;br /&gt;
    &amp;lt;wsdl:service&amp;gt;&lt;br /&gt;
    &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;
 &amp;lt;/wsdl:definitions&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opis hlavných elementov WSDL dokumentu [11]:&lt;br /&gt;
*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.&lt;br /&gt;
*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.&lt;br /&gt;
*PortType. Táto sekcia zoskupuje informácie do dvojice vstupných a výstupných správ. Každá dvojica reprezentuje metódu.&lt;br /&gt;
*Binding. Táto sekcia poskytuje informácie o transportných protokoloch podporovaných XML webovou službou.&lt;br /&gt;
*Service. Táto sekcia poskytuje koncové body (URI adresy) webovej služby.&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===Universal Description Discovery and Integration===&lt;br /&gt;
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 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]&lt;br /&gt;
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ť. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===WSIL===&lt;br /&gt;
Š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]&lt;br /&gt;
&lt;br /&gt;
===DISCO===&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
==Výhody a nevýhody webových služieb==&lt;br /&gt;
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. &lt;br /&gt;
Medzi nesporné výhody webových služieb  patrí:&lt;br /&gt;
*Jednoduchosť a podpora  pre širokú škálu platforiem.&lt;br /&gt;
*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)&lt;br /&gt;
*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. &lt;br /&gt;
*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.&lt;br /&gt;
&lt;br /&gt;
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ť.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Životný cyklus webovej služby==&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:dp_2010_jm_2.png|framed|center|Obr. 1.2 Komunikácia XML webová služba a klientska aplikácia]]&lt;br /&gt;
&lt;br /&gt;
Princíp komunikácie klientskej aplikácie a XML webovej služby:&lt;br /&gt;
*Klientska aplikácia  sa pripojí na  XML webovú službu priamo cez URL adresu, poprípadne použije klient UDDI.&lt;br /&gt;
*Klientska aplikácia získa WSDL dokument, ktorý popisuje spôsob komunikácie klienta s XML webovou službou.&lt;br /&gt;
*Klient pošle požiadavku vo forme SOAP správy na XML webovú službu.&lt;br /&gt;
*Ta spustí príslušnú webovú metódu a následne je zaslaná odpoveď klientovi vo forme SOAP správy.&lt;br /&gt;
*Spojenie je ukončené.&lt;/div&gt;</summary>
		<author><name>Ian</name></author>
		
	</entry>
</feed>