You are on page 1of 32

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Java w komercyjnych
usugach. Ksiga eksperta
Autor: Robert Bruner
Tumaczenie: Adam Ficek, Cezary Welsyng
ISBN: 83-7197-779-4
Tytu oryginau: Java Web Services Unleashed
Format: B5, stron: 660
Przykady na ftp: 6323 kB

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Usugi WWW to ostatni krzyk programistycznej mody. W najwikszym skrcie polegaj


one na udostpnianiu w sieci Internet dynamicznych aplikacji sieciowych. Ten
jednozdaniowy opis nie przekazuje caego potencjau usug WWW. Jest on ogromny.
Dziki usugom WWW aplikacje cz si na niespotykan do tej pory, globaln skal.
Ju obecnie skorzysta mona z setek usug WWW. Dziki nim uzyskasz midzy innymi
informacje finansowe, przeszukasz Internet, przeprowadzisz konwersj midzy rnymi
formatami dokumentw, a nawet rozegrasz parti szachw z komputerem.
Java dziki doskonaemu wsparciu dla XML-a jest jedn z najlepszych platform do
implementacji usug WWW. Ksika, ktr trzymasz w rku, to wyczerpujce, dokadne
i co rwnie wane aktualne kompendium, zawierajce informacje niezbdne, by
wykorzysta istniejce i stworzy nowe usugi WWW.
W ksice przedstawiono midzy innymi:
Przykady zastosowa usug WWW
Biznesowe aspekty tworzenia usug WWW
WDSL jzyk opisu usug sieciowych
SOAP protok wymiany komunikatw
UDDI format katalogowania usug WWW
Wykorzystanie pakietu JAX do tworzenia usug WWW
Zagadnienia zwizane z bezpieczestwem
Dodatkowe formaty uywane w kontekcie usug WWW: WSFL, WSIF
Przykadowe implementacje usug WWW
Ksiga eksperta kierowana jest rednio zaawansowanym i zaawansowanych
programistom, ktrzy pragn pozna najnowoczeniejsze technologie, przedstawione
w sposb kompletny i wyczerpujcy.

5RKUVTGEK


 


  
  
B2B to tak naprawd A2A.....................................................................................................................23
Skadanie elementw w jedn cao ....................................................................................................24
Ideologiczne wojny bez zwycizcw ....................................................................................................24
Zgodno operacyjna dla kadego ..................................................................................................25
Wszystko si zmienia ............................................................................................................................25
Czym s usugi sieciowe?......................................................................................................................26
Prosta definicja ................................................................................................................................26
Szersza perspektywa .......................................................................................................................27
Zasig usug sieciowych..................................................................................................................28
Znaczenie technologii usug sieciowych ...............................................................................................29
XML (eXtensible Markup Language).............................................................................................29
WSDL (Web Services Definition Language)..................................................................................30
UDDI (Universal Description Discovery and Integration) .............................................................31
SOAP (Simple Object Access Protocol) .........................................................................................32
ebXML (Electronic Business XML) ...............................................................................................33
Podsumowanie.......................................................................................................................................34

 !"" #"$%&" '


Nowe aspekty znanych rozwiza.........................................................................................................36
Tworzenie metamodelu przedsibiorstwa .............................................................................................37
Techniczny aspekt atrakcyjnoci usug sieciowych ..............................................................................38
Uniwersalne spoiwo ........................................................................................................................38
Sprzenie a niezaleno ...............................................................................................................38
Tworzenie definicji z zastosowaniem metadanych .........................................................................39
Przysanianie zabezpiecze .............................................................................................................40
Role biznesowe......................................................................................................................................41
Zamawiajcy ...................................................................................................................................42
Broker..............................................................................................................................................42
Usugodawca ...................................................................................................................................43
Zagadnienia bezpieczestwa ...........................................................................................................44
Wpyw na modele biznesowe ................................................................................................................44
Analiza biznesowa.................................................................................................................................45
Co decyduje o powodzeniu inwestycji? ..........................................................................................46
Usugi sieciowe a B2B ....................................................................................................................47


  
 


Kierunki i perspektywy rozwoju biznesu ..............................................................................................48
Integracja acuchw usug .............................................................................................................48
Usugodawca WSP ..........................................................................................................................50
Ontologie pionowe ..........................................................................................................................53
Podsumowanie.......................................................................................................................................55

 (%) *+ '


Praktyczne przykady realizacji usug sieciowych ................................................................................58
EDI ..................................................................................................................................................58
Koncepcje wymiany danych elektronicznych.................................................................................59
Porwnanie EDI i usug sieciowych ...............................................................................................60
Dostpno usug sieciowych................................................................................................................61
Internet i przejrzyste rynki ..............................................................................................................61
Rozwizania dla maych przedsibiorstw .......................................................................................62
Przejrzysta ekonomia usug sieciowych..........................................................................................63
Nowe zastosowania usug sieciowych...................................................................................................63
Poszukiwanie nowych moliwoci..................................................................................................64
Dlaczego jest to tak istotne..............................................................................................................65
Rni usugodawcy WSP ......................................................................................................................66
Usugi sieciowe dla mniejszych przedsibiorstw............................................................................66
Perspektywy...........................................................................................................................................67
Dla konsultantw i programistw ...................................................................................................67
Mae przedsibiorstwa.....................................................................................................................68
Wielkie korporacje ..........................................................................................................................68
Producenci oprogramowania...........................................................................................................68
Usugodawcy ASP i ISP..................................................................................................................69
Podsumowanie.......................................................................................................................................69

, -"% . 



"(/ 
Architektura usug sieciowych ..............................................................................................................72
Komponenty Javy ..................................................................................................................................74
Pobranie i instalacja serwera Tomcat..............................................................................................74
Pierwsze kroki z serwerem Tomcat ................................................................................................76
Budowanie usug .............................................................................................................................78
Zastosowanie stron JavaServer Pages oraz serwletw....................................................................78
Interfejsy uytkownika ....................................................................................................................84
Narzdzia Java.................................................................................................................................87
Przyszo usug sieciowych opartych na Javie ....................................................................................88
Podsumowanie.......................................................................................................................................89

' +%. .


".%(/ 0
Aplikacja................................................................................................................................................92
Platforma usug sieciowych...................................................................................................................93
Zestaw narzdzi SOAP....................................................................................................................93
Parser XML .....................................................................................................................................94
Testowanie instalacji .......................................................................................................................95
Wywoanie usugi SOAP.......................................................................................................................97
Deskryptor WSDL dla usugi HelloWorldService..........................................................................97
Generowanie klienta HelloWorldService........................................................................................98
Za kulisami ..........................................................................................................................................103
Generowanie usug sieciowych ...........................................................................................................105


 

Publikowanie i wyszukiwanie usug sieciowych.................................................................................108


Podsumowanie.....................................................................................................................................108

1 2" .(*+ 30


Aplikacja..............................................................................................................................................109
Menu..............................................................................................................................................110
Tworzenie usugi sieciowej .................................................................................................................121
Usuga menu restauracji Thai Palace ............................................................................................121
Dokument WSDL dla menu ..........................................................................................................123
Klient usugi sieciowej menu restauracji Thai Palace...................................................................126
Serwer ByteGourmet ...........................................................................................................................132
Uruchomienie usugi sieciowej .....................................................................................................133
Serwlet...........................................................................................................................................134
Strony JavaServer Pages ...............................................................................................................136
Podsumowanie.....................................................................................................................................137


   
 -"  .%*+ ,
Historia SOAP .....................................................................................................................................141
Zdalne wywoania RPC a warstwy porednie...............................................................................142
RSS, RDF i strony WWW.............................................................................................................143
Zgaszanie da: XML-RPC .......................................................................................................145
Od XML-RPC do SOAP ...............................................................................................................147
Podstawy SOAP ..................................................................................................................................149
Architektura SOAP .......................................................................................................................150
Bloki i elementy SOAP .................................................................................................................151
Style kodowania ............................................................................................................................153
Protokoy transportowe .................................................................................................................154
RPC ...............................................................................................................................................154
Platforma komunikacyjna....................................................................................................................155
Zgodno wersji ............................................................................................................................155
Nagwek ......................................................................................................................................156
Komunikat bdu SOAP................................................................................................................157
Kodowanie SOAP................................................................................................................................158
Pola kodujce ................................................................................................................................158
Typy proste....................................................................................................................................158
Typy zoone: struktury ................................................................................................................159
Typ zoony: tablice ......................................................................................................................160
Protokoy transportowe........................................................................................................................162
Wizanie do HTTP........................................................................................................................162
Wizania do SMTP .......................................................................................................................163
Zaczniki do komunikatu SOAP..................................................................................................164
Podsumowanie.....................................................................................................................................165

