Professional Documents
Culture Documents
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
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
Kierunki i perspektywy rozwoju biznesu ..............................................................................................48
Integracja acuchw usug .............................................................................................................48
Usugodawca WSP ..........................................................................................................................50
Ontologie pionowe ..........................................................................................................................53
Podsumowanie.......................................................................................................................................55
-" .%*+ ,
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
0566! 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
*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:
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
&'
()
=& "
,
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
""
2"
''
"$
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
%&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
Szyfrowanie w Javie
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.
!
"#$
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(%
)
$
$
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
Q7
2 2
'
'
!"# $
*
29
"#
)
&'*0
F
'
D
!$
*
F
F
)
&
F
)
!
)
$
*
0296.
F
)
/
/ &
)
/
+
!
'F
'$
*
F
)
)
0
)
&
/
!
$
$'
$
*
0296.
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
0X3
'
&'V??K'%
&'<' G%
&'T<'
4&'
'
3&'M='
&'='0
&'0'
&'
'B
J/ P
&' 0
4
/ '
(0&'
'&'*4'B
J3
B
HHB
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 0ZV??K
'$
C
0!FG
G$
G *
!$
$#
&%
!'75665Z'$
!')6-&'1
/ 3
!$$
!') 6-&'
/ !$$
C
C
C
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
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:
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
&&
&
!'J* (0&['0ZK*8N==M8F3H
GH?HN==M=KM<['B'$
!'J* B'$
!'J
;
0
(0&['0ZKN====@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&'0ZKN====@G^'B
J
+B
J3 ;
0(0&'0ZK*8N==M8F3HGH?H
N==M=KM<'B
J8
>8+&'0ZK*8N===8F3HG0MHN===HMNA'B
J* B
J* (0&'0ZK*8N==M8F3HGH?HN==M=KM<'B
J* B
J
;
0(0&'0ZKN====@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.