Download - Integrarea Aplicatiilor Prin Sercicii
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
1/29
INTEGRAREA APLICATIILOR PRIN SERCICII
SOA şi Servicii Web
Mul i cred că "SOA" i "Serviciile Web" sunt sinonime, iar SOA ar avea nevoie deț ș
serviciile Web pentru a putea fi implementată. Această în elegere este total gre ită, SOA fiind oț ș
paradigmă, iar serviciile Web reprezentând o tenologie de implementare !#$. %onfuzia apare
deoarece serviciile Web sunt considerate standardul de-facto pentru realizarea SOA & urilor, dar
e'istă i alte posibilită i !()*$.ș ț
+reptat, modelul de prelucrare clientserver, specific primelor aplica ii în re ea, a fost transformatț ț
întrun model bazat pe niveluri de servicii !)#$. %onsiderate ca fiind viitorul -nternetului,
serviciile Web sunt colec ii de standarde M/ care permit interac iunea între sisteme 0programe1,ț țindependente de platforma i tenologie. 2olul serviciilor Web este de a parta3a date i de aș ș
accesa diverse servicii, oferind clien ilor o singură interfa ă publică !)4$.ț ț
5rincipalele avanta3e ale serviciilor Web sunt legate de fle'ibilitate i versatilitateș 6 ele suportă o
mul ime deț aritecturi iș sunt independente de platforme i modele.ș Serviciile Web sunt
construite pe mai multe tenologii care lucrează în colaborare cu standardele în curs de
dezvoltare pentru asigurarea securită iiț , precum iș pentru a se asigura că pot fi combinate pentru a
lucra independent de un furnizor. 7e asemenea, serviciile Web câ tigăș pe u urin a dezvoltăriiș ț i aș
interoperabilită iiț . 8le oferă un cadru promi ător pentruț dezvoltarea, integrarea iș
interoperabilitatea aplica iilor soft9areț distribuite. +enologia serviciilor Web permite
interac iunea dintreț componente soft9are aflate în afara grani elor ț organiza ionaleț . :ntrun astfel
de mediu distribuit este foarte important pentru a elimina erorile din faza de proiectare, înainte ca
serviciile să fie implementate !#;#$, !#;4$, !#;;$.
:n sec iunile următoare vom prezenta, pe scurt, câteva no iuni de bază ale ambelor concepteț ț
0principii, beneficii, caracteristici, protocoale
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
2/29
2.1. SOA
8'istă mai multe defini ii ale SOA, iar în opinia organiza iei OAS-S 0ț ț Organization for the
Advancement of Structured Information Standards1 reprezintă "o paradigmă pentru organizarea
i utilizarea capabilită ilor distribuite care pot fi sub controlul diferitor domenii de proprietate.ș ț
Această paradigmă furnizează mijloace uniforme pentru a oferi, a descoperi, a interac iona i aț ș
folosi capabilită ile cu scopul de a produce efectele dorite compatibile cu condi iile prealabile" ț ț
!(($, !#;=$. %onform +anenbaum, un sistem distribuit este o colec ie de calculatoareț
independente care reu esc să fie percepute de către utilizatorii umani ca un sistem unic i coerent.ș ș
:n SOA, resursele sunt puse la dispozi ia altor participan i în re ea sub formă de serviciiț ț ț
independente care sunt accesate întrun mod standardizat. Astfel, este furnizat un cupla3 mai
fle'ibil al resurselor decât în aritecturile sistemelor tradi ionale !#;#$, !#;>$. ?nul dintreț
obiectivele de bază al SOA este de a produce componente reutilizabile, fiecare dintre acestea
încapsulând logica diferită. Orientarea pe servicii !# $ !usiness rocess #anagement, %AI -
%nterprise Application Integration, AO - Aspect Oriented rogramming& are multe rădăcini în
orientarea pe obiecte 'ezvoltare modulară, programare procedurală, () $ (emote rocedure
)all& i a fost influen ată de evolu ia sistemelor tradi ionale a a cum este redată în figura #.(.ș ț ț ț ș
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
3/29
Figura 2.1 8volu ia de la sistemele tradi ionale la cele orientate pe servicii0prelucrare dupăț ț
!(#4$1
SOA este o formă a aritecturii sistemelor distribuite, iar mai multe organiza ii i corpora ii de laț ș ț
nivel interna ional, printre care W*%, Microsoft, -@M -nternational @usiness Macines, OAS-Sț
au publicat propriile lor principii cu privire la SOA !(=$, !=#$, !>$, !(#4$, !(($, !#;#$, !#;4$,
dintre care amintim6
Vedere logică. Serviciul este un abstract, o vedere logică de programe reale, baze de date,
procese de afaceri etc., de obicei desfă oară opera ii la nivel de afaceri.ș ț Orientare spre mesaj . ormal, serviciul este definit în termeni de mesa3e scimbate între
furnizor i solicitant, dar nu depinde de proprietă ile acestora.ș ț Orientare spre descriere. ?n serviciu este descris de o ma inăprocesabilă de metadate.ș
7escrierea referă caracterul public al SOA6 doar acele detalii care sunt e'puse public iș
care sunt importante pentru folosirea serviciului ar trebui să fie incluse în descriere.
Semantica unui serviciu ar trebui să fie documentată, fie direct, fie indirect, prin
descrierea sa. Abstractizarea. %ontractele de servicii con in doar informa ii esen iale despre servicii iț ț ț ș
informa iile despre servicii sunt limitate la ceea ce este publicat în contracte.ț Granularitate. Serviciile tind să folosească un număr mic de opera ii cu mesa3e relativț
mari i comple'e.ș
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
4/29
Orientare re eaț . Serviciile tind să fie orientate spre utilizarea printro re ea, de i acestț ș
lucru nu este o cerin ă absolută.ț Interoperabilitate / platforma neutră. Mesa3ele sunt trimise către o platformă neutră, într
un format standardizat prin intermediul interfe elor publice. M/ este formatul cel maiț
adecvat care îndepline te această constrângere.ș Distributivitate. Serviciile componente pot fi consumate de aceea i ma ină sau distribuiteș ș
pentru ma inile de la distan ă. -nterfa a serviciului i logica sunt independente deș ț ț ș
protocoalele folosite pentru transport, respectiv acces la serviciu. Cutie neagră / ncapsularea. Serviciile sunt un fel de "cutie neagră" pentru consumatorii
acestora, în sensul ca implementarea acestora este ascunsă de consumatorii finali. Autonomia. Serviciile au control asupra logicii pe care o încapsulează, de la design-time
până la run-time. Contractul. Serviciile î i e'pun interfe ele publice prin intermediul contractelor, astfel căș ț
consumatorii de servicii au acces la acces la descrierile serviciilor prin contracte. Componen!ialitate. ?n serviciu poate fi la rândul său compus din mai multe componente,
ciar i alte servicii, care pot fi versionate i administrate în mod independent.ș ș Asamblarea. Serviciile pot fi asamblate de o aplica ie cu scopul de a efectua opera ii maiț ț
comple'e sau să adopte un proces de afaceri. Cuplare slaba. Serviciile men in o rela ie care minimizează dependin ele de alte aplica iiț ț ț ț
i necesită să men ină doar o rela ie de con tientizarea fa ă de celălalt.ș ț ț ș ț Descoperirea. Serviciile î i publică metadatele pe bază deș WS7/ uri prin care acestea
pot fi descoperite i consumate în mod eficient.ș "eutilizarea. /ogica de business este împăr ită în servicii cu scopul de a promovaț
reutilizarea acestora.
5rincipiile care stau la baza SOA sunt ilustrate în figura #.#, de mai 3os.
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
5/29
Figura 2.2 +riungiul SOA
Modelul SOA tratează trei elemente principale care ac ionează ca un ciclu6ț găsire # legare /
invocare $ nregistrare %find $ bind/invo&e # register'.
urnizorul de servicii 0 (ervice )rovider 1 oferă un anumit serviciu i publică descriereaș
serviciului 0 "egister 1 întrun registru de servicii 0 "egistr*1. Solicitantul de serviciu 0 (ervice "e+uester 1 interogează registrul de servicii pentru a găsi
un anumit serviciu 0,ind 1. 7acă serviciul căutat va fi găsit în registrul de servicii 0 "egistr*1, atunci solicitantul de
serviciu va regăsi loca ia serviciului i se va lega 0ț ș -ind 1 la endpoint & ul acestuia, în final
putând invoca 0 Invo&e1 opera iile serviciului.ț
:n opinia noastră, comparativ cu modelul tradi ional client
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
6/29
re ele sau, conform organiza iei World Wide Web %onsortium 0W*%1ț ț ( !(B$, "3n serviciu +eb
este un sistem softare identificat printr-un 3(I 4()-56789 ale cărui interfe e publice iț ș
legături sunt descrise folosind :#;. 'efinirea sa poate fi descoperită de alte sisteme softare.
Aceste sisteme softare pot interac iona cu serviciul eb
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
7/29
7intre principiile SOA descrise în sec iunea anterioară, autonomia, cuplarea slabă i contractulț ș
pot fi considerate ca principii de bază ale serviciilor Web !(=$. Serviciile sunt autonome, în sensul
că6
Ar trebui să aibă controlul asupra propriilor date.
Au control asupra logicii pe care o up ;anguage& !=($ , care are ca obiectiv principal definirea unui formalism care
să permită scimbul u or al documentelor
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
8/29
!istarea 2.1 8'emplu de structură M/
:n e'emplul de mai sus, listarea #.(, am redat o structură M/ care con ine configura ia unuiț ț
solicitant de serviciu specificat prin tagul clientB. 7atele pentru accesarea serviciului 0address -
binding $ contract $ A!) - ul endpoint - ului 1 sunt specificate în tagul endpointB. Ealoarea
atributului address, "" , reprezintă loca ia serviciuluiț )redit)ardService F valoarea atributului
binding , Ls0ttp!indingL, ne arată modul în care se realizează legătura la serviciu, adică
folosind protocolul 9eb C++5F valoarea atributului contract specifică contractul serviciuluiF
valoarea atributului name identifică, în mod unic, în cadrul documentului M/, endpointul
serviciuluiF valoarea atributului binding)onfiguration indică referin a către o altă structură M/ț
în care sunt specificate anumite caracteristici ale legăturii s0ttp!inding . :n tagul identit*B
este specificată identitatea serviciului 0certificat .;B identificat după valorile atributelor
store;ocation, store?ame, 2JG7ind1*pe, findKalue1 care urmează a fi accesat i identitatea peș
care clientul o va prezenta la invocare.
2egulile cu privire la structura unui document M/ 0elemente i atribute1, precum i laș ș
loca ia unde acestea apar în document pot fi documentate întroț schemă. O scemă poate fi
ecivalată cu un tip de definire întrun limba3 de programare. 7e asemenea, scemele M/
validează documentele M/. Au fost propuse mai multe sceme cu diferite niveluri de
e'presivitate6 28/A !4>$, !#>B$, +28 !4)$, SO !#B;$. %ea mai sus inută scema M/ aț
fost 7+7 07ocument +Gpe 7efinition1, definită doar de specifica iile M/. 7atorită limitărilor ț
de sinta'ă ale 7+7, W*% a definit W*% M/ Scema /anguage !#;4$.M/ fiind independent de platformă i de limba3 este o alegere naturală pentru construirea unor ș
sisteme interoperabile prin intermediul serviciilor 9eb. Astfel, el devine un format universal
pentru interscimbarea datelor.
O serie de informa ii cu privire la avanta3ele aduse de standardul M/ se pot găsi la !(;;$, !#;4$,ț
!#*;$.
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
9/29
2) Protocolul "##P
CGperte't +ransfer 5rotocol 0C++51 este un protocol la nivel de aplica ie pentru sistemeț
distribuite, colaborative i ipermedia !#B4$. 8l este folosit încă din anul (B la nivel de Worldș
Wide Web ca i standard cerere
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
10/29
de serviciu, numit server SOA . 5rotocolul este folosit atât pentru a trimite, cât iș pentru a
recep iona mesa3e de laț serviciul Web. ?n avanta3 este acela de a îngloba func ionalitateaț 25%
ului 02emote 5rocedure %all1, folosind e'tensibilitatea iș func ionalitat#eaț M/.
Modelul de procesare SOA5 asigură că un mesa3 SOA5 provine de la un e2peditor ini ial SOA ț
i este trimis la unș receptor final SOA traversând zero sau mai multe noduri intermediare SOA .
?n mesaj SOA este unitatea de bază pentru comunicarea între noduri SOA . 8l constă din patru
elemente, ilustrate în figura #.; de mai 3os6
Anvelopa 0 %nvelope1 & partea cea mai e'terioară a mesa3ului i îl identifică pe acesta caș
fiind un mesa3 SOA5 i nu alt tip de mesa3. 8a con ine zero sau mai multe antete SOA5 iș ț ș
corpul SOA5. Antetul 0 0eader 1 & oferă o modalitate de a adăuga e'tensii definite de utilizator la
mesa3ul SOA5. 8l con ine informa ii generale cu privire la securitate & autentificare,ț țautorizare i sesiune 0sub forma deș to>en - uri1, precum i informa ii cu privire laș ț
prelucrarea mesa3ului prin nodurile intermediare. 7atele referitoare la autentificare, de
obicei sunt criptate folosind standardul +S-Securit* :#; %ncr*ption, :#; Signature&. %orpul 0 !od*1 & nu lipse te niciodată i con ine informa ii ce urmează a fi transferate întreș ș ț ț
aplica ii.ț 7efect 0 ault 1 & este folosit pentru a raporta o eroare sau informa ii specifice erorii. aceț
parte din elementul SOA bod* i poate lipsi din cadrul elementului sau poate fi numaiș
unul sigur 4.
Figura 2.% Structura unui mesa3 SOA5 0prelucrare după !4*$1
4 ttps6
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
11/29
:n e'emplele următoare am redat două mesa3e SOA5, unul de tip cerere 0 SOA reNuest 1, iar altul
de tip răspuns 0SOA response1.
!istarea 2.2 8'emplu mesa3 SOA5 de tip cerere
!istarea 2.3 8'emplu mesa3 SOA5 de tip raspuns
%ele două e'emple anterioare reprezintă cererea, respectiv răspunsul serviciului la invocarea
opera ieiț @et)redit)ardAmount e'pusă de interfaKa contractului, I)redit)ard .
Ealoarea atributului must3nderstand C H 1rue& indică faptul că receptorul mesa3ului SOA5
trebuie să în eleagă semantica antetului din mesa3 i săl proceseze corect. 8lementulț ș
(elates1oB con ine identificatorul unui mesa3 la care acest mesa3 SOA5 se referă. :n corpulț
mesa3ului SOA5 se găse te parametrul opera iei contractului,ș ț credit)ard?umber , pentru mesa3ul
de tip cerere, respectiv rezultatul cererii către opera ia serviciului în cazul mesa3ului de tipț
răspuns.
sD%nvelope 2mlnsDsC" httpDEE.6.orgE5GG6EGJEsoap-envelope" 2mlnsDaC" httpDEE.6.orgE5GGJEGFEaddressing " B
sD0eader B
aDAction sDmust3nderstand C" H" BhttpDEEtempuri.orgEI)redit)ardE@et)redit)ardAmount(esponse
E aDActionB
aD(elates1oBurnDuuidDeJ6dfe-78cJ-67F-b8cF-d5e5PaJGcFH6E aD(elates1oB
E sD0eader B
sD!od*B
@et)redit)ardAmount(esponse 2mlnsC" httpDEEtempuri.orgE " B @et)redit)ardAmount(esult BJJG.GGE @et)redit)ardAmount(esult B
E @et)redit)ardAmount(esponseB
E sD!od*B
E sD%nvelo eB
sD%nvelope 2mlnsDaC" httpDEE.6.orgE5GGJEGFEaddressing " 2mlnsDsC" httpDEE.6.orgE5GG6EGJEsoap-envelope" B
sD0eader B
aDAction sDmust3nderstand C" H" BhttpDEEtempuri.orgEI)redit)ardE@et)redit)ardAmount E aDActionB
aD#essageI'BurnDuuidDcPeHcdHP-cec-6ba-a5G6-67dHHae6PH5JE aD#essageI'B aD(epl*1oB
aDAddressBhttpDEE.6.orgE5GGJEGFEaddressingEanon*mousE aDAddressB
E aD(epl*1oB
E sD0eader B
sD!od*B @et)redit)ardAmount 2mlnsC" httpDEEtempuri.orgE " B
credit)ard?umber BH56J8PF7HGE credit)ard?umber B
E @et)redit)ardAmount B
E sD!od*B
E sD%nvelopeB
http://tempuri.org/ICreditCard/GetCreditCardAmountResponsehttp://tempuri.org/ICreditCard/GetCreditCardAmountResponse
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
12/29
O serie de specifica ii cu privire la protocolul SOA5 se găsesc la !#(;$, !#;#$, !#;4$.ț
$) Standardul WS&!
Web Services 7escription /anguage 0WS7/1 este un format M/ pentru descrierea de servicii
9eb ca un set de endpoint & uri , operând pe mesa3e care con in informa ii fie orientate peț ț
documente, fie orientate pe proceduri !#B=$. Opera iile i mesa3ele sunt descrise abstract i apoiț ș ș
sunt legate la un protocol concret de re ea i format de mesa3e pentru a defini unț ș endpoint . WS7/
& ul este ecivalentul -7/ & ului 0-nterface 7escription /anguage1, bazat pe M/, din %O2@A
0%ommon Ob3ect 2eLuest @roDer Arcitecture1 sau %OM 0%omponent Ob3ect Model1.
WS7/ a a3uns la versiunea #.B, iar în versiunea (.( D era acronimul de la 'efinition, i nuș
'escription a a cum este în versiunea #.B. Eersiunea (.# de WS7/ a fost redenumită #.B dinș
cauza diferen elor ma3ore dintre cele două versiuni !#B=$.ț
O interfa ă WS7/ constă din două componente, a a cum este ilustrat în figura #.>6ț ș
O parte abstractă 0definirea interfe ei serviciului Web1 & descrie opera iile suportate deț ț
serviciul 9eb i tipurile de mesa3e care parametrizează aceste opera ii.ș ț O parte concretă 0implementarea serviciului Web1 & descrie modul în care opera iile dinț
partea abstractă se leagă de un endpoint i modul în care mesa3ele se mapează peș
protocoalele de transport pe care endpoint & urile le suportă.
Figura 2.' Structura informa iilor din WS7/ 0prelucrare după !#4;$1ț
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
13/29
8lementele componente ale unui document WS7/ sunt următoarele6
Port(nd*oint $ define te adresa i modul în care se realizează cone'iunea la un serviciuș ș
Web. 7e obicei adresa aceasta este reprezentată de un ?2/ simplu. Serviciu & constă dintrun set de porturi
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
14/29
!istarea 2.$ 8'emplu document WS7/
:n e'emplul anterior, listarea #.4, am generat WS7/ & ul serviciului )redi)ardService . :n cadrul
elementului sdlDport1*peB este definită opera ia contractuluiț I)redit)ard ,
@et)redit)ardAmount care la rândul ei con ine două mesa3e, unul de intrareț
@et)redit)ardAmount(eNuest , în care este redată semnătura opera iei din punct de vedere alț
parametrilor de intrare i unul de ie ire,ș ș @et)redit)ardAmount(esponse, în care este redat tipul
rezultatului returnat de opera ia contractului. :n cadrul elementuluiț sdlDserviceB este redată
adresa endpoint & ului 0atributul Address1, referin a către legătura serviciului 0valoarea atributuluiț
binding din cadrul elementului sdlDportB1 i identitatea care trebuie prezentată la invocareaș
opera iilor serviciului 0elementulț identit*B1.
%) Standardul &&+
?niversal 7escription, 7iscoverG and -ntegration 0?77-1 reprezintă un frame9orD independent
de platformă sub forma de repositor* 0registru1 unde pot fi înregistrate i unde se pot căutaș
servicii Web, precum i descrierile pe care acestea le furnizează !(=$, !#B#$. %a i celelalteș ș
Q 2ml versionC" H.G" encoding C" utf-F" QBsdlDdefinitions 2mlnsDs2C" httpDEEschemas.2mlsoap.orgEsE5GGEG7Eme2"
2mlnsD2sd C" httpDEE.6.orgE5GGHE:#;Schema"
2mlnsDsoapC" httpDEEschemas.2mlsoap.orgEsdlEsoapE " 2mlnsDsoapH5C" httpDEEschemas.2mlsoap.orgEsdlEsoapH5E "
2mlnsDsoapencC" httpDEEschemas.2mlsoap.orgEsoapEencodingE "
nameC" )redit)ardService"
target?amespaceC" httpDEEtempuri.orgE "
2mlnsDsdl C" httpDEEschemas.2mlsoap.orgEsdlE " B sdlDimport namespaceC" httpDEEschemas.microsoft.comEsE5GGFEG7"
locationC" httpDEEsdumitraEccServiceE)redit)ardServiceEQsdlCsdlG" EB
sdlDt*pesB
2sdDschema ...B
... E 2sdDschemaB
E sdlDt*pesB
sdlDmessage nameC" @et)redit)ardAmount(eNuest " B
sdlDpart nameC" credit)ard?umber "
t*peC" 2sdDstring " EB E sdlDmessageB
sdlDmessage nameC" @et)redit)ardAmount(esponse" B
sdlDpart nameC" @et)redit)ardAmount(esponse"
t*peC" 2sdDdecimal " EB
E sdlDmessageB sdlDport1*pe nameC" @et)redit)ardAmountort1*pe" B
sdlDoperation nameC" @et)redit)ardAmount " B
sdlDinput messageC" @et)redit)ardAmount(eNuest " EB
sdlDoutput messageC" @et)redit)ardAmount(esponse" EB
E sdlDoperationB E sdlDport1*peB
sdlDbinding nameC" +S0ttp!indingI)redit)ard " t*peC" @et)redit)ardAmountort1*pe" B
spDolic*(eference 3(I C" R+S0ttp!indingI)redit)ardpolic*" EB
soapH5Dbinding transport C" httpDEEschemas.2mlsoap.orgEsoapEhttp" EB
sdlDoperation nameC" @et)redit)ardAmount " B soapH5Doperation soapActionC" httpDEEschemas.microsoft.comEsE5GGFEG7EI)redit)ardE@et)redit)ardAmount " st*leC" document " EB
sdlDinput B
spDolic*(eference 3(I C" R+S0ttp!indingI)redit)ard@et)redit)ardAmountInputpolic*" EB
soapH5Dbod* useC" literal " EB
E sdlDinput B sdlDoutput B
spDolic*(eference 3(I C" R+S0ttp!indingI)redit)ard@et)redit)ardAmountoutputpolic*" EB
soapH5Dbod* useC" literal " EB
E sdlDoutput B
E sdlDoperationB E sdlDbinding B
sdlDservice nameC" )redit)ardService" B
sdlDport nameC" +S0ttp!indingI)redit)ard " binding C" tnsD+S0ttp!indingI)redit)ard " B
soapH5Daddress locationC" httpDEEsdumitraEccServiceE)redit)ardServiceE " EB
saHGD%ndpoint(eferenceB saHGDAddressB httpDEEsdumitraEccServiceE)redit)ardServiceEE saHGDAddressB
Identit* 2mlnsC" httpDEEschemas.2mlsoap.orgEsE5GG8EG5Eaddressingidentit*" B 'nsB sdumitraE 'nsB
E Identit*B
E saHGD%ndpoint(eferenceB E sdlDport B
E sdlDserviceB
E sdlDdefinitionsB
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
15/29
standarde din aritectura serviciilor Web, ?77- are la baza o serie de standarde
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
16/29
poate efectua o reautentificare. 8'istă situa ii când cererile de autentificare
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
17/29
securiatate la nivelul transport SS/$, !(=$, !>;$. Securitatea la nivel transport
oferă criptare doar punct $ la $ punct , ceea ce duce la anumite dezavanta3e, datele putând
fi citite
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
18/29
Amenin ările cu privire la serviciile Web implică amenin ări ale sistemului gazdă,ț ț
a aplica iilor i a infrastructurii din întreaga re ea. 5entru a asigura securitatea serviciilor 9eb,ț ș ț
sunt necesare o serie de mecanisme de securizare pentru a rezolva probleme legate de
autentificare, controlul accesului la date, aplicarea unei politici de securitate, protec iaț
mesa3elor. O serie de standarde pentru securizarea serviciilor Web care vor fi prezentate în
sec iunea următoare oferă solu ii pentru rezolvarea unor astfel de probleme.ț ț
2.2.3. Standarde de securitate a serviciilor Web
Standardele fundamentale ale serviciilor Web nu au ca obiectiv asigurarea securită iiț
acestora, deoarece ele au fost concepute doar pentru a oferi conectivitate, ceea ce poate afecta
considerabil securitatea sistemelor în care sunt integrate. Mai multe organiza iiț ; au contribuit la
realizarea unor standarde pentru securitatea serviciilor Web, dar care nu oferă neapărat iș
interoperabilitate !(=$. O solu ie în acest sens este folosirea profilului de securitateț +S-I 8 !asic
Securit* rofile !(()$. :n tabelul #.( de mai 3os sunt asociate standardele de securitate cu
cerin ele fundamentale de securitate.ț
#abelul 2.1 %erinte fundamentale de securitate si standarde asociate
/erinta ,unda0entala de securitate Standarde *entru securitateAutentificare OAS+S WSSecuritG, OAS+S WS+rust, OAS+S SAM/,
OAS+S WSSecure%onversation, WSederation, W3/ M/
NeG Management Specification 0NMS1Autorizare OAS+S A%M/, OAS+S SAM/, WSSecuritG%onfidentialitate W3/ M/ 8ncrGption, WSSecuritG-ntegritate W3/ M/ Signature, WSSecuritG
on 2epudiere W3/ M/ Signature, WSSecuritG
7upă cum se poate observa, standardul WSSecuritG 0WSS1 este asociat la toate cerin eleț
fundamentale de securitate. Motivul este că acesta specifică e'tensii ale SOA5 & ului care permit
criptarea sau semnarea totală
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
19/29
confiden ialită ii mesa3elor esteț ț :#; %ncr*ption, în timp ce standardul :#; Signature este
folosit la asigurarea integrită ii mesa3elor.ț
1) Se0natura X!
Semnătura M/ 0 %astla>e, (eagle Mi Solo, 5GG51, realizată la propunerea W*% si -8+,
reprezintă o semnătură digitală proiectată pentru a fi utilizată în tranzac iile M/.ț Semnătura
M/ combină utilitatea iș puterea tenologiei semnăturii digitale, cu puterea i fle'ibilitateaș
M/ului !(=$, !(=B$, !#(*$. /a fel ca i în cazurile semnăturilor nonM/ 0e'. 5N%S1,ș
"semnăturile :#; adaugă informa ii de autentificare, integritate i nerepudiere a datelor pe careț ș
le semnează" !(;;$.
Semnătura M/ specifică modul de reprezentare a semnăturii digitale ca i un element M/,ș
precum i modul de creare i verificare ale acestui element M/. 8a se aplică atât datelor de tipș ș
M/, cât i datelor de tip nonM/. O caracteristică importantă a semnăturii M/ se referă laș
posibilitatea de a semna un întreg document M/, anumite por iuni dintrun document M/ț
0elemente M/ & :#; tree1 sau fi iere care con in orice tipuri de date digitale. Semnătura M/ș ț
permite semnarea mai multor date cu o singură semnătură.
Atunci când semnătura M/ este folosită independent, asigură integritatea datelor, iar când este
legată de identitatea semnatarului, ea furnizează nonrepudierea con inutului datelor i,ț ș
de asemenea, poate furniza autentificarea semnatarului.:n listarea #.;, de mai 3os, am redat un e'emplu simplu de semnătură M/.
!istarea 2.% 8'emplu semnătură M/
Signature 2mlnsC" httpDEE.6.orgE5GGGEG7E2mldsigR " B
SignedInfoB
)anonicalization#ethod AlgorithmC" httpDEE.6.orgE1(E5GGHE(%)-2ml-cHn-5GGHG6HJ" EB Signature#ethod AlgorithmC" httpDEE.6.orgE5GGGEG7E2mldsigRrsa-shaH" EB
(eference 3(I C"" B
1ransformsB
1ransform AlgorithmC" httpDEE.6.orgE5GGGEG7E2mldsigRenveloped-signature" EB
E 1ransformsB 'igest#ethod AlgorithmC" httpDEE.6.orgE5GGGEG7E2mldsigRshaH" EB
'igestKalueBtog:?)Oz%dce3#p1lvu)iG@)CE 'igestKalueB
E (eferenceB
E SignedInfoB
SignatureKalueB (jad7HbAc1#bJiHm5AHPj2EluKobea7(jhsGmb0%J2(P(nSf1EEEhdh!nzAmrl8/zr+aOu?sK#5j#sah>Jv!2ugd7bzfp
O:T6#uKje3S)v;H2Kr)pNd5vdfUb2IIrUHnV*z2()OPVJAcuO'cs20@lK))H6m7:a5j+5fTO@l%6:8z735*mlmzN
saK8#Fh)s'ihbhVSeNg5v#duv?tS8I/*Nfbc7Ov;S63bJN+oSKHrH7aP7+1pi6ubH2r!(8r8+t%/VOAooFc
7m8O8Ap()n538IJmcl2u:A*7sGa>(eN%(g+@U1sE8VCC
E SignatureKalueBE SignatureB
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
20/29
Semnifica ia elementelor din cadrul semnăturii M/ este următoarea6ț
Signature este rădăcina semnăturii M/. Semnătura M/ este formată din patru blocuri
principale, a a cum arată elementul sau rădăcinaș W%;%#%?1 Signature SignedInfo,
SignatureKalue, Te*InfoQ, ObjectXB.
SignedInfo con ine informa ia care se semnează i a cărei valoare finală se stocează înț ț ș
elementul SignedKalue. )anonicalization#ethod 0codificare1 specifică algoritmul folosit
la canonizarea 0pregătirea1 elementului SignedInfo înainte ca acestuia să i se aplice o
func ie as ca parte a opera iei de semnare.ț ț Signature#ethod specifică algoritmul folosit
la convertirea elementului canonizat SignedInfo în elementul SignatureKalue, adică la
semnarea amprentei numerice a SignedInfo. Acest algoritm identifică toate func iileț
criptografice implicate în procesul de semnare, de e'emplu, func ii as, algoritmi cu ceiț
publice, MA% & uri, algoritmi de padding .a.m.d.. iecare element (eference con ineț
algoritmul de as folosit i valoarea as a obiectului transformat. 7e asemenea, poateș
con ine o listă a transformărilor produse de opera ia de semnare.ț ț
SignedKalue con ine valoarea semnăturii efectuate peț SignedInfo, ob inută conformț
directivelor de calcul indicate în Te*Info. Te*Info con ine to i parametrii necesari verificării semnăturii. 8ste un element op ional,ț ț ț
deoarece toate datele pot fi cunoscute din aplica ie.ț
:ntro semnătură M/ numai datele semnate sunt sigure. 7e aceea trebuie să se facă o distinc ieț
clară între datele semnate i cele care nu sunt semnate. Semnăturile M/ trebuie să fieș rezistente
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
21/29
7atele care urmează a fi criptate pot fi date arbitrare, cum ar fi6 un document M/, un element
M/ sau con inutul unui element M/. 2ezultatul criptării datelor este un element de criptareț
M/ care con ine sau face referire la datele criptate.ț
%riptarea M/ nu este un algoritm nou de criptare, ci o modalitate de a cripta elemente M/.
2olul principal al criptării M/ este asigurarea confidentialitatii datelor , adică interzice accesul
neautorizat al persoanelor la informa ia care nu le este destinată. :n cadrul criptării M/ dateleț
sunt transformate în octe i serializaKi pentru opera ii de criptare i decriptare.ț ț ș
7upă cum am prezentat anterior, protocoalele SS/en(eferenceB
oD(eference Kalue1*peC" httpDEEschemas.2mlsoap.orgEsE5GGJEG5EscEd> " EB
E oDSecurit*1o>en(eferenceB
E Te*InfoB eD)ipher'ataB
eD)ipherKalueB/)5FOa!#EKIp207jcjofi2EHE E eD)ipherKalueB
E eD)ipher'ataB
E eD%ncr*pted'ataB
eD%ncr*ptedTe* Id C" %ncTe*" B eD%ncr*ption#ethod AlgorithmC" httpDEE.6.orgE5GGHEGE2mlencRaesH5F-cbc" EB
Te*Info 2mlnsC" httpDEE.6.orgE5GGGEG7E2mldsigR " B
....
E Te*InfoB
eD)ipher'ataB eD)ipherKalueB/lpz12UarA%J!3drO)sh5vhe;E eD)ipherKalueB
E eD)ipher'ataB
(eference;ist B 'ata(eference 3(I C" R%nc'ata" EB
E (eference;ist BE eD%ncr*pted'ataB
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
22/29
%ncr*pted'ata $ este elementul rădăcină al datelor criptateF %ncr*ption#ethod $ este un element op ional i este folosit pentru a specifica algoritmulț ș
de criptare simetric folosit, sub forma unui ?2-, pentru criptarea datelor 0tripledes-cbc,
aesH5F-cbc, aesH75-cbc, aes5J8-cbc etc.1F
Te*Info & este elementul care furnizează informa ii cu privire la ceia secretă. Are aceea iț șsinta'ă ca i în cazulș :#; Signature. -nforma iile cu privire la ceia de criptare folosităț
sunt necesare pentru decriptarea la destinatarF )ipher'ata & este un element obligatoriu care furnizează informa ii cu privire la dateleț
criptate. :n %iper7ata se găsesc fie datele criptate 0codificarea !ase8 a elementului
)ipherKalue1, fie o referin ă e'ternă la datele criptate furnizată de elementulț
)ipher(eferenceF )ipherKalue & este un element obligatoriu i con ine datele criptateFș ț %ncr*ptedTe* & con ine ceia de criptare criptată care este folosită în bloculț
%ncr*pted'ata. 8ste folosită la criptarea simetrică a mesa3ului 0par ial sau total1 i esteț ș
criptată cu ceia publică a destinatarului. 8lementul con ine toate informa iile necesareț ț
pentru decriptarea ceii simetrice la destinatar, împreună cu o serie de elemente care au
fost criptate cu această ceie. Acest element este op ional în cazul în care păr ile au agreatț ț
o anumită ceie.
3) Standardul XS
M/ NeG Management Standard 0NMS1 reprezintă "un set de protocoale pentru distribuirea iș
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
23/29
$) Standardul SA!
SecuritG Assertion MarDup /anguage 0SAM/1 E#.B 0 0ughes Y #aler, 5GGJ1, standard de
specifica ii OAS-S aprobat la (; martie #BB;,ț "este un frameor> bazat pe :#; pentru
comunicarea informa iilor cu privire la autentificarea utilizatorului, drepturi i atribute dintreț ș
păr i de
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
24/29
Figura 2. %omponentele SAM/
5rofilul "eb broser SSO" este cel mai relevant dintre profiluri, el permi ând scenarii în care unț
utilizator care folose te 9eb & ul, fie accesează resursele de la un serviciu furnizor, fie acceseazăș
un furnizor de identitate pentru autentificare !(B$. urnizorul de identitate generează aser iuniț
care pot fi validate de serviciul furnizor i folosite la stabilirea unui conte't de securitate pentruș
utilizator, conte't ce poate con ine permisiunile pentru accesul la resursele dorite 0pot fi subț
forma de claim uri1. Acest scenariu este ilustrat în figura #.=.
Figura 2. Mecanismul conceptului SSO
Aser iunile SAM/ pot fi folosite în cadrul mesa3elor SOA5 cu scopul de a transporta informa iiț ț
de securitate i identitate între agen i 9eb. 5rofilulș ț SA#; 1o>en rofile al OASIS +S-Securit* 1)
specifică modul în care aser iunile SAM/ pot fi folosite în acest scop.ț 3ibert* Alliance folose teș
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
25/29
frame9orD & ul Identit* 4eb (ervice ,rame5or& %ID$4(,' cu scopul de a folosi aser iuniț
SAM/ sub forma de to>en & uri de securitate pentru accesul securizat la serviciile Web !(=>$.
Microsoft oferă 4indo5s Card(pace !#B($ iș 4indo5s Identit* ,oundation %4I,' !#*#$ în
acest scop.
:n listarea #.) de mai 3os am redat un e'emplu simplu de aser iune SAM/, de autentificare peț
bază de parolă.
8lementul )onditions 4H9 specifică două condi ii pentru aser iune. -ntervalul de timp dintreț ț
valorile atributelor ?ot!efore iș ?otOnOrAfter specifică perioada de validitate a aser iunii.ț
8lementul AuthenticationStatement 459 con ine două atribute i un element copil. 5rimul atributț ș
Authentication#ehod specifică metoda de autentificare a aser iunii folosită.ț
Singurul element copil Subject con ine informa ii despre subiectul autentificat6ț ț ?ameIdentifier
con ine numele subiectului iț ș Subject)onfirmation con ine rela ia dintre subiectul aser iunii iț ț ț ș
autorul aser iunii.ț
8lementul )onfirmation#ethod 45bH9 este un copil al elementului Subject)onfirmation 45b9.
8'istă două profiluri SSO folosite pentru elementul Subject)onfirmationD @ro9ser
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
26/29
!istarea 2. Aser iune SAM/ de autentificare pe bază de parolăț
%) Standardul XA/!
etensible Access %ontrol MarDup /anguage 0AM/1 este o specifica ie pentru reprezentareaț
politicilor de autorizare i afirmare. OAS-S îl define te ca fiindș ș "un limbaj bazat pe :#; pentru
controlul accesului" !(=$. Standardul descrie două limba3e !(=$6 /imba3 pentru politicile de control al accesului & "este folosit pentru a e2prima politicile
de control al accesului "cine poate face ce c=nd"&" F
/imba3 %erere
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
27/29
Figura 2.6 Modelul de securitate al serviciilor 9eb 0prelucrare dupa !(*4$1
+rei mecanisme principale sunt definite de standard6 "abilitatea de a trimite to>en $ uri de
securitate ca parte a unui mesaj, integritatea mesajului i confiden ialitatea mesajului" ș ț .
-ntegritatea mesa3ului este furnizată de semnătura M/, în timp de confiden ialitatea esteț
asigurată de criptarea M/F ambele pot fi folosite în con3unc ie cuț to>en $ uri de securitate.?n to&en de securitate este o colec ie deț claim & uri, unde un claim reprezintă o afirma ie despreț
o entitate 0e'. nume, identitate, privilegiu, email, ceie, capabilitate1. Standardul WSSecuritG
este neutru la tipul de toDen folosit. Astfel, el suportă o serie de formate de toDenuri6
usernameen & urile pe bază de certificate .;B i ticete Nerberos, careș
nu sunt codificate în format M/, standardul WSSecuritG furnizează mecanisme pentru
codificarea binară a acestora.
:n listarea #.= am reprezentat includerea unei semnături M/ în antetul unui mesa3 SOA5.
SD%nvelopeB
SD0eader B sseDSecurit*B
sseD!inar*Securit*1o>en
Kalue1*peC" sseD:JG7v6"
%ncoding1*peC" sseD!ase8!inar*"
suDId C" :JG71o>en" B Ig%z)(H%gI;!AgIV%mtcGrNrThJi...
E sseD!inar*Securit*1o>enB
dsDSignatureB
dsDSignedInfoB
dsD)anonicalization#ethod AlgorithmC" httpDEE.6.orgE5GGHEHGE2ml-e2c-cHnR " EB dsDSignature#ethod AlgorithmC" httpDEE.6.orgE5GGGEG7E2mldsigRrsa-shaH" EB
dsD(eference 3(I C" Rbod*" B
dsD1ransformsB
dsD1ransform AlgorithmC" httpDEE.6.orgE5GGHEHGE2ml-e2c-cHnR " EB
E dsD1ransformsB dsD'igest#ethod AlgorithmC" httpDEE.6.orgE5GGGEG7E2mldsigRshaH" EB
dsD'igestKalueB %3;dd*tSoH...E dsD'igestKalueB E dsD(eferenceB
E dsDSignedInfoB
dsDSignatureKalueB :;d%(FC%r1o%bHlEv:c#??jOK...
E dsDSignatureKalueB
dsDTe*InfoB
sseDSecurit*1o>en(eferenceB
sseD(eference 3(I C" R:JG71o>en" EB E sseDSecurit*1o>en(eferenceB
E dsDTe*InfoB
E dsDSignatureB
E sseDSecurit*B
E SD0eader B SD!od* suDId C" bod*" B
2encD%ncr*pted'ata Id C" bod*" B
...
E 2encD%ncr*pted'ataB E SD!od*B
E SD%nvelo eB
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
28/29
!istarea 2. -ncluderea unei semnături M/ în antetul unui mesa3 SOA5
7upă cum se poate observa, elementele cu namespece & ul sse reprezintă e'tensii ale SOA5 &
ului definite de WSSecuritG. 8lementul !inar*Securit*1o>enB identifică ceia publică dintrun
certificat .;B care este folosită la verificarea semnăturii. 8lementul Securit*1o>en(eferenceB
pointează la to>en & ul de care este legată semnătura, care la rândul ei referenKiază elementul
!od*B.
) Standardele WS4Polic57 WS4Polic5 Assertion7 WS4Polic5 Attac80ent si WS4
Securit5 Polic5
Standardul WS5olicG define te politica cerin elor de securitate pentru serviciile Web, descriindș ț
diferite constrângeri 0politici1 de securitate cu privire la intermediari iș endpoint & uri 0to>en & uri
de securitate necesare, algoritmi de criptare folosi i, roluri privilegiate etc.1. WS5olicG Assertionț
specifică aser iuni de securitate generice. WS5olicG Attacment i WSSecuritG 5olicG oferăț ș
mecanisme pentru a reprezenta capabilită ile i cerin ele mesa3elor SOA5 ca i politici !#B$.ț ș ț ș
) Standardul WS4#rust
Scopul acestei specifica ii este de a permite aplica iilor să participe la scimbul de mesa3e SOA5ț ț
de încredere. Standardul define te e'tensii care se bazează pe WSSecuritG i se folosesc pentruș ș
cererea, emiterea, reînnoirea i validareaș to>en & urilor de securitate, precum i la gestionareaș
rela iilor de încredere dintre acestea !($.ț?n Securit* 1o>en Service S1S& este un serviciu 9eb responsabil pentru emiterea de to>en & uri
de securitate i poate fi văzut ca unș bro>er de încredere !($. %ând un solicitant de serviciu,
dintrun domeniu diferit de încredere 0posibil necunoscut1, are nevoie de un to>en de securitate pe
care trebuie săl prezinte serviciului furnizor îl poate ob ine făcând o cerere către S+S. :nț
cazul în care to>en & ul a fost emis de către S+S, solicitantul de serviciu prezintă acest to>en
-
8/16/2019 Integrarea Aplicatiilor Prin Sercicii
29/29
serviciului furnizor, acesta din urmă fiind cel care validează to>en & ul. 5entru a valida to>en & ul,
între S+S i serviciul furnizor trebuie să e'iste o rela ie de încredere.ș ț
6) Standardul WS4Secure/onversation
Standardul WSSecure%onversation este construit deasupra standardelor WS+rust i WSș
SecuritG i furnizează mecanisme pentru stabilirea i parta3area unui conte't de securitate,ș ș
precum i a unei cei derivate de sesiune !(=$. WSSecuritG se concentrează pe autentificareaș
unui singur mesa3 SOA5, în timp ce WSSecure%onversation este utilizat la stabilirea unui
conte't de securitate între două păr i care permite autentificarea mai multor mesa3e SOA5 iț ș
îmbunătă e te performan a de comunicare. ?n alt avanta3 îl reprezintă negocierea ceii 0lor1 deț ș ț
sesiune, derivată 0e1 dintro ceie secretă parta3ată asociată cu conte'tul de securitate, ceie 0i1 de
sesiune folosită 0e1 la criptarea