4 +*+ 1
Tworzenie wzw SOAP ...................................................................................................................167
Samodzielne tworzenie wza .......................................................................................................168
Biblioteki SOAP............................................................................................................................171
Prosta usuga sieciowa: rezerwacja .....................................................................................................171
Schemat usugi ..............................................................................................................................173
Instalacja przykadowej aplikacji ..................................................................................................173


  
 


Prezentacja przykadowej aplikacji ...............................................................................................174
ledzenie komunikatw SOAP .....................................................................................................177
Rekompilacja projektu ..................................................................................................................178
Interfejs administracyjny...............................................................................................................181
Interfejs publiczny aspekty projektowania .....................................................................................187
Kwestie bezpieczestwa................................................................................................................187
Opnienia sieci ............................................................................................................................188
Wydajno .....................................................................................................................................190
Niezaleno..................................................................................................................................191
Apache SOAP dla RPC .......................................................................................................................191
Tworzenie aplikacji usugodawcy .................................................................................................191
Uruchomienie aplikacji usugodawcy ...........................................................................................196
Wywoywanie aplikacji usugodawcy...........................................................................................199
Podsumowanie.....................................................................................................................................205

0 566! 3
Znaczenie UDDI dla usug sieciowych ...............................................................................................207
Podstawy UDDI...................................................................................................................................208
Korzystanie z UDDI......................................................................................................................209
Standaryzacja ................................................................................................................................210
Typowe zastosowania ...................................................................................................................211
Role UDDI...........................................................................................................................................212
Biae strony ...................................................................................................................................212
te strony ...................................................................................................................................213
Zielone strony................................................................................................................................214
Podsumowanie.....................................................................................................................................216

 3 * 7" .566! 


Zapytanie: wyszukiwanie pozycji .......................................................................................................217
find_business.................................................................................................................................218
find_relatedBusiness .....................................................................................................................221
find_binding ..................................................................................................................................221
find_service ...................................................................................................................................222
find_tModel ...................................................................................................................................223
Zapytanie: gromadzenie danych szczegowych ................................................................................225
get_bindingDetail ..........................................................................................................................225
get_businessDetail oraz get_businessDetailExt ............................................................................226
get_serviceDetail ...........................................................................................................................228
get_tModelDetail...........................................................................................................................230
Rejestracja ...........................................................................................................................................232
Uwierzytelnianie ...........................................................................................................................232
Zapisywanie i usuwanie typw danych UDDI..............................................................................232
Potwierdzenia ................................................................................................................................234
Replikacja ............................................................................................................................................235
Podsumowanie.....................................................................................................................................235

 *68 
Wprowadzenie do WSDL....................................................................................................................237
Procesy komunikacyjne .......................................................................................................................238
Typy.....................................................................................................................................................241
Krtki przegld schematu XML................................................................................................... 242
Tworzenie typu Adres dla dokumentu WSDL ............................................................................. 247


 

