1.1 Apariţia şi dezvoltarea serviciilor Web
La început a fost TCP/IP-ul, acesta a avut o evoluţie fantastică: a apărut în primele reţele din anii ’70 şi până în zilele noastre a reuşit să cucerească toată planeta. Interesant este că suita de protocoale TCP/IP a EVOLUAT, mereu s-au adus îmbunătăţiri la el fără să i se întrerupă prezenţa în reţele şi, poate mai important, fără să i se blocheze evoluţia. Încă de la început, TCP/IP-ul a fost şi a rămas protocol deschis, guvernat de organizaţii de standardizare independente ca IETF sau W3C. Oricine putea să aducă îmbunătăţiri. Bineînţeles că aceste organizaţii se ocupă de multe alte standarde fără de care internetul de azi nu ar mai fi la fel. Există unele lucruri însă, fără de care internetul nu ar exista. TCP/IP-ul este unul din ele.
Dezvoltatorii de software au fost mulţumiţi o vreme, până când nu a mai fost de ajuns să construiască aplicaţii care să aibă drept consumator omul. Era nevoie ca aplicaţiile să comunice între ele. Aici s-a produs ruptura. Între marile companii furnizoare de tehnologie nu a mai fost acelaşi consens la problemele de comunicaţie între aplicaţii cum a fost odinioară la problemele de comunicaţie între calculatoare. Au fost câteva încercări dintre care s-au detaşat DCOM (Distributed Component Object Model) de la Microsoft, RMI (Remote Method Invocation) de la Sun şi CORBA (Common Object Request Broker Architecture) de la OMG (Object Management Group). Necazul e că nici una din cele trei tehnologii nu a fost adoptată de toată lumea.
Era nevoie ca toţi să urmeze modelul standardelor deschise. Fiindcă TCP/IP-ul a fost al nimănui şi a avut succes tocmai prin caracterul deschis, trebuia găsit ceva asemănător (la nivelul aplicaţiilor) care să fie tot al nimănui şi să fie bazat pe standarde. Acel ceva este reprezentat de serviciile web. Dacă lumea IT reuşeşte să impună serviciile web bazate pe standarde, s-a rezolvat problema, fiindcă furnizorii de produse software vor îmbrăţişa ideea de servicii web realizând produse care ştiu să comunice astfel cu orice alt produs indiferent de platforma pe care rulează, indiferent de cine le-a creat şi indif+erent cu ce tehnologie le-a construit. Problema nu este atât de simplă, însă ideea este extraordinară şi realizabilă. În ultimii ani s-au definitivat zeci de standarde în acest domeniu şi suntem în faza în care putem spune că serviciile web vor avea succes cel puţin la fel ca bătrânul TCP/IP. Mai mult, pentru accelerarea standardizării şi pentru oferirea unei garanţii că prin serviciile web se va asigura interoperabilitatea mult dorită, s-a creat şi WS-I, un organism care furnizează documente mature pentru W3C şi IETF.
Lumea IT a ajuns la consens în ceea ce priveşte caracteristicile acelui ceva care va rezolva comunicaţia între aplicaţii. Acel ceva trebuie să fie:
independent de maşină (PC-uri, maşini mari sau dispozitive mobile), de sistemul de operare, de limbajul de programare, de baza de date sau de arhitectură,
modular,
să suporte comunicaţie între aplicaţii slab cuplate (cu gândul la internet),
utilizabile în orice domeniu, de la soluţii simple P2P (Peer to Peer) la sisteme EAI (Enterprise Application Integration) şi până la sisteme B2B (Business to Business) de anvergură.
Toate soluţiile de până acum (DCOM, RMI sau CORBA) au probleme majore cu cel puţin două dintre cerinţele de mai sus. Trebuie să amintim aici şi o soluţie mai exotică numită EDI (Electronic Data Interchange), care părea să rezolve problema.
Ca să putem înţelege de ce în mintea specialiştilor în IT a apărut concepţia de web-service, prin ce ea diferă de celelalte încercări de a crea tehnologii de dezvoltare a sistemelor informatice şi, cel mai important, de ce e atât de bună, cum spun experţii companiilor-vendori şi analiştii sectorului IT, e necesar să ne intoarcem cu câţiva ani în trecut şi să privim cum se dezvoltau tehnologiile creării sistemelor informatice, ce a fost creat si ce probleme au apărut. Cum se întîmpla de obicei, în totul sunt “vinovaţi” banii. Când reţelele de calculatoare au ieşit din cadrul organizaţiilor strict militare si ştiinţifice(cum ar fi ARPAnet), ele au ajuns in mâna particularilor. În momentul în care numărul utilizatorilor a crescut a apărut ideea că reţelele de calculatoare pot fi folosite în afaceri. Astfel, reţelele de calculatoare de uz comun, principala şi cea mai răspândită din care astăzi se numeşte Internet, au ajuns business-instrument. Dar ca să conduci un business cu un astfel de instrument, el trebuie să corespundă unui set de cerinţe, cele mai importante dintre care sunt – securitatea şi viteza de transfer a informaţiei. Problema rezolvării acestor cerinţe au început să o rezolve la nivelul cel mai de jos – nivelul protocoalelor de transport. Diferite companii au propus diferite realizări a protocoalelor de reţea. Protocoalele de reţea, dupa cum se ştie, conţin regulile de formare a pachetelor si schimbul dintre ele. Aplicaţiile ce folosesc aceste reguli (diferite pentru diferite protocoale) sunt strîns legate de aceste protocoale. Între timp relaţiile B2B (Business–to–Business) cereau ca aplicaţiile de reţea ce foloseau protocoale diferite să poata comunica între ele – în asa fel a aparut problema integrării aplicaţiilor.
Pe parcursul câtorva ani au fost elaborate câteva tehnologii de interacţionare între aplicaţii care permiteau, intr-un fel sau altul, realizarea schimbului de date intre aplicaţii (cele mai răspândite dintre care – Remote Procedure Calls (RPC), Distributed COM (DCOM), Remote Method Invocation (RMI) si Common Object Request Broker Architecture (CORBA)), însa fiecare dintre ele a fost destul de greu realizabilă, nu dispunea de universalitate necesară (De exemplu: Toti utilizatorii trebuiau sa aibă acelaşi sistem de operare) si, cel mai rau, aceste tehnologii erau greu compatibile intre ele. Aceasta situatie nu putea sa mulţumeasca nici business-ul, nici pe specialiştii IT.
Atunci s-a apelat la web-tehnologii de bază, s-a încercat gasirea acelui puţin, ce se afla la baza Internetului. Dar această bază e constituită din urmatoarele tehnologii:
• TCP/IP – protocolul universal, acceptat de către toate dispozitivele de reţea, de la mainframe-uri la telefoane mobile si PDA;
• HTML – limbaj universal, folosit pentru redarea informaţiei cu dispozitivele utilizatorilor;
• XML – limbaj universal pentru lucrul cu orice tip de date.
În fiecare definiţie e conştient subliniată universalitatea fiecărei din tehnologii, pentru că această universalitate este baza inţelegerii serviciilor web. Ele sunt bazate numai pe tehnologii larg acceptate, deschise şi formal independente de vendori. Doar prin intermediul acesta se ajunge la principalul avantaj al serviciilor web – universalitatea lor, adică independenţa de sisteme de operare, limbaje de programare, servere de aplicaţii, etc. Astfel, serviciile web rezolvă problema iniţială – problema integrării aplicaţiilor de natură diferită şi construirea sistemelor informaţionale distribuite. Aceasta şi este diferenţa de bază dintre serviciile web şi predecesorii săi. Cu ajutorul serviciilor web câteva, uneori total diferite, business-procese se pot integra într-un singur business-proces.
Şi totuşi web-services nu pot fi privite ca leac de toate business-probleme. Serviciile web, ca şi multe altele, au plusurile si minusurile lor şi, prin urmare, domeniile de aplicare. Necunoaşterea şi neconformarea în aceste domenii în proiecte reale poate duce la urmări destul de grave.
Plusurile web-service sunt:
• Web-services permit companiei integrarea propriilor business-procese cu business-procese ale business-partenerilor si clienţilor săi cu costuri mult mai mici, decât cu alte tehnologii. Costurile unor asemenea soluţii este accesibilă si IMM-urilor, ceea ce va deschide companiei noi orizonturi;
• Întrucât serviciile web se organizează în regiştri publici (UDDI, ebXML), accesibili persoanelor interesate din toată lumea, pragul ieşirii companiei pe pieţe noi se micşoreaza, posibilitatile cresterii bazei de clienţi însa, cresc.
• Serviciile web asigură compatibilitatea in relaţia cu sisteme informationale deja existente în companie. Astfel, se păstrează investiţiile făcute anterior şi nu sunt necesare schimbări radicale.
• Construirea soluţiilor noi cu aplicarea serviciilor web se realizează mai rapid şi mai puţin costisitor.
Neajunsurile serviciilor web:
• Standardele de integrare a aplicaţiilor, crearea politicilor IT si business ce pot interacţiona prin intermediul serviciilor web se află încă în stadiul de continuă dezvoltare şi elaborare. Mai multe companii lucrează în paralel asupra serviciilor web (Web Services Flow Language (WSFL), Business Process Execution Language 4 Web Services (BPEL4WS)) de la IBM, XLANG de la Microsoft şi specificaţiile WS-Coordination şi WS-Transaction – rezultatul colaborării IBM, Microsoft şi BEA). Evident, fără formularea strictă a lor construirea sistemelor informatice pe baza tehnologiei web-service poate merge doar cu succes intermitent.
• Folosirea dinamică a informaţiilor din regiştrii serviciilor web, apelul serviciilor concomitent cere rezolvarea problemelor relaţiei de încredere între diferiţi regiştri. În plus, sunt probleme în utilizarea concomitentă a regiştrilor de formate diferite.
• Specificaţia WS-Security – produsul colaborării IBM şi Microsoft – este destul de “tânără” şi este mereu înnoită. Se pregătesc deja specificaţiile destinate securităţii serviciilor Web: Web Services Policy Assertions, Web Services Policy Attachments, Web Services Policy Framework, Web Services Trust, Web Services Secure Conversation, Web Services Federation.
Analizând cele relatate mai sus, se poate observa că plusurile sunt de domeniul strategic, pe când minusurile au caracter tehnic, datorită noutăţii tehnologiilor serviciilor Web. Rezolvarea acestor probleme este doar problema de timp.
1.2 Serviciile Web
Definiţia dată de organizaţia W3C este: un web-service este un sistem software identificat de URI [RFC 2396], a cărui interfeţe publice şi legăturile sunt definite şi descrise folosind XML. Definirea să poată fi gasită şi de alte sisteme software. Aceste sisteme pot ulterior interacţiona cu web-service în acord cu definirea sa, folosind mesaje bazate pe XML transmise cu ajutorul protocoalelor Internet.
Definition: A Web service is a software system identified by a URI [RFC 2396], whose public interfaces and bindings are defined and described using XML. Its definition can be discovered by other software systems. These systems may then interact with the Web service in a manner prescribed by its definition, using XML based messages conveyed by Internet protocols.
Din definiţia de mai sus, observăm că unica tehnologie ce este folosită cu stricteţe este XML. Nu se aminteşte nici de protocolul de reţea folosit, nici de limbajul de programare, nici de platforma pe care se realizează. Unica condiţie – folosirea mesajelor XML (mai precis SOAP), întrucât alternativă reală pentru XML, ca limbaj ce permite lucrul cu orice tip de date, în ziua de azi nu există.
Web Services este o tehnologie .NET folosită pentru crearea de componente programabile. Multe aplicaţii folosesc tehnologii de componente distribuite, cum ar fi Distributed Component Object Model (DCOM) şi Remote Procedure Call (RPC). O problemă comună a acestor tehnologii este dependenţa de platformă. Web Services foloseşte tehnologii de Internet standard, cum ar fi HTTP şi XML. Independenţa de platformă creează posibilitatea şi pentru sistemele eterogene de a folosi aceste aplicaţii. Utilizatorii nu mai trebuie să ştie în ce limbaj a fost creată o aplicaţie sau un serviciu. Nu mai trebuie să ştie decât care sunt facilităţile pe care le oferă şi cum le pot utiliza în propriile lor aplicaţii.
Serviciile Web prezintă un uriaş potenţial de utilizare într-o mare varietate de aplicaţii folosite în Internet, cum ar fi cele pentru serviciile meteorologice, pentru ştiri bursiere, pentru serviciile de ştiri, pentru serviciile de urmărire a pachetelor şi pentru serviciile asociate. De exemplu, o firmă care vinde cărţi prin Internet, cum este Amazon.com, ar putea să includă o facilitate pentru urmărirea pachetelor folosind o componentă Web Service de la o firmă de distribuţie prin poştă, ca UPS. O agenţie de ştiri prin Internet ar putea oferi o componentă Web Service tuturor siturilor de Web care le publică ştirile.
Web Services foloseşte tehnologiile de Internet obişnuite, ca HTTP şi XML, pentru a realiza comunicarea între furnizor şi consumator. În acest caz, furnizorul este cel care creează componenta Web Service şi o distribuie prin serverul său pentru a putea fi folosită în aplicaţii de către consumatori.
De asemenea, Web Services foloseşte un nou protocol redus numit SOAP (Simple Object Access Protocol). A fost nevoie de un nou protocol fiindcă o mare parte din tehnologiile de componente distribuite existente în prezent sunt legate de un sistem de operare, obligându-ne să rescriem obiecte pentru diferiţi clienţi. Problema devine mai serioasă când se distribuie obiecte prin Internet, din cauza problemelor de securitate: majoritatea aplicaţiilor de Web folosite de firmele comerciale au firewall. Dacă se foloseşte SOAP, care utilizează protocolul HTTP ca purtătoare, nu mai este necesară deschiderea de noi porturi în firewall. Comunicarea dintre furnizorul serviciului de Web şi consumator se va face printr-un mesaj SOAP în format XML. Ca să le permită consumatorilor să folosească un serviciu de Web în aplicaţiile lor, programatorul serviciului respectiv trebuie să furnizeze informaţii, cum ar fi metodele definite de serviciul Web, parametrii solicitaţi şi valorile generate de metode.
CUPRINS:
Capitolul I. Serviciile Web
1.1 Apariţia şi dezvoltarea serviciilor Web 7
1.2 Serviciile Web. Noţiuni generale 10
1.2.1 Metodele serviciilorWeb 12
1.2.2 Arhitectura soluţiei. Suita de tehnologii (XML, UDDI, WSDL, SOAP) 14
Capitolul II. Securitatea serviciilor Web
2.1 Modelul de securitate a serviciilor Web 27
2.1.1 Principiile modelului de securitate a serviciilor Web 29
2.1.2 Specificaţiile de securitate a serviiciilor Web 31
2.1.3 Comparaţia modelelor de securitate a serviciilor Web 36
2.2 Securitatea serviciilor Web în ASP.NET. Modelul de securitate
2.2.1 Securitatea la nivel de platformă/transport (point-to-point) 38
2.2.2 Securitatea la nivel de aplicaţie 39
2.2.3 Securitatea la nivel de mesaj (End-to-End) 41
2.2.4 Arhitectura securităţii la nivel de transport 42
2.2.5 Strategiile de autentificare şi de autorizare 43
2.2.6 Configurarea securităţii 48
2.2.7 Trimiterea credenţialelor pentru autentificare către Web Service 51
2.2.8 Transferul Apelatorului Original 54
2.2.9 Utilizarea certificatelor digitale cu Web Service 55
Capitolul III. Aplicaţii practice
3.1 Lucrul cu protocoalele SSL/TLS 59
3.1.1 Protocoalele SSL/TLS 59
3.1.2 Setarea serverului Web pentru lucrul cu protocoalele SSL/TLS 59
3.1.3 Generarea cererii pentru un Certificat Digital 60
3.1.4 Înregistarea unei cereri pentru Certificat Digital 62
3.1.5 Emiterea Certificatului 62
3.1.6 Instalarea Certificatului pe serverul Web 63
3.1.7 Configurarea resurselor pentru cererea SSL Access 63
3.2 Folosirea protocoalelor SSL/TLS în serviciile Web 63
3.3 Apelarea Web service folosind SSL 66
3.3.1 Crearea unui Web service 66
3.3.2 Configurarea directorului virtual a serviciului Web pentru utilizarea SSL 69
3.3.3 Testarea serviciului Web folosind browser-ul 70
3.3.4 Instalarea certificatului pe calculatorul client 71
3.3.5 Dezvoltarea aplicaţiei Web pentru apelarea serviciului Web 72
3.4 Apelarea unui serviciu Web folosind certificatele client 74
3.4.1 Crearea unui Web Service 76
3.4.2 Configurarea directorului virtual a serviciului Web pentru utilizarea Certificatelor Client 79
3.4.3 Crearea unui cont Custom pentru rularea componentei deservite (Serviced Component) 80
3.4.4 Cererea Certificatului Client pentru contul Custom 80
3.4.5 Testarea Certificatului Client folosind browser-ul 82
3.4.6 Exportarea Certificatului Client către un fişier 83
3.4.7 Dezvoltarea componentelor deservite pentru apelarea Web Service 84
3.4.8 Configurarea şi instalarea Componentei Deservite 88
3.4.9 Dezvoltarea aplicaţiei Web pentru apelarea componentei deservite 89
Concluzii: 91