Komunikaty .........................................................................................................................................248
Tworzenie komunikatw z zastosowaniem postaci elementowej................................................ 249
Tworzenie komunikatw z zastosowaniem typw....................................................................... 250
Operacje...............................................................................................................................................251
Typy operacji................................................................................................................................ 252
Tworzenie operacji jednokierunkowej ......................................................................................... 253
Tworzenie operacji typu danie/odpowied ............................................................................... 253
Tworzenie powiadomienia ........................................................................................................... 253
Tworzenie operacji typu pytanie/odpowied ............................................................................... 254
Typ portu .............................................................................................................................................254
Tworzenie typu portu z operacj jednokierunkow ..................................................................... 254
Wizanie ..............................................................................................................................................255
Wizanie metody mojaMetoda do SOAP z wykorzystaniem HTTP ........................................... 255
Wizanie metody mojaMetoda do wielu protokow transportowych ........................................ 256
Port.......................................................................................................................................................257
Definicja portu.............................................................................................................................. 257
Usuga..................................................................................................................................................258
Deklaracja usugi.......................................................................................................................... 258
czenie typw portu w ramach usugi........................................................................................ 259
Tworzenie dokumentw WSDL na podstawie klas Javy ....................................................................260
Deklaracja HelloWorldWSDL ..................................................................................................... 260
Generowanie pliku WSDL za pomoc serwera AXIS ................................................................. 261
Zastosowanie narzdzia Java2WSDL .......................................................................................... 261
Wynik dziaania Java2WSDL ...................................................................................................... 262
Pozostae opcje Java2WSDL ....................................................................................................... 264
Dostp do usugi za porednictwem dokumentu WSDL.....................................................................265
Tworzenie klas poredniczcych WSDL ..................................................................................... 265
Tworzenie klasy poredniczcej dla HelloWorldWSDL za pomoc WSDL2Java...................... 266
Pozostae opcje WSDL2Java ....................................................................................................... 268
Podsumowanie.....................................................................................................................................270

 !"#$  %


 (9+ 
Komponenty XML ..............................................................................................................................273
Dokument XML ............................................................................................................................274
Opis typu dokumentu DTD ...........................................................................................................274
Walidacja dokumentu....................................................................................................................276
Techniki analizy syntaktycznej .....................................................................................................276
Pocztki .........................................................................................................................................277
Analizator syntaktyczny SAX (Simple API for XML) .......................................................................277
Tworzenie programu obsugi dokumentu .....................................................................................278
Korzystanie z parsera SAX ...........................................................................................................278
Analizator syntaktyczny DOM (Document Object Model) ................................................................289
Tworzenie drzewa XML w pamici..............................................................................................289
Odczyt drzewa XML .....................................................................................................................290
Wyprowadzanie drzewa XML do strumienia wyjciowego .........................................................295
Operacje na drzewie XML ............................................................................................................295
XSLT ...................................................................................................................................................299
Szablony stylw XSL....................................................................................................................300
Przykad.........................................................................................................................................301
JAXP a usugi sieciowe .......................................................................................................................305
Podsumowanie.....................................................................................................................................306


  
 



 (9: 3
Przygotowanie .....................................................................................................................................307
Terminologia JAXB ............................................................................................................................308
Wizanie schematu XML i klasy.........................................................................................................308
XJC w dziaaniu ............................................................................................................................309
Szeregowanie (marshalling) ..........................................................................................................312
Rozszeregowanie (unmarshalling) ................................................................................................313
Skaner XML ..................................................................................................................................314
Wykorzystanie klas wbudowanych JAXB ..........................................................................................317
Odczyt dokumentu XML ..............................................................................................................317
Modyfikacja pliku XML ...............................................................................................................318
Zapis dokumentu XML .................................................................................................................319
Przykad.........................................................................................................................................319
Zaawansowane schematy wizania .....................................................................................................321
Definiowanie typw podstawowych .............................................................................................323
Definiowanie typw pochodnych..................................................................................................323
Definiowanie typw wyliczeniowych ...........................................................................................324
Podklasy klas wygenerowanych..........................................................................................................327
Podsumowanie.....................................................................................................................................327

 , (9 0
Potrzeba istnienia API rejestrw .........................................................................................................329
Podstawowe klasy JAXR.....................................................................................................................330
Interfejs Connection ......................................................................................................................330
Interfejs RegistryClient .................................................................................................................331
Interfejs RegistryService ...............................................................................................................331
Model danych JAXR ...........................................................................................................................331
Stosowanie JAXR................................................................................................................................333
Tworzenie poczenia....................................................................................................................333
Przeszukiwanie rejestru.................................................................................................................334
Aktualizowanie danych w rejestrze...............................................................................................338
Podsumowanie.....................................................................................................................................342

 ' (9; ,


Wprowadzenie do JAXM ....................................................................................................................343
Czym jest, a czym nie jest JAXM .................................................................................................344
Obszary zastosowa JAXM ..........................................................................................................346
Architektura .........................................................................................................................................347
Modele komunikacji......................................................................................................................347
czniki .........................................................................................................................................347
Profile komunikacyjne ..................................................................................................................349
Implementacja .....................................................................................................................................350
Ukad pakietw .............................................................................................................................350
Obiekty zalene .............................................................................................................................350
Najistotniejsze aspekty prezentowanych przykadw...................................................................351
Podstawowe czynnoci ........................................................................................................................351
Poczenia ............................................................................................................................................353
Punkty kocowe ..................................................................................................................................354
Komunikaty .........................................................................................................................................355
Wycieczka po hierarchii komunikatw.........................................................................................356
Tworzenie komunikatu..................................................................................................................357


 

Klasa SOAPPart ............................................................................................................................358


Komponenty XML ........................................................................................................................359
Nadawcy i odbiorcy komunikatu ..................................................................................................368
czenie wszystkich elementw w cao...........................................................................................370
Hello World...................................................................................................................................371
Prosty serwer plikw .....................................................................................................................377
Podsumowanie.....................................................................................................................................394

 1 (9<+ 0'


Po co nam kolejny interfejs API? ........................................................................................................395
Od zastrzeonych do otwartych interfejsw API ..........................................................................396
Zasig JAX-RPC ...........................................................................................................................396
Status JAX-RPC............................................................................................................................397
Odwzorowanie danych ........................................................................................................................398
Standardowe odwzorowanie dla Javy ...........................................................................................398
Odwzorowanie nazw elementw ..................................................................................................399
Odwzorowanie typw XML..........................................................................................................404
Odwzorowanie usug ...........................................................................................................................405
Odwzorowanie usug do Javy .......................................................................................................405
Odwzorowanie portw do Javy.....................................................................................................406
Zastosowanie JAX-RPC w tworzeniu aplikacji klienckich ..........................................................407
Wywoania dynamiczne ................................................................................................................408
Tworzenie wzw SOAP .............................................................................................................409
Puapki prostoty.............................................................................................................................410
Porwnanie JAX-RPC i innych technologii rozproszonych ...............................................................410
Rnice midzy JAX-RPC, RMI, DCOM i CORBA ...................................................................411
Obszary zastosowania JAX-RPC i JAXM ....................................................................................412
Podsumowanie.....................................................................................................................................413

&'
    ()
  =& "
 
, 
Dlaczego szyfrowanie jest istotne .......................................................................................................417
Szyfrowanie z kluczem prywatnym ..............................................................................................418
Szyfrowanie z kluczem publicznym .............................................................................................418
Warstwa zabezpiecze czy SSL .................................................................................................419
Podpisy cyfrowe ............................................................................................................................420
Szyfrowanie w Javie............................................................................................................................421
Cyfrowe podpisywanie danych .....................................................................................................421
Szyfrowanie danych ......................................................................................................................425
Zastosowanie SSL i SOAP ..................................................................................................................428
Szyfrowanie w XML ...........................................................................................................................433
Podsumowanie.....................................................................................................................................437

 4 +
 
>*?8@ , 0
Przepyw w usugach i sprzganie usug .............................................................................................440
Koncepcje modelowania przepywu....................................................................................................441
Czynnoci ......................................................................................................................................442
Przepyw sterowania .....................................................................................................................443
Przepyw danych ...........................................................................................................................445
Przepyw........................................................................................................................................446

"#


  
 


Przepywy jako proces sprzgania usug sieciowych ..........................................................................446
Usugodawcy i ich typy.................................................................................................................447
Lokatory ........................................................................................................................................448
Implementacja czynnoci zlecanych w outsourcing eksport....................................................449
Udostpnianie przepyww jako usug sieciowych.............................................................................450
Model przepywu jako usugodawca.............................................................................................450
Czynnoci eksportowane...............................................................................................................451
Operacje zarzdzania cyklem ycia przepywu, dane wejciowe i wyjciowe przepywu ...........452
Sprzganie zagniedone ..............................................................................................................454
Przepywy publiczne i prywatne..........................................................................................................454
Opis zachowania usugi.................................................................................................................454
Implementacja usugi jako przepyw przepywy prywatne a przepywy publiczne.................455
Tworzenie przepywu publicznego ...............................................................................................456
Modele globalne ..................................................................................................................................457
Wtyki .............................................................................................................................................458
Modele globalne w WSFL ............................................................................................................459
rda...................................................................................................................................................462
Podsumowanie.....................................................................................................................................462

 0 +AB" 


>*!?@ ,1
Opis serwera synchronizacji czasu ......................................................................................................465
Pakiety i cieki.............................................................................................................................465
Kod usugi synchronizacji czasu ...................................................................................................466
Uruchomienie ................................................................................................................................468
Aplikacja kliencka Apache SOAP.......................................................................................................469
Plik WSDL ..........................................................................................................................................472
Dynamiczna aplikacja kliencka WSIF ................................................................................................475
Port SOAP .....................................................................................................................................476
Dynamiczny modu wywoujcy .........................................................................................................480
Generowanie pniakw Java .................................................................................................................481
Korzystanie z generatora ...............................................................................................................482
Klasy wygenerowane ....................................................................................................................482
Testowanie usugi..........................................................................................................................486
Port Java ........................................................................................................................................487
Zmiany w deskryptorze implementacyjnym WSDL.....................................................................487
Dostp do portu Java z poziomu aplikacji klienckiej....................................................................489
Dostp do portu Java za pomoc dynamicznego moduu wywoujcego .....................................489
Dostp do portu Java za pomoc klas wygenerowanych ..............................................................490
Podsumowanie.....................................................................................................................................490

&* +*! ,   (


 3 ="" ,0
Architektura .........................................................................................................................................494
Witryna WWW .............................................................................................................................494
Obiekty rozproszone .....................................................................................................................495
Usuga sieciowa.............................................................................................................................497
Magazyn w wersji WWW ...................................................................................................................498
Baza danych ..................................................................................................................................498
Dostp do magazynu ze strony WWW .........................................................................................499


 

""

Witryna hurtownika .............................................................................................................................501


Kilka uwag na temat projektu .......................................................................................................501
Usuga Magazyn............................................................................................................................504
Deskryptor uruchomieniowy.........................................................................................................505
Witryna sprzedawcy ............................................................................................................................506
Magazyn w sklepie........................................................................................................................506
Lokalna baza danych .....................................................................................................................507
Aplikacja Sklep .............................................................................................................................508
Kompilacja i uruchamianie projektu ...................................................................................................513
Instalacja przykadu.......................................................................................................................514
Rekompilacja projektu ..................................................................................................................515
Podsumowanie.....................................................................................................................................519

 C"A% .#%"


"AD(: '
Identyfikacja uytkownika ..................................................................................................................522
Architektura aplikacji ..........................................................................................................................522
SOAP i EJB .........................................................................................................................................523
Oprogramowanie .................................................................................................................................523
Obiekt SOAP o nazwie StockTrading .................................................................................................524
Ziarno sesji Trading.............................................................................................................................529
Ziarna encji ..........................................................................................................................................543
Przykadowy klient ..............................................................................................................................549
Podsumowanie.....................................................................................................................................552



2" 
''

Schemat projektowania usug sieciowych...........................................................................................554


Schemat optymalizujcy wydajno i skalowalno.....................................................................556
Strategie testowania .............................................................................................................................560
Testowanie usug sieciowych przy uyciu programu TestMaker .......................................................561
Nowa technologia usug sieciowych nowa metodologia testowania..............................................563
Testowanie przeszukujce.............................................................................................................564
Projektowanie i testowanie zespoowe..........................................................................................564
Testowanie jednostkowe ...............................................................................................................565
Testowanie systemowe..................................................................................................................566
Agenty testujce ............................................................................................................................567
Testowanie skalowalnoci i wydajnoci..............................................................................................569
Testy dla pojedynczego uytkownika ...........................................................................................571
Tworzenie agentw testujcych za pomoc programu TestMaker .....................................................573
Jzyki skryptowe i agenty testujce.....................................................................................................574
Monitorowanie usug sieciowych w celu zagwarantowania odpowiedniego ich poziomu.................581
Zasoby .................................................................................................................................................581
Podsumowanie.....................................................................................................................................582

 E" 


'4
Przegld narzdzi do tworzenia usug sieciowych ..............................................................................584
Dostarczenie usugi .......................................................................................................................585
Tworzenie......................................................................................................................................585
Uruchamianie ................................................................................................................................586
Testowanie ....................................................................................................................................586
Udostpnianie................................................................................................................................586
Wykorzystanie usugi ....................................................................................................................587
Wyszukiwanie ...............................................................................................................................587
Uzyskiwanie dostpu.....................................................................................................................587

"$


  
 


Krtki przegld narzdzi do tworzenia usug sieciowych ...................................................................588
Tworzenie usugi TemperatureConverter......................................................................................588
Uruchamianie usugi na bazie klasy..............................................................................................590
Tworzenie aplikacji internetowej ..................................................................................................592
Narzdzia do tworzenia usug sieciowych...........................................................................................594
Metoda gra-d.........................................................................................................................595
Metoda d-gra.........................................................................................................................597
Metoda rodka ...........................................................................................................................601
Narzdzia do uruchamiania usug sieciowych.....................................................................................602
Narzdzia do testowania usug sieciowych .........................................................................................603
Narzdzia do udostpniania usug sieciowych ....................................................................................606
Narzdzia do wyszukiwania usug sieciowych ...................................................................................607
Narzdzia dostpu do usug sieciowych..............................................................................................608
Podsumowanie.....................................................................................................................................615

 , 2" 

 %&8 1 
Usugi sieciowe w rodowisku WebLogic ..........................................................................................618
Zdalne wywoania procedur ..........................................................................................................618
Wywoania bazujce na komunikatach .........................................................................................619
Jak to dziaa? .......................................................................................................................................619
Architektura usug sieciowych na platformie WebLogic..............................................................620
dania SOAP oparte na RPC ......................................................................................................621
dania SOAP bazujce na komunikatach ...................................................................................621
Cykl projektowy a rodowisko ............................................................................................................622
Usuga Curmudgeon ............................................................................................................................624
Dokument WSDL dla usugi Curmudgeon ...................................................................................624
Kod ziarna dla usugi Curmudgeon...............................................................................................625
Uruchamianie EJB na platformie WebLogic ................................................................................629
Kompilowanie ziarna EJB.............................................................................................................630
Automatyzowanie procesu kompilacji przy uyciu narzdzia Ant ...............................................630
Testowanie usugi Curmudgeon....................................................................................................633
Usugi sieciowe nastpnej generacji....................................................................................................635
Narzdzie WebLogic Workshop ...................................................................................................636
Obiekty sterujce w programie WebLogic Workshop ..................................................................636
Pliki usug sieciowych Java (.JWS) ..............................................................................................637
Platforma programu Weblogic Workshop ....................................................................................637
Zasoby .................................................................................................................................................639
Podsumowanie.....................................................................................................................................640

'  ! -(
*% 1,



 

/CTM9WVMC
9V[OTQ\F\KCNG


Dlaczego szyfrowanie jest istotne

Szyfrowanie w Javie

Zastosowanie SSL i SOAP

Szyfrowanie w XML

Internet zasadniczo jest sieci publiczn, a zatem handel elektroniczny moe budzi obawy. Nikt nie zechce przesya numerw kart kredytowych, jeli istnieje moliwo ich
przechwycenia. Powszechnym rozwizaniem tego problemu jest oczywicie szyfrowanie
taki sposb kodowania danych, by tylko prawomocny ich adresat mg je odkodowa.
W zakresie przegldania treci oferowanych na stronach internetowych najpopularniejszym mechanizmem szyfrowania jest protok SSL (Secure Sockets Layer). Jeeli adres
URL danej witryny rozpoczyna si sekwencj znakw , oznacza to, e zastosowano tu SSL w celu szyfrowania danych. SSL sam w sobie nie jest metod kodowania,
jest platform umoliwiajc przesyanie zaszyfrowanych komunikatw za porednictwem sieci. W niniejszym rozdziale opisano SSL i mechanizmy szyfrowania, ktre mog okaza si pomocne w zabezpieczaniu usug sieciowych.


Bezpieczestwo w sieci jest bardzo rozleg dziedzin nigdy nie mona przewidzie,
czego bd w stanie dokona ludzie chccy obej czyje rodki bezpieczestwa. Przykadowo, w przypadku zakupw w sklepach internetowych, istniej sposoby oszukiwania
niczego nie podejrzewajcego uytkownika. Mona na przykad przekierowa przegldark pod adres amazzon.com zamiast amazon.com, a nastpnie zada od uytkownika jego numeru karty kredytowej i zachowa go do przyszego wykorzystania. Tak naprawd amazon.com nie moe zrobi zupenie nic, eby zapobiec tego typu oszustwom




     
uytkownik musi sam na podstawie adresu w swojej przegldarce upewni si, e
znajduje si tam, gdzie chcia.
Chocia aplikacji nie mona oszuka prostymi sztuczkami ze zmian pisowni adresu, to
jednak istniej sposoby, eby tego dokona. Aplikacja nie posuguje si adn intuicj
w caoci polega na rodkach programistycznych, ktre mog pomc w wykryciu
oszustwa. Dlatego warto wykorzystywa szyfrowanie i podpisy cyfrowe (specjalny rodzaj szyfrowania), co umoliwia rozwizywanie wielu problemw.

 
Szyfrowanie z kluczem prywatnym jest wanie tym mechanizmem, ktry wikszo
ludzi ma na myli mwic o szyfrowaniu. Dana osoba dysponuje pewnego rodzaju poufnym hasem, do ktrego ma dostp tylko ona sama oraz odbiorca wiadomoci. Za
pomoc tego hasa (czyli klucza) wiadomo jest szyfrowana i wysyana. Adresat odkodowuje otrzyman wiadomo za pomoc tego samego klucza, ktry zosta wykorzystany do jej zakodowania. Oczywicie kady, kto zna klucz moe odczyta wiadomo,
dlatego wanie musi by on zachowany w tajemnicy std okrelenie klucz prywatny.
Szyfrowanie z kluczem prywatnym liczy sobie ju kilka tysicy lat. Grecy i Rzymianie
znani byli z szyfrowania przesyanych komunikatw za pomoc rozmaitych metod. Metoda klucza prywatnego odegraa nawet znaczc rol w trakcie II wojny wiatowej, gdy
alianci zdoali odkodowa strategiczne wiadomoci niemieckie i japoskie, o ktrych
sdzono, e s niemoliwe do odszyfrowania.
Era komputerw wesza przebojem w dziedzin szyfrowania prymitywne algorytmy
szyfrowania za pomoc papieru i owka oraz proste maszyny szyfrujce nie miay najmniejszych szans z programowanym komputerem. Specjalici od kryptografii opracowali
nowe algorytmy szyfrowania z zastosowaniem komputera, a take metody ich amania.
Kryptografia cyfrowa jest dzisiaj niezwykle zoon dziedzin, dysponujc mnstwem
algorytmw i zadziwiajco przemylnymi sposobami ich amania.

  


W porwnaniu z szyfrowaniem metod klucza prywatnego, szyfrowanie z kluczem publicznym jest bardzo mod dziedzin. Sposb ten opracowano w poowie lat 70 w celu
rozwizania problemu przesyania kluczy prywatnych. Kopotliwe byo przekazywanie
adresatowi swojego klucza stosujc szyfrowanie z kluczem prywatnym. W przeszoci
organizacje militarne musiay opiera si na ksikach kodw i kurierach dorczajcych
odpowiednie klucze. W dobie komputerw niezbdny jest sposb przesyania adresatowi klucza prywatnego niemal na danie.
Rozwizaniem tego problemu jest zastosowanie pary klucz publiczny-klucz prywatny.
Mwic oglnie, chcc otrzymywa zaszyfrowane wiadomoci naley za pomoc zoonego procesu matematycznego utworzy specjaln par kluczy. Jednym z elementw
tej pary jest klucz prywatny, ktry musi pozosta utajniony. Drugi z elementw nosi nazw klucza publicznego, poniewa mona go przekaza dowolnej osobie. Gdy kto chce

    !    



przesa posiadaczowi klucza prywatnego poufn wiadomo, po prostu szyfruje j za


pomoc klucza publicznego tej osoby. Na skutek matematycznych waciwoci klucza
i samego procesu szyfrowania jedyn osob, ktra moe odczyta wiadomo jest posiadacz klucza prywatnego. Na podstawie klucza publicznego nie mona wyliczy klucza publicznego, nie mona take odszyfrowa wiadomoci.
Ta forma szyfrowania okrelana jest take mianem szyfrowania z kluczem asymetrycznym, poniewa klucz szyfrujcy jest rny od deszyfrujcego. Typowa metoda szyfrowania z kluczem prywatnym jest mechanizmem symetrycznym ten sam klucz suy do
szyfrowania i odszyfrowywania wiadomoci. Z teoretycznego punktu widzenia mona
skonstruowa asymetryczny algorytm z kluczem prywatnym, gdzie wykorzystuje si dwa
rne klucze, ktre obydwa pozostaj prywatne, ale w praktyce nie stosuje si tego rozwizania. Za to niemoliwe jest stworzenie uytecznego symetrycznego algorytmu szyfrowania z kluczem publicznym. Jeeli wszyscy maj klucz publiczny i klucz ten moe
by wykorzystany do odkodowania wiadomoci, wszyscy mog odczyta t wiadomo.

! "#$
Warstwa zabezpiecze czy SSL (Secure Sockets Layer) jest znakomitym przykadem
szyfrowania za pomoc klucza publicznego i prywatnego. Jest to protok wymiany szyfrowanych danych za porednictwem sieci. Klient SSL czy si z serwerem SSL, ktry
nastpnie przesya klientowi certyfikat zawierajcy klucz publiczny serwera.
Nastpnie klient tworzy losowy symetryczny klucz prywatny i szyfruje go za pomoc
klucza publicznego serwera. Nastpnie przesya tak zakodowany klucz serwerowi, ktry
go odszyfrowuje. W tym momencie zarwno klient, jak i serwer znaj symetryczny klucz
prywatny i mog wymienia midzy sob dane.
Na rysunku 17.1 pokazano schemat przebiegu typowej wymiany klucza SSL.


SSL wykorzystuje
klucz publiczny
do transmisji
klucza prywatnego

Mona zastanawia si, dlaczego klient i serwer przeprowadzaj pozornie bardziej skomplikowany proces szyfrowania za pomoc klucza prywatnego. Wydawaoby si, e do
transmisji danych mona wykorzystywa po prostu mechanizm z kluczem publicznym.
Z technicznego punktu widzenia nie ma przeszkd, poniewa klient i serwer znaj nawzajem swoje klucze publiczne. Problem tkwi w tym, e algorytmy szyfrowania z kluczem publicznym s bardzo zoone i wymagaj duo wikszej liczby oblicze ni algorytmy z kluczem prywatnym. Wikszo metod szyfrowania z kluczem publicznym
opiera si na podnoszeniu liczby do bardzo wielkiej potgi. Moe to by, przykadowo,
podnoszenie jakiej liczby do potgi o wykadniku, ktrego dugo przekracza 300 cyfr!

"


     

%
Szyfrowanie z kluczem publicznym stao si podstaw innej techniki szyfrowania, ktra
jest absolutnie niezbdna w handlu elektronicznym podpisw cyfrowych. Podpis cyfrowy jest zasadniczo migawk danych, zakodowan w sposb umoliwiajcy okrelenie, kto sygnowa te dane oraz czy zostay one zmodyfikowane po umieszczeniu podpisu cyfrowego nadawcy.
W celu utworzenia podpisu cyfrowego najpierw naley zastosowa algorytm zwany mieszaniem zabezpieczonym (secure hash). Wynik mieszania stanowi niewielki odcisk
palca danych zazwyczaj o dugoci ok. 1024 bitw. Algorytm mieszajcy musi dawa pewno, e takie zmodyfikowanie danych rdowych, ktre spowoduje otrzymanie tej samej wartoci mieszanej, jest w zasadzie niemoliwe. W przypadku typowego
algorytmu mieszajcego nawet zmiana jednego bitu spowoduje radykaln zmian wartoci mieszanej. Prawdopodobiestwo takiej zmiany niewielkiej liczby bitw, by otrzyma pocztkow warto mieszan jest znikome.
Po wyliczeniu zabezpieczonej wartoci mieszanej jest ona szyfrowana z wykorzystaniem algorytmu z kluczem publicznym, ale tym razem za pomoc klucza prywatnego.
Przydatn waciwoci dobranej pary klucz publiczny-klucz prywatny jest nie tylko
moliwo uycia klucza publicznego do zaszyfrowania wiadomoci, ktr mona odszyfrowa jedynie za pomoc klucza prywatnego, ale take wasno odwrotna wiadomo zaszyfrowana kluczem prywatnym moe by odszyfrowana jedynie za pomoc
klucza publicznego. Oczywicie druga z tych technik jest nieprzydatna do wysyania poufnych wiadomoci. Szyfrowanie wiadomoci w sposb umoliwiajcy jej odczytanie
przez kogokolwiek nie ma sensu.
Okazuje si jednak, e jest to dokadnie taki mechanizm, jaki jest potrzebny w przypadku podpisu cyfrowego. Kady moe odczyta zaszyfrowan warto mieszan. Adresat
podpisanego cyfrowo dokumentu wylicza dla niego warto mieszan i porwnuje j
z zaszyfrowanym podpisem doczonym do dokumentu. Nadawca jest jedynym posiadaczem prywatnej czci klucza, a zatem tylko on mg zaszyfrowa warto mieszan,
ktra moe zosta zdekodowana za pomoc jego klucza publicznego, co daje pewno,
e jest on osob, ktra przesaa dany dokument.
Zabezpieczonego algorytmu mieszajcego nie mona oszuka niewielkimi zmianami
w dokumencie, a zatem jeeli warto mieszana danego dokumentu jest taka sama jak ta
doczona przez nadawc, z bardzo duym prawdopodobiestwem mona powiedzie,
e nikt niepowoany nie manipulowa przy dokumencie.
Podpisy cyfrowe pozwalaj zweryfikowa zarwno spjno danych, jak i ich pochodzenie przynajmniej w stopniu, w jakim mona zaufa nadawcy wiadomoci i jego
dyskrecji w kwestii przechowywania klucza prywatnego. Jedyn rzecz, ktrej nie zapewnia podpis cyfrowy, jest poufno. Chocia algorytmy cyfrowego podpisywania dokumentw obejmuj szyfrowanie, to nie koduj one samych danych. Podpis cyfrowy
zawsze doczany jest do oryginalnych danych. Aby zapewni poufno danych, naley
je zaszyfrowa.

    !    

#

+PUV[VWELGEGTV[HKMCE[LPG
Podpisy cyfrowe odgrywaj rwnie wan rol w zabezpieczeniach SSL. Gdy serwer
przesya klientowi swj klucz publiczny, wysya go po w postaci certyfikatu cyfrowego.
Certyfikat ten w rzeczywistoci jest kluczem publicznym i podpisem cyfrowym. Uruchamiajc zabezpieczony serwer WWW naley wygenerowa par klucz publiczny-klucz
prywatny. Nastpnie klucz publiczny naley przesa do instytucji certyfikacyjnej (CA
Certificate Authority). Zazwyczaj do klucza zaczy trzeba jeszcze dodatkowe dane
identyfikacyjne, dajce instytucji CA moliwo weryfikacji podmiotu ubiegajcego si
o certyfikat. Nastpnie instytucja ta cyfrowo podpisuje klucz i odsya nadawcy certyfikat, skadajcy si klucza nadawcy oraz podpisu nalecego do CA.
Przegldarka internetowa lub biblioteka SSL przechowuje list zaufanych instytucji CA.
Jeli serwer wysya certyfikat, przegldarka nie tylko weryfikuje podpis w certyfikacie,
ale take sprawdza, czy zosta on podpisany przez wiarygodn instytucj. Bez udziau instytucji CA przegldarka nie ma moliwoci zweryfikowania tosamoci serwera WWW.
Mona sobie wyobrazi, e kto mgby wprowadzi przegldark w bd, podajc si
za amazon.com, co wicej mgby przedstawi certyfikat, e naprawd tak jest! Jeli
nie ma moliwoci odwoania si do CA, przegldarka nie moe sprawdzi, czy dany
certyfikat jest autentyczny. Cho kto o zych intencjach w dalszym cigu moe wprowadzi w bd przegldark, to raczej nie ma moliwoci, by ktokolwiek inny mg otrzyma certyfikat potwierdzajcy, e jego witryna to amazon.com. Niestety, w przeszoci
byway przypadki oszukiwania instytucji CA.
Warunkiem waciwego funkcjonowania mechanizmu uwierzytelniajcego opartego na
instytucjach CA jest utworzenie z wyprzedzeniem w przegldarce lub bibliotece SSL listy zaufanych instytucji. Gdyby przegldarka opieraa si jedynie na informacjach pobranych z sieci, byaby podatna na atak typu przechwycenie poczenia (man-in-the-middle
attack), ktry polega na dostarczeniu przegldarce odpowiednio spreparowanych danych.
Jeeli jednak przegldarka wyposaona jest w dane niepochodzce z Internetu (list zaufanych instytucji certyfikacyjnych), jej uytkownik moe unikn tego typu atakw.

&'
Dopki w biblioteki Java-XML nie zostan wbudowane algorytmy szyfrowania, trzeba
polega na rozszerzeniach Java Cryptography Extensions. Pakiet JDK zosta ju wyposaony w obsug podpisw cyfrowych, za JDK 1.4 obsuguje protok SSL, zapewniajc bezpieczn komunikacj w sieci.

(
Do utworzenia cyfrowego podpisu danych w Javie jest potrzebny obiekt 
 , uzyskiwany za pomoc metody 
   
  z podaniem nazwy odpowiedniego
algorytmu zabezpieczajcego. Nazwy algorytmw wykorzystywanych do podpisywania
dokumentw skadaj si z nazwy wybranego zabezpieczonego algorytmu mieszajcego i algorytmu szyfrowania z kluczem publicznym.

$%


     
Dwoma najczciej stosowanymi algorytmami mieszajcymi s SHA1 (Secure Hash
Algorithm 1) oraz MD5 (Message Digest 5). Z kolei najczciej wykorzystywanymi algorytmami szyfrowania z kluczem publicznym s RSA (od nazwisk jego twrcw
Rivest, Shamir i Adleman) oraz DSA (Digital Signature Algorithm). Oglnym formatem
penej nazwy algorytmu jest , gdzie  to nazwa zabezpieczonego algorytmu mieszajcego, za  to kod algorytmu szyfrowania z kluczem publicznym. Mona
zatem wykorzysta np.  lub . Poniewa Java umoliwia zastosowanie algorytmu szyfrujcego dostarczonego przez dowolnego producenta, nie ma jednej listy obsugiwanych algorytmw. Rni producenci opieraj swoje oprogramowanie
na rnych algorytmach. Pakiet JDK w wersji 1.3 oferuje , ,
 oraz .
Oprcz danych, ktre maj by podpisane, niezbdny jest take klucz prywatny. Zazwyczaj klucz taki jest wczytywany ze specjalnej bazy kluczy o nazwie   . JDK zawiera narzdzie  , umoliwiajce zarzdzanie baz kluczy.
Na listingu 17.1 przedstawiono prosty program wczytujcy klucz z bazy   , ktry
nastpnie wykorzystano do utworzenia podpisu cyfrowego danych zawartych w pliku.

 
Kod rdowy SignData.java

 

    

 
     
  
  
 !"#  $



   % &'  '
 ( &'  '
 ) % &'  '
*     
)     &)   +   !',)'$
       -     .
   /   &    % !'  0 '$1
/   1'    '
%     
    ! / + !   /   $2
   %  30 ( !$$
4        5 50 6 
)   &    ) ! ( 2
 ) %  30 ( !$$
7    2.    8(
8(%
 ) 
) &!8(%
 ) $  

    !    

$

%       !      2


      9:      $

   3    &
    3   ! ( $
*         5 ;<8(
    &   +   !';<08('$
   !
) $
   
/ + & / + !  "=#$
>      
 "# &  "?=@A#
 
7      
0 !! &  ! $$B=$

     ! 2=2 $
C
  !$
7    
    D "#&   !$
E    
/  & /  !  "=#1' '$
  !   D $
  !$
E        
& /  !  "=#1'  '$
  !   F !$$
  !$
C
 0!FG  G$

 G  *  !$
C
C
C

Przed uruchomieniem programu tworzcego podpis cyfrowy naley zbudowa par klucz
publiczny-klucz prywatny o nazwie    (nazwa wykorzystywana w programie 


). Trzeba pamita, e  

opiera si na algorytmie , dlatego tworzc par kluczy jako algorytm naley wskaza RSA. Klucze mona zabezpieczy dodatkowo hasem (baza   take jest zabezpieczona hasem), a poniewa  


oczekuje podania hasa dla klucza, w czasie tworzenia tego klucza trzeba poda haso.
Klucz niezbdny do dziaania programu  

mona utworzy za pomoc nastpujcego polecenia:
 H  H   ) H  8(H  0 6

Uruchamiajc po raz pierwszy narzdzie  , uytkownik jest monitowany o podanie hasa. Jako haso naley poda 
  lub zmieni haso w programie  

,

$$


     
tak by odpowiadao podanemu. Uruchamiajc zakodowany za pomoc SSL, przykadowy SOAP, ktry szerzej zaprezentowano nieco dalej w tym rozdziale, jako haso do bazy   trzeba poda 
 .
Na listingu 17.2 przedstawiono kod prostego programu weryfikujcego podpis cyfrowy,
take za pomoc bazy   i obiektu 
 .

 
 Kod rdowy VerifyData.java

 

 

   

    
%     !
            $
9     

 I  
  
 !"#  $



!   0JK$

    !
'% - L 2 '1
'    '$
   G!M$
C
/ +  / & / + !  "N#$
*      25   O <=@
3   /  / &3   / 
 +   !'O <=@'$
7      

   3    &
 /      3   ! / $
 /  !$
F       ! 6. 2.  8($
8(%) ) &!8(%) $   %) !$
*      
   ;<8(
   I  &   +   !';<08('$
 I   I !) $
   
/ +   / & / + !  "=#$
>   
 "# &  "?=@A#

    !    

$&

 
 965   
0 !! &  /  ! $$B=$

 I     ! 2=2 $
C
  /  !$
*       
/  / & / !  "M#$
  D "#&  "!$ /  0!$#
 
/ +  +& / + ! / $
 +  ! D $
 +  !$
%9     0
   
! I  
! D $$

    !'%   '$
C
 

    !
'%    '$
C
C
 0!FG  G$

 G  *  !$
C
C
C


Aby zapewni sobie moliwo korzystania z rozszerze JCE (Java Cryptography Extensions) do szyfrowania danych, warto zaktualizowa pakiet JDK do wersji 1.4. W przeciwnym przypadku trzeba pobra i zainstalowa pakiet JCE osobno, a jego instalacja jest
nieco bardziej skomplikowana ni doczenie plikw do cieki !"#.
W sytuacji doczania JCE do pakietu JDK 1.2 lub 1.3 naley pobra i rozpakowa najnowsz wersj JCE. Wtedy w katalogu lib pakietu JCE powinny si pojawi si cztery
pliki: jce1_2_1.jar, subjce_provider.jar, local_policy.jar oraz US_export_policy.jar. Pliki te naley skopiowa do katalogu jre/lib/ext w katalogu instalacyjnym narzdzi JDK.
W nastpnej kolejnoci naley zmodyfikowa plik jre/lib/security/java.security. W pliku tym znajduje si nastpujca sekcja:
 
  M&   
  
 
  N&    %
 

$


     
Jeeli w pliku java.security znajduje si inna liczba wpisw konfigurujcych obsug
oprogramowania szyfrujcego rnych producentw, wystarczy po prostu doczy
wiersz o kolejnym numerze wikszym ni najwyszy z ju istniejcych. Czyli np. gdy
wierszem o najwyszym numerze jest    $% , naley doda wiersz  
 $% &.
Po zapisaniu zmian w pliku java.security rozszerzenia JCE bd dostpne w pakiecie
JDK. Jak wida, instalacja jest nieco kopotliwa. Tym samym JDK 1.4 z wbudowan
obsug JCE jest atrakcyjn alternatyw.
Do szyfrowania danych naley zastosowa obiekt  w ten sam sposb, co obiekt

 do tworzenia podpisu cyfrowego. Zasadniczo za pomoc metody   
 
  jest tworzony obiekt  , a nastpnie za pomoc metod %
  i %'

 do obiektu s przekazywane dane. Metoda %'
 zwraca zaszyfrowane lub odszyfrowane dane w postaci tablicy bajtw.
Obiekt  zarwno szyfruje, jak i deszyfruje dane. Podan operacj naley wskaza za pomoc metody  , do ktrej jako parametr naley przekaza  ()
*"#+,( (dla trybu szyfrowania) lub  (*"#+,( (dla trybu deszyfrowania
danych) wraz z odpowiednim kluczem.
Na listingu 17.3 zaprezentowano kod prostego programu szyfrujcego dane pobrane
z pliku.

 
 Kod rdowy EncryptData.java

 

G  

G    
 F 
   59  F!F  $
P               Q 7
         2 2      
' '
  
 !"#  $



*   29     
 "# ) &'*0    F   '  D !$
*      F      
F  )    & F  )  ! ) $
*    029 6.    F 
  ) /  / &  ) /   +   !
'F  '$
*   F    ) 
  ) 0 ) & /        !  $

    !    

$'

*   F  30 


30 0 &30   +   !'F  F3D%)3<% '$
+    30       
0  !30  FP38R%*S;F20 ) $
    
/ + & / + !  "=#$
   
/  & /  !  "=#1' '$
 "# &  "T#
 
    F .  
0 !! &  ! $$B=$

65   9  30 
 "#  &0  / ! 2=2 $
  !  $
C
  !$
  !$
C
 0!FG  G$

 G  *  !$
C
C
C

Na listingu 17.4 pokazano kod programu deszyfrujcego plik zaszyfrowany za pomoc


programu z listingu 17.3
 
 Kod rdowy DecryptData.java

 

G  

G    
   
    59  F!F  $
P -  . L    Q
 5     
  
 !"#  $



*   29     
 "# ) &') F  '  D !$
*      F      
F  )    & F  )  ! ) $

$


     
*    029 6.    F 
  ) /  / &  ) /   +   !
'F  '$
U     F    ) 
  ) 0 ) & /        !  $
*   F  30 
30 0 &30   +   !'F  F3D%)3<% '$
+    30       
0  !30  F38R%*S;F20 ) $
    
/ + & / + !  "=#1' '$
    
/  & /  !  "=#$
 "# &  "V#
 
7    F .  
0 !! &  ! $$B=$

(0  0 0 
 "#  &0  / ! 2=2 $
  !  $
C
  !$
  !$
C
 0!FG  G$

 G  *  !$
C
C
C

$)*%
Chocia rozszerzenia JCE umoliwiaj zaszyfrowanie i odszyfrowanie dowolnych danych, protok SSL (Secure Sockets Layer) daje moliwo przesyania zaszyfrowanych
danych za porednictwem poczenia sieciowego. SSL posiada zasadnicz zalet
uwalnia od koniecznoci samodzielnego szyfrowania danych. Dane s przesyane za
porednictwem zabezpieczonego gniazda w taki sam sposb, jak za pomoc zwykego
gniazda. Do szyfrowana suy implementacja SSL. Gniazda zabezpieczone dziaaj tak
samo jak zwyke, a zatem wsppracuj ze wszystkimi klasami wbudowanymi Javy obsugujcymi poczenia sieciowe. Mona na przykad wykorzysta klasy -! oraz -!
  do komunikacji z adresami ##" wystarczy, e stosowany pakiet JDK
obsuguje SSL.

    !    

$

Rozszerzenie JSSE (Java Secure Sockets Extension), wbudowane w pakiet JDK 1.4 obsuguje gniazda zabezpieczone z poziomu Javy. Aby zastosowa narzdzia JSSE z pakietami JDK w wersjach 1.2 lub 1.3, trzeba je samodzielnie pobra i zainstalowa. Niestety, instalacja jest utrudniona w podobny sposb, jak w przypadku JCE. Naley pobra
JSSE spod adresu http://java.sun.com/products/jsse i zdekompresowa pakiet instalacyjny. Nastpnie pliki jse.jar, jcer.jar oraz jnet.jar z katalogu JSSE lib naley skopiowa
do katalogu JDK jre/lib.ext. Na kocu naley zmodyfikowa plik jre/lib/security/java.
security, tak samo jak w przypadku instalacji JCE. Wiersz konfiguracji JSSE bdzie wyglda nastpujco:
 
  <&         %
 

Podobnie, numer wiersza konfiguracji obsugi oprogramowania zabezpieczajcego naley dopasowa do aktualnego ksztatu pliku java.security (powinien by on o jeden
wikszy od biecego najwyszego numeru). Podobnie jak w przypadku JCE JDK
w wersji 1.4 obejmuje rozszerzenia JSSE.
Zazwyczaj implementacja SOAP opiera si na mechanizmie obsugi SSL po stronie serwera WWW. Chcc stosowa SSL z SOAP, naley wyposay serwer WWW w obsug tego protokou. Wiele komercyjnych serwerw WWW obsuguje SSL automatycznie.
Jeeli s zainstalowane rozszerzenia JSSE, take Apache Tomcat 4.0 obsuguje ten protok. Wystarczy zmodyfikowa plik server.xml w katalogu conf. Domylnie w pliku tym
sekcja sterujca obsug SSL jest ujta w znaki komentarza. Wyglda ona nastpujco:
JWHH
J3  P  &'  0      0 X3 '
&'V??K'%  &'<' G%  &'T<'
   4 &' '
  3&'M=' &'=' 0  &'0 '  &' 'B
J/  P  &'  0      4 
 / '
 (0&'  '&'*4'B
J3 B
HHB

Do aktywacji SSL wystarczy usun znaczniki komentarza ./


0. Jednak zanim serwer Tomcat bdzie mg obsugiwa SSL, trzeba mu zapewni wasny klucz szyfrujcy. Klucz ten mona utworzy specjalnie dla tego serwera za pomoc nastpujcego
polecenia:
 H  H   H  8(

Domylnym ustawieniem serwera Tomcat jest, e zarwno baza   , jak i sam klucz
s zabezpieczane hasem 
 . Po wygenerowaniu klucza i ponownym uruchomieniu serwera obsuga SSL powinna dziaa. Aby sprawdzi, czy tak jest rzeczywicie,
wystarczy w przegldarce wpisa adres URL https://tomcathostname:8443. Domylna
konfiguracja SSL dla serwera Tomcat wykorzystuje port 8443. Ustawienie to mona
zmieni na standardowy port 443 przez edytowanie pliku server.xml numer portu
znajduje si w sekcji sterujcej obsug SSL. Trzeba jednak pamita, e w przypadku
systemw Unix czy Linux w celu uruchomienia serwera na porcie o numerze niszym
ni 1024 trzeba mie najwysze uprawnienia.

$"


     
Na listingu 17.5 pokazano kod bardzo prostej klasy Java, ktr mona wywoa za pomoc SOAP.

 
 Kod rdowy ZZamwienie.java
 E69.E 9 
E69.E 9  !$

C
69.!  )  2  2 3-Y2
 YL2  ) )  2
 ) )  $

7     - 6 9  P  6 
 Y     Y
    !'E 9  Z'1  )  $
    !  $
    !'3-YL''1 3-Y$
    !'7 YL 9  Z'1 YL$
    !')    Z'
1  ) )  1 ) )  $
 'E 9  6. '
C
C

Z powyszego wynika, e klasa ta nie zawiera adnego kodu obsugi SSL. Cao obsugi tego protokou jest zadaniem serwera WWW. Na listingu 17.6 pokazano kod klienta
Apache SOAP, ktry korzystajc z adresu URL  wywouje obiekt SOAP za porednictwem SSL.
 
 Kod rdowy WylijZamwienie.java

 

  
  0   
  0    
  0       
  0    
  0    G 
 7YE 9 
  
 !"#  $

*  >84    (%   0   6 0
>84&


& >84!'0  0 ZV??K   
  '$
C
 0!FG  G$

 G  *  !$

    !    


   G!=$
C
*   6 
3  & 3 !$
7    (%29   .L
  *   >8+!'Z ('$
7    (%295 - 6 L
  ; 0P  !'69.'$
%             (%
  F >8+!3   PS>8+S(%SFP3$
>    29  5     
I    & I !$
>      9 
   F  ! %    !'  )  '2  2
')   7: '2$$
   F  ! %    !'  '2  2
' %  K2<=H<A=8  9'2$$
   F  ! %    !' 3-Y'2  2
'DH=M<'2$$
   F  ! %    !' YL'2+    2
 +  !V$2$$
   F  ! %    !'  ) )  '2  2
' 3 '2$$
   F  ! %    !' ) )  '2  2
'?=MNKH<<TT@@HMN'2$$
>      9.5 
  %   !   $
8   &
76   


 &  
 !2''$
C
 0(%FG  G$

 G  *  !$
   G!$
C
   2 :    6-
!W      / !$$

, .  2  9  Y
%     I  &   8  I  !$
    ! I   I  !$$
C
 

/  &   / !$

$#

&%


     
    !'7 5665Z'$
    !')6-&'1   / 3 !$$
    !') 6-&'   / !$$
C
C
C

Istotne jest, e w przypadku klasy 1234


56  klasa -! stosuje oparty na SSL
prefiks  zamiast . Program ten bez problemw powinien dziaa w rodowisku
JDK 1.4, ale w przypadku wersji 1.2 lub 1.3 naley przekaza do platformy Java odpowiedni informacj o zastosowaniu protokou SSL (prefiks ) i poda specjalny parametr systemowy (za pomoc opcji ). Program ten mona uruchomi za pomoc nastpujcego polecenia:

H
 0    &         
7YE 9 

Klasy Java -! i -!  w rzeczywistoci nie implementuj adnego z popularnych protokow internetowych, takich jak HTTP czy FTP. Zamiast tego opieraj si
one na specjalnych klasach obsugi protokow. Gdy klasa URL napotyka danie dla
okrelonego protokou, przeszukuje list pakietw Java w poszukiwaniu klasy obsugi
dla tego protokou. Klasa 3
$
 
%  rozszerza t list o dodatkowe
protokoy.
Mona zauway, e podczas uruchomienia programu 1234
56  z implementacj SOAP dziaajc na serwerze Tomcat, pojawia si bd wejcia/wyjcia. Po aktywowaniu SSL dla serwera Tomcat wygenerowano par klucz publiczny-klucz prywatny za
pomoc polecenia  . Certyfikat ten pocztkowo nie jest rozpoznawany jako zaufany gdy nie zosta sygnowany przez instytucj CA. W takiej sytuacji istniej dwie
moliwoci przesa klucz publiczny do CA w celu autoryzacji lub wymusi na JDK
jego uznawanie mimo braku autoryzacji.
Aby wymusi uznanie klucza publicznego przez JDK, naley wyeksportowa certyfikat
do pliku za pomoc nastpujcego polecenia:
 H GH    H   

W wyniku wykonania tego polecenia jest tworzony plik tomcat.cert, zawierajcy certyfikat cyfrowy, ktry wykorzystuje serwer Tomcat. Teraz certyfikat ten naley zaimportowa do bazy kluczy   , akceptowanych przez JDK. Baza kluczy znajduje si
w pliku JDK jre/lib./security/cacerts. W przypadku komputera dziaajcego, na przykad,
pod kontrol systemu Linux, naley zaimportowa certyfikat do pliku cacerts za pomoc polecenia:
 HH    
     H    

W przypadku komputera pracujcego pod kontrol Windows stosuje si polecenie:


 HH   Z[M K M[ [[ [   H    

Po zaimportowaniu certyfikatu opisywany klient SOAP nie powinien mie adnych problemw z uzyskaniem dostpu do serwera za porednictwem SSL.

    !    

&

Wane jest, aby zapamita, e w kontekcie stosowania SOAP z SSL nie trzeba podejmowa adnych dodatkowych dziaa do obsugi SSL wystarczy zmieni prefiks
adresu URL z  na .

+,$
Podstawowym problemem dotyczcym szyfrowania w XML jest fakt, e XML jest jzykiem, ktrego format mia by czytelny dla czowieka, podczas gdy zaszyfrowane dane
trudno nazwa czytelnymi wydaj si one wielk mas przypadkowych znakw.
W przypadku podpisw cyfrowych jest jeszcze gorzej. Czytelnik zapewne pamita, e
nawet zmiana pojedynczego bitu w oryginalnych danych powoduje zmian wartoci mieszanej. Podczas przesyania pliku XML z jednego systemu do drugiego lub jego analizy
za pomoc parsera, mog zachodzi w nim niewielkie zmiany. Na przykad niektre systemy jako ogranicznik wiersza stosuj znak nowego wiersza, podczas gdy w przypadku
innych systemw jest to znak nowego wiersza, wystpujcy po znaku powrotu karetki.
Jeeli oryginalny podpis zosta utworzony dla dokumentu, w ktrym wystpuj jedynie
znaki nowego wiersza, a adresat otrzyma dokument ze znakami powrotu karetki i nowego wiersza, podpis nie bdzie si zgadza. Take kolejno atrybutw danego elementu nie ma znaczenia dla wikszoci programw, ale ma wpyw na warto podpisu
cyfrowego.
Specyfikacja podpisu elektronicznego dla XML, czyli XML-DSIG (XML Digital Signature) formuuje kanoniczn posta XML, ktra ma rozwiza ten problem. Zawiera ona
nastpujce ograniczenia:


Naley usun wszystkie nadmiarowe spacje, ktre nie s czci danych


tekstowych (czyli wszystkie spacje wewntrz samego znacznika).

Dla wszystkich brakujcych atrybutw naley poda wartoci domylne.

Jako ogranicznik wiersza naley stosowa jedynie znak nowego wiersza.

Naley rozwin wszystkie odsyacze encji oraz odsyacze znakowe.

Po opracowaniu kanonicznej formy dokumentu mona wyliczy dla niego podpis cyfrowy. Specyfikacja XML-DSIG definiuje format znacznika .
 0, ktry zawiera
informacje niezbdne do weryfikacji podpisu.
Oglna posta podpisu XML wyglda nastpujco:
J  B
J +B
!3   ; 0$
!  ; 0$
J 8    !>8+&$\B
!*   $\
! ; 0$
! I  $
J8    B$1
J +B

&$


     
!  I  $
!) +$\
! $
J  B

Sekcja  % 7 opisuje rne algorytmy zastosowane do wygenerowania podpisu.


Mona na przykad zastosowa rne metody tworzenia kanonicznej formy dokumentu
XML. Metody te pozwalaj na opracowanie oglnego formatu dokumentu. Chocia
XML sam jest formatem oglnym, rne metody tworzenia postaci kanonicznej dokumentu obejmuj rne zasady traktowania nieznaczcych spacji oraz innych fragmentw, dajc pewno, e dwa dokumenty zawierajce te same dane s rzeczywicie identyczne, nie tylko na poziomie strukturalnym czy formalnym, ale take pod wzgldem
zapisu binarnego danych dokumentw. Naley take wskaza metod mieszania (tworzenia skrtu wiadomoci) oraz metod tworzenia podpisu cyfrowego (RSA, DSA etc.).
Oczywicie, trzeba take poda warto samego podpisu, czyli kocowego wyniku algorytmu tworzenia podpisu. Naley take wiedzie, e znacznik .
 0 nie zawiera danych, dla ktrych jest tworzony podpis, ale sam podpis.
Warto podpisu, warto skrtu oraz informacje na temat klucza s podawane zazwyczaj w specjalnym formacie o nazwie 8
 &9, ktry pozwala na reprezentowanie danych
binarnych za pomoc zestawu 64 drukowalnych znakw. Trzy wartoci 8-bitowe s kodowane za pomoc 4 znakw, co zwiksza objto kocowego bloku danych o ok. 33%.
Za pomoc odsyaczy do odpowiednich specyfikacji W3C mona wskaza rne metody kodowania. Na listingu 17.7 zaprezentowano kod programu Java odczytujcego dokument XML, a nastpnie tworzcego podpis cyfrowy dla tego dokumentu.
 

Kod rdowy SingXML.java

 

    

 
*      O;4
 O;4
  
 !"#  $



   % &'0  '
 ( &'  '
 ) % &'0  '
*     
)     &)   +   !',)'$
         .
   /   &    % !'  0 '$1
/   1'    '
7        
    ! / + !   /   $2
   %  30 ( !$$

    !    


4        5 50 6 
)   &    ) ! ( 2
 ) %  30 ( !$$
E 6.  2.    8(
8(%
 ) 
) &!8(%
 ) $  
%       !      2
      9:      $

   3    &
    3   ! ( $
%      
8(%) ) &!8(%) $   %) !$
*         5 ;<8(
    &   +   !';<08('$
   !
) $
*   9 Y] 3;4    L
 9 Y
;    &;     +   !';<'$
   O;4
/ + & / + !  "=#$
*    
 "# &  "?=@A#
 
65    
0 !! &  ! $$B=$

     ! 2=2 $
    ! 2=2 $
C
  !$
7    
    D "#&   !$
  D "#&   !$
E    
%7  & %7 !
 D  7 !
 / 7 !  "=#1'  G'$$$
 !'J\G
 &['M =[' &['>*/HV['\B'$
 !'J  +&['    ['
G &['0Z K N====@G ^['B'$
 !'J +B'$
 !'J3   ; 0
(0&['0Z K *8N==M8F3HGH?HN==M=KM<['B'$
 !'J8    >8+&['0Z K *8N===8F3HG0MH
N===HMNA['B'$
 !'J*   B'$

&&

&


     
 !'J*  (0&['0Z K *8N==M8F3H
GH?HN==M=KM<['B'$
 !'J*   B'$
 !'J ; 0
(0&['0Z K N====@G ^<['B'$
 !'J I  B'1D A? D A?! D $1
'J I  B'$
 !'J8    B'$
 !'J +B'$
 !'J  I  B'$
 !''1D A? D A?!   D $$
 !'J  I  B'$
 !'J) +B'$
 !'J) I  B'$
 !'J8() I  B'$
 !'JFG B'$
 !''1D A? D A?!)   %FG !$
D ( !$$$
 !'JFG B'$
 !'J; B'$
 !''1D A? D A?!)   ; !$
D ( !$$$
 !'J; B'$
 !'J8() I  B'$
 !'J) I  B'$
 !'J) +B'$
 !'J  B'$
  !$
C
 0!FG  G$

 G  *  !$
C
C
C

Na listingu 17.8 zaprezentowano wynik dziaania programu  :! dla prostego pliku
XML.
 
 Wynik dziaania SignXML.java
J\G
 &'M =' &'>*/HV'\B
J  +&'    'G &'0Z K N====@G ^'B
J +B
J3   ; 0(0&'0Z K *8N==M8F3HGH?H
N==M=KM<'B
J8    >8+&'0Z K *8N===8F3HG0MHN===HMNA'B
J*   B
J*  (0&'0Z K *8N==M8F3HGH?HN==M=KM<'B
J*   B
J ; 0(0&'0Z K N====@G ^<'B
J I  BR41OK GTF V*7N(&&J I  B
J8    B
J +B
J  I  B

    !    

&'

**_(OVKUD AODVXI;?1;?G0
%;+RV+@7OXG1//? PX,GX;
=P<M;;
, 3`(EAU)) ;3E+PO)%3O,1R*O R <<, 3;
VPRIEG+V(X+, >K,
D +M>?&
J  I  B
J) +B
J) I  B
J8() I  B
JFG B
(`(D
JFG B
J; B
T)8PKK<I)?8 4U? 87+*?;8;G0+3P0?K+I87`?K
+XE 
)TAA=DU+ O )?</O >A `4% 0E7 3A7@>(*EAE(D(G;,T<O
8I+4P_F,M
>R1,
J; B
J8() I  B
J) I  B
J) +B
J  B

XML-DSIG jest wzgldnie nowym standardem i wci si rozwija. Gdy osignie stadium dojrzaoci, mona spodziewa si bibliotek Java uatwiajcych podpisywanie dokumentw XML i weryfikacj podpisw cyfrowych XML.

% 
Z treci tego rozdziau wynika, e istnieje kilka metod poprawy bezpieczestwa tworzonych aplikacji. Mona zastosowa SSL do szyfrowania transmisji albo JCE do zaszyfrowania danych przed wysaniem ich w daniu SOAP lub zaszyfrowania caego dania XML.
W rozdziale 18. zaprezentowano pewne informacje dotyczce jzyka przepywu w usugach sieciowych WSFL (Web Services Flow Language), dziki ktremu mona ustali,
w jaki sposb rne metody SOAP bd wsppracowa ze sob.

You might also like