+ All Categories
Home > Documents > Dezvoltarea aplicațiilor Web

Dezvoltarea aplicațiilor Web

Date post: 14-Feb-2017
Category:
Upload: lycong
View: 236 times
Download: 0 times
Share this document with a friend
152
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco Dezvoltarea aplicațiilor Web servicii Web în stil REST
Transcript
Page 1: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Dezvoltarea aplicațiilor Web

⤄servicii Web în stil REST

Page 2: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

„Prima calitate a stilului este claritatea.”

Aristotel

Page 3: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Cum pot fi accesate și procesate resursele– date, informații, cunoștințe –

disponibile pe Web?

Page 4: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

nevoi ale dezvoltatorilor Web

Soluții multi-platformă, slab-conectate

integrare (în timp-real) la nivel de Internet/Weba aplicațiilor, serviciilor și sistemelor

Page 5: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

nevoi ale dezvoltatorilor Web

Soluții multi-platformă, slab-conectate

integrare (în timp-real) la nivel de Internet/Weba aplicațiilor, serviciilor și sistemelor

exemplificare: găsirea ofertelor de servicii,pe baza localizării geografice a utilizatorului,

în contextul dispozitivelor mobile

Page 6: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

nevoi ale dezvoltatorilor Web

Soluții multi-platformă, slab-conectate

datele să poată fi descrise pentru a fi „înțelese”de calculatoare și pentru a fi interconectate facil

Page 7: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

nevoi ale dezvoltatorilor Web

Soluții multi-platformă, slab-conectate

datele să poată fi descrise pentru a fi „înțelese”de calculatoare și pentru a fi interconectate facil

Web “puzzles”inter-conectarea mai multor servicii oferind date de

interes, conform preferințelor utilizatorului

Page 8: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

nevoi ale dezvoltatorilor Web

Servicii atașabile (pluggable) & versatile

Software as a Service – SaaS

Application Service Provider – ASP

Page 9: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soluție

Divizarea aplicațiilor în servicii – independente –care se pot compune,

menite a se conecta și orchestra în mod spontanîn cadrul proceselor de afaceri/tehnice

Web component-based software

Page 10: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soluție

“The Web is the computer”

disponibilitatea unei/unor arhitecturi care…

oferă suport pentru paradigme de comunicare– bazată pe actualele tehnologii Web –

între aplicații eterogene

Page 11: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soluție

“The Web is the computer”

disponibilitatea unei/unor arhitecturi care…

permit(e) localizarea transparentă a serviciilor

Page 12: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soluție

“The Web is the computer”

disponibilitatea unei/unor arhitecturi care…

facilitează adăugarea, înlocuirea, eliminareaserviciilor în mod dinamic

Page 13: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soluție

“The Web is the computer”

disponibilitatea unei/unor arhitecturi care…

ascund(e) dezvoltatorului detaliile de sistem

Page 14: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soluție

“The Web is the computer”

disponibilitatea unei/unor arhitecturi care…

asigură calitatea dezvoltării și exploatăriiaplicațiilor distribuite și/sau paralele:

standardizare, securitate, disponibilitate, reutilizare, mentenanță etc.

Page 15: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Ce sunt serviciile Web?

Page 16: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

“A service is an abstract resource that represents a capability of performing tasks that form

a coherent functionality from the point of view of providers entities and requesters entities.”

www.w3.org/TR/ws-gloss/

Page 17: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

“A Web service is a software system designed to support interoperable machine-to-machine

interaction over a network.”

www.w3.org/TR/ws-gloss/

Page 18: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Software oferind o funcționalitate specifică

acces la resurse – Instagram, Pinterest, Slideshare, Vimeoagregare de știri – Feedly, Reddit

cartografiere – Google Maps, Nokia HERE, OpenStreetMapmesagerie instantanee – Snapchat, Telegram, Twilio

procesări – IBM Watson, TensorFlow, Skyttle,…realizare de statistici Web – e.g., Google Analytics

rețele sociale – Facebook Open Graph, Twitterspelling checking – Bing Spell Check, xSpell,…

stocare de date – Amazon S3, Dropbox, OneDrive etc.…

Page 19: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

utilizate – la distanță –de alte aplicații/servicii

Page 20: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Accesate standardizat via Web

adresare de resurse cu URItransfer de date via HTTP

mesaje adoptând formate de date: CSV, JSON, XML,…

Page 21: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Cum am implementa un serviciu?

Page 22: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Implementare standard

recurgerea la servere + framework-uri de aplicații Web

ASP.NET, Django, Node.js, PHP (CodeIgnater, Laravel,…),

Play!, Ruby on Rails,…

Page 23: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web

limbaj de marcare – e.g., HTMLstiluri de prezentare a conținutului – CSS

interactivitate via JavaScript (+biblioteci/framework-uri)

Page 24: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web

cererile sunt capt(ur)ate via formulare+ legături hipertext

Page 25: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web

utilizatorii umani trebuie să interpreteze etichetele și câmpurile de dialog

Page 26: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web

serviciul implementat oferă un răspuns(o reprezentare a unei resurse Web)

uzual, un document HTML al cărui conținute transferat la client conform unui protocol: HTTP(S)

Page 27: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Cum obținem răspunsul pentru a fi (re)folositîn programele noastre?

procesarea datelor din codul HTMLWeb scraping

<div class="ct-cs"><input id="exchange_rate" value="4.4155770975" type="hidden">

<input id="fob.log_input_ct" value="" type="hidden">…<table>…</table></div>

Page 28: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web

Cum obținem răspunsul pentru a fi (re)folositîn programele noastre?

orice modificare în marcajerescrierea programului de preluare a datelor din documentul HTML

???!

Page 29: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web: caracterizare

Serviciile Web fac explicite specificațiile implicite

datele de intrare și răspunsul pot fi specificate (riguros)via diverse maniere de validare

Page 30: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web: caracterizare

Utilizate la interacțiunea dintre aplicații

dinamice

lipsa unei cunoașteri a-priori a interacțiuniicu alte aplicații/servicii Web

Page 31: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web: caracterizare

Puncte finale utilizate pentru procesarea datelor, în manieră publică – eventual, via API-uri deschise

Page 32: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

servicii web: caracterizare

Dezvoltate pe baza platformelor, arhitecturilor, tehnologiilor și limbajelor curente

Page 33: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Există un model arhitectural de dezvoltarea serviciilor la nivel de Web?

Page 34: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Arhitectura orientată spre servicii

SOA – Service Oriented Architecture

Page 35: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Stil arhitectural de proiectare și dezvoltarede aplicații considerate drept servicii

care pot fi invocate de alte aplicații

Page 36: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Paradigmă de dezvoltare a software-uluicare adoptă folosirea de servicii,

oferind funcționalități solicitate de utilizatori

resursele sunt disponibile via o suită de serviciiindependente ale căror implementărinu trebuie să fie cunoscute (black box)

Page 37: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Componentele sistemului în ansambluau un grad mare de independență (de-coupling)

serviciile trebuie proiectate să interacționeze fără a exista dependențe între acestea

Page 38: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Serviciile partajează un contract formal

necesitatea unei descrieri formale a serviciului:operații oferite (interfața serviciului)

maniera de interschimb a datelor (cerere + răspuns)maniera de descoperire (service discoverability)

calitatea unui serviciu (SLA – service-level agreement)

Page 39: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Serviciile pot fi recompuse/orchestrateconform cerințelor sau contextului de exploatare

composable servicesreusable services

Page 40: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soa

Serviciile nu vor depinde de starea comunicării(statelessness)

pentru a efectua o procesare, cantitatea de informațiece trebuie reținută trebuie să fie minimală

Page 41: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

soade la aplicații Web dezvoltate tradițional

la arhitecturi bazate pe servicii

Jay O’Connor (2014)http://tinyurl.com/l62tjab

Page 42: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

exemplu autohton: proiectul ubiGuide – 2014(Ionuț Dănilă & Mihaela Ghimiciu, absolvenți FII)

servicii publice folosite: ABBYY Cloud OCR, AlchemyAPI, Google Places API, YouTube API,…

biblioteci: Flickr.NET, GART (Geo Augmented Reality Toolkit), Hammock, TweetSharp etc.

www.youtube.com/watch?v=wygXE6hQ07c

www.slideshare.net/ionutdanila/ubi-guide

Page 43: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

structura conceptuală stratificată a unei platforme bazate pe servicii Web

protocoale (HTTP, SMTP,…)

servicii de regăsire: UDDI

descrieri de servicii: WSDL

context al serviciului (cine, de ce,…)

servicii de bază (calendar, tranzacții,…)

sist. tradiționale

server(e) backend

API

workflow engine

mașină virtuală

micro-/macro-serv.

ofertant/utilizator de servicii Web

Page 44: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Există o modalitate pragmatică privinddezvoltarea și invocarea serviciilor Web?

Page 45: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

serviciile Web pot fi dezvoltate via SOAP și/sau RESTS. Tilkov, REST: Not an Intro (2013)

speakerdeck.com/stilkov/rest-not-an-intro-1

service interface

service logic

business rules

data access

data

resources

hypermediarepresen-

tations:JSON, XML,…

HTTP

operations

SOAP

XML messages

WS-*

Page 46: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: representational state transfer

Stil arhitectural de dezvoltare a aplicațiilor Webcu focalizare asupra reprezentării datelor

teză de doctorat – Roy Fielding (2000)

Page 47: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Viziune complementară de implementare șiutilizare a serviciilor Web – fără SOAP

SOAP Envelope

SOAP Headerbloc antetbloc antet

SOAP Bodybloc corpbloc corpbloc corpbloc corp

Page 48: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

Page 49: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

resursă Web

utilizator având cont în cadrul unui sistem, blog-ul unei persoane, fotografie, flux de știri, program,…

Page 50: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

reprezentare pe baza unui format de date

textual sau binar

exemple tipice: HTML, JSON, PNG, SVG, PDF etc.

Page 51: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

reprezentare pe baza unui format de date

formatul reprezentării e desemnat de tipuri MIMEtext/html, application/json, application/rdf+xml, image/png

detalii în N.Freed et al., Media Types, 2017www.iana.org/assignments/media-types/media-types.xhtml

Page 52: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

reprezentările aceleași resurse– desemnate de un URI unic – pot fi multiple

reprezentare1

(HTML)reprezentare2

(Atom)

resursa

URI

Page 53: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

fiecare reprezentare a unei resurse are asociat un URL

reprezentare1

(HTML)reprezentare2

(Atom)

resursa

URI

URLURL

Page 54: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Clienții (e.g., navigatoare Web, roboți, player-e etc.) interacționează cu reprezentările resurselor via verbe„accesează”: GET, „modifică”: POST, „șterge”: DELETE,…

reprezentare1

(HTML)reprezentare2

(Atom)

resursa

URI

URLURL

GET POST GET DELETE

Page 55: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Verbele (acțiunile) sunt stipulate de un protocol

Page 56: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HyperText Transfer Protocol

protocol fiabil, de tip cerere/răspuns

port standard de acces: 80

https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html#week2

Page 57: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HTTP/1.1

standard Internet: RFC 2616 (1999)

din 2014, definit de RFC 7230—7235

www.w3.org/Protocols/

un tutorial: www.code-maze.com/http-series/

Page 58: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HTTP/2.0

RFC 7540 (2015)

focalizat asupra performanței

http2.github.io

Page 59: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HTTP/2.0

mesaje binarereutilizarea conexiunii TCP

multiplexarecompresia anteturilor – HPACK

trimiterea mesajelor spre client (server push)

implementări: github.com/http2/http2-spec/wiki/Implementations

Page 60: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

GET

accesează (preia) o reprezentare a unei resurse

nu conduce la modificarea stării serverului – safe

idempotentă – cereri identice vor conduce la oferireaaceluiași răspuns (aceeași reprezentare)

Page 61: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HEAD

similară cu GET, dar furnizează doar meta-date(nu oferă reprezentarea propriu-zisă)

e.g., ultima actualizare, lungimea conținutului,…

Page 62: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

PUT

înlocuiește (actualizează) o reprezentare de resursă saueventual creează o resursă la nivel de server Web

(al cărei URI e deja cunoscut)

uzual, returnează URI-ul resursei

nu e considerată safe, dar este idempotentă

Page 63: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

PATCH

permite actualizarea parțială a unei reprezentări a unei resurse (PUT nu oferă o asemenea facilitate)

nu este safe și nici idempotentă

Page 64: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

POST

creează o resursă (uzual, subordonată altei resurse)

opțional, pot fi realizate procesări suplimentare

nu este nici safe, nici idempotentă

clientul nu cunoaște a-prioricare va fi URI-ul resursei ce va fi create

Page 65: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

DELETE

șterge (elimină) o resursă desemnată de un URI

este idempotentă

Page 66: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

OPTIONS

permite clientului să determine diverse cerințe privitoare la o resursă (e.g., dacă o resursă poate fi ștearsă)

sau facilitățile expuse de un server (de exemplu, suportul oferit de un proxy)

Page 67: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

GET /sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org

&query=SELECT+DISTINCT+%3Fclass%0D%0A

WHERE+%7B%0D%0A++%3Fclass+a+owl%3AClass%0D%0A

%7D+LIMIT+7&format=application%2Fjson&timeout=30000 HTTP/1.1

Host: dbpedia.org

User-Agent: Mozilla/5.0 … Gecko/20100101 …

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en,en-GB;q=0.5

Accept-Encoding: gzip, deflate

DNT: 1

Referer: http://dbpedia.org/sparql

Connection: keep-alive

URL encoding

câmpuri-antet și valorile lor

un mesaj HTTP de tip cerere (request) trimis de client (uzual, un browser Web) spre server

aici, o cerere încapsulând o interogare SPARQL către DBpedia

Page 68: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

HTTP/1.1 200 OK

Date: Fri, 06 Oct 2017 07:03:52 GMT

Content-Type: application/json

Content-Length: 691

Connection: keep-alive

Server: Virtuoso/07.20.3224 (Linux) i686-generic-linux-glibc212-64

X-SPARQL-default-graph: http://dbpedia.org

Expires: Fri, 13 Oct 2017 07:03:52 GMT

Cache-Control: max-age=604800

{ "head": { "link": [], "vars": ["class"] },

"results": { "distinct": false, "ordered": true, "bindings": [

{ "class": { "type": "uri",

"value": "http://dbpedia.org/ontology/Place" }},… ]

} }

un mesaj HTTP de tip răspuns (response) de la serveraici, în format JSON

tipul MIME al reprezentării oferite

câmp-antet nestandardizat

met

a-d

ate

con

țin

ut

(dat

e)

Page 69: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Orice accesare a unei reprezentăriplasează aplicația – ori clientul Web – într-o starece va fi schimbată în urma unui transfer de date

(accesarea altei reprezentări)

Page 70: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

resursa1

reprezentare1

(HTML)

http://blog.info/

resursa2

reprezentare2

(HTML)

http://blog.info/mesaj

resursa3

reprezentare3

(HTML)

http://blog.info/mesaj/edit

resursa4

reprezentare4

(Atom)

http://blog.info/stiri.xml

GET

GET

POST

Page 71: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

resursa1

reprezentare1

(HTML)

http://blog.info/

resursa2

reprezentare2

(HTML)

http://blog.info/mesaj

resursa3

reprezentare3

(HTML)

http://blog.info/mesaj/edit

resursa4

reprezentare4

(Atom)

http://blog.info/stiri.xml

GET

GET

POST

HATEOAS (Hypermedia As The Engine Of Application State)

Page 72: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Transferul se realizează prin protocolul HTTP

Reprezentarea este modelată conform unui format– e.g., JSON sau XML – și

indicată prin tipuri MIME (media types)

Adresabilitatea se rezolvă via URI

Page 73: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Aplicațiile care invocă funcționalități (servicii)consumă reprezentări de resurse – în stilul pull

Page 74: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Fiecare cerere este considerată independentă,fără a se lua în considerație contextul

stateless server

Page 75: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Reprezentările de resurse pot fi stocate temporar

caching

Page 76: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

stat

eles

s se

rver

client

cache

client

cache

adaptare după B. Mulloy (2012)

Page 77: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

stat

eles

s se

rver

client

cache

client

cache

adaptare după B. Mulloy (2012)

fiecare cerere trebuie să conțină toateinformațiile necesare procesării

Page 78: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

stat

eles

s se

rver

client

cache

client

cache

adaptare după B. Mulloy (2012)

contextul activitățilornu-i stocat de server

Page 79: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

stat

eles

s se

rver

client

cache

client

cache

adaptare după B. Mulloy (2012)

clientul are dreptul săreutilizeze datele recepționate

Page 80: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Aplicația Web dezvoltată va fi stratificată

layered system

Page 81: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

Page 82: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

fiecare strat oferăservicii stratelor

vecine

Page 83: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

un strat nu poate„vedea” strateneînvecinate

Page 84: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

stratele pot încapsula(„ascunde”) sisteme

tradiționale – black box

Page 85: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

are rol în asigurareaperformanței/

fiabilității

Page 86: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: exemplu

Serviciu pentru managementul adreselor Web favorite(bookmark-uri), cu posibilitatea atașării de termeni de conținut (tag-uri) și comentarii

social bookmarking

abordări similare: Delicious, Digg, Pocket, Reddit etc.

Page 87: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: exemplu

Serviciu pentru managementul adreselor Web favorite(bookmark-uri), cu posibilitatea atașării de termeni de conținut (tag-uri) și comentarii

funcționalitate de bază: listarea tuturor bookmark-urilor (eventual, filtrate după diverse criterii)

managementul bookmark-urilor:adăugare, editare, ștergere, partajare

Page 88: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Resursa URL Metoda Reprezentare

Bookmark /bookmarks/{hash} GET application/bookmark+xml

Bookmark /bookmarks/{hash} PUT application/bookmark+xml

Bookmark /bookmarks/{hash} DELETE

Lista de adrese

/bookmarks GET application/atom+xml

Lista de utilizatori

/users GET application/atom+xml

Lista detag-uri

/tags GET application/atom+xml

Paginaprincipală

/ GET application/xml

Page 89: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

GET /bookmarks200 OKContent-type: application/atom+xml

<?xml version="1.0"?><feed xmlns="http://www.w3.org/2005/Atom">

<title>Bookmarks</title><entry>

<title>O resursă interesantă</title><link href="/bookmarks/a211528f…bdcf"/>

<summary>http://undeva.info/o-resursa-interesanta

</summary></entry>

<!-- eventual, alte elemente <entry>… --></feed>

răspuns XML (Atom)oferit de serviciu

obținereabookmark-urilor

digest – hash (SHA-1, SHA-3,…)

Page 90: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

GET /bookmarks/a211528f…bdcf200 OKContent-type: application/bookmark+xml

<bookmark><title>O resursă interesantă</title><url>http://undeva.info/o-resursa-interesanta</url><user href="/users/tux">tux</user><tags>

<tag href="/tags/interesting">interesting</tag><tag href="/tags/penguin">penguin</tag>

</tags></bookmark>

preluarea unui bookmark:răspunsul XML oferit de serviciul Web

Page 91: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

POST /bookmarksContent-type: application/bookmark+xml…201 CreatedLocation: /bookmarks/a211528f…bdcf

PUT /bookmarks/a211528f…bdcfContent-type: application/bookmark+xml…200 OK

creareaunui bookmark

înlocuireaunui bookmark

Page 92: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Resursele se denumesc folosind URI-uri (URL-uri)

Reprezentările sunt interconectate prin URL-uri

Pot exista intermediari (proxy, cache, porți)între clienți și resurseperformanță, securitate,...

Transferul de date poate fi și asincron – stil Ajax/Comet

Page 93: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

coO resursă poate avea asociate reprezentărice pot fi accesate/alterate via operații HTTP

CRUD – Create, Retrieve, Update, Delete

Operation SQL HTTP

Create INSERT PUT POST

Read (Retrieve) SELECT GET

Update (Modify) UPDATE PUT POST PATCH

Delete (Destroy) DELETE DELETE

Page 94: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Putem adopta o metodologie vizânddezvoltarea de servicii Web (API-uri)

aliniate paradigmei REST?

Page 95: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Divizarea datelor problemei în categorii

clase tipice de resurse:Utilizatori

Documente – alternative: Fotografii, Produse, Software,…Metadate – e.g., Comentarii, Formate, Locatii, Platforme etc.

Page 96: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Divizarea datelor problemei în categorii

cazuri concrete:SoundCloud – apigee.com/resources/soundcloud

Tracks Users Me Playlists Groups Comments

StackExchange – apigee.com/resources/stackexchange

Answers Badges Comments Questions Revisions Tags Users

World of Warcraft – apigee.com/resources/wow

Characters Guilds Realms Auctions Items

Page 97: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

„Numirea” prin URI a fiecărei resurse

exemplificări:

http://aplicatie.info/Utilizatori/tux

http://aplicatie.info/Documente/pinguini-cu-mere-albastre

Page 98: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

„Numirea” prin URI a fiecărei resurse

cazuri concrete:accesarea datelor despre o producție cinematografică

http://www.imdb.com/title/tt0401383/

acces la prezentările Slideshare ale utilizatorului busaco

http://www.slideshare.net/busaco/presentations

obținerea listei celor ce urmăresc un utilizator autentificathttp://twitter.com/followers

Page 99: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Organizarea resurselor

aceste resurse (object instances) pot fi organizate în colecții (collections) sau depozite (stores)

a se consulta D. Denicola, Creating Truly RESTful APIs (2013)www.slideshare.net/domenicdenicola/creating-truly-res-tful-apis

Page 100: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Organizarea resurselor

colecție

catalog de resurse gestionate de serverclienții pot propune alterarea colecției

serverul decide care-i rezultatul unei operații

exemple (GitHub): /orgs/openstack/repos, /orgs/openstack/events

Page 101: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Organizarea resurselor

depozit

„rezervă” de resurse gestionată de client(inclusiv filtrare, sortare, paginare, accesare meta-date,…)

exemplu (GitHub): /users/openstack/repos?page=2&per_page=3

Page 102: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Proiectarea reprezentării(lor) acceptatece pot fi trimise de aplicația client

și reprezentării(lor) întoarse spre client

de considerat formate standardHTML, Atom, CSV, JSON(-LD), XML

Page 103: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Integrarea resurselorvia legături hipertext + formulare

exemplificare (GitHub):“All resources may have one or more *_url properties

linking to other resources. These are meant to provide explicit URLs so that proper API clients don’t need

to construct URLs on their own.”https://developer.github.com/v3/#hypermedia

Page 104: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Crearea de studii de caz

specificarea condițiilor de eroare și/sau de excepție,inclusiv aspecte privind controlul versiunilor API-ului

Page 105: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

StrongLoop API (IBM)operații cu resurse specifice – aici Users

Page 106: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

StrongLoop APItestarea interactivă a API-ului

strongloop.com/strongblog/node-js-rest-api-openshift-redhat/

Page 107: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Aspecte practice de interes pentru dezvoltatori?

Page 108: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

URL-urile desemnând resurse (concepte) de interes trebuie să fie simple și intuitive

utilizarea substantivelor pentru fiecare „lucru”

colecții de resurse (uzual, la plural)/students

identificatori unici pentru membrii unei colecții/students/tuxy (concret) vs. /students/69 (abstract)

Page 109: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

URL-urile desemnând resurse (concepte) de interes trebuie să fie simple și intuitive

structura ierarhică a URL-urilor reprezintă ierarhia resurselor din cadrul domeniului modelat

exemplu (GitHub):/repos/Microsoft/PTVS/commits/e95e15…7a3bf91baff88

Page 110: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Folosirea verbelor (metodelor) HTTP pentru efectuareade operații asupra unor (colecții de) resurse

resursa(URI)

POST (creează)

GET (accesează)

PUT (actualizează)

DELETE (șterge)

/studentscreează

un student noulistează studenții

existențiactualizează

un set de studențișterge toțistudenții

/students/69

(un URL dejaexistent)

eroare 🙁oferă date

despre student

dacă există, actualizează,altfel eroare

ștergestudentulrespectiv

Page 111: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Tratarea erorilor

folosirea codurilor de stare HTTP – httpstatuses.com

exemple tipice:200 OK, 204 No Content, 206 Partial Content

303 See Other, 304 Not Modified400 Bad Request, 401 Unauthorized, 403 Forbidden,

404 Not Found, 405 Method Not Allowed500 Internal Server Error, 503 Service Unavailable

Page 112: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Tratarea erorilor

mesajele returnate trebuie să includă informații utile

exemplu (GitHub): cod de stare HTTP întors – 404

{

"message": "Not Found",

"documentation_url": "https://developer.github.com/v3"

}

Page 113: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Controlul versiunilor API-ului dezvoltat

“Never release an API without a versionand make the version mandatory.” (Mulloy, 2012)

Page 114: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Controlul versiunilor API-ului dezvoltat

“Never release an API without a versionand make the version mandatory.” (Mulloy, 2012)

specificarea versiuniiîn antetul HTTP vs. în cadrul URL-ului

https://api.foursquare.com/v2/venues/explore

https://api.twitter.com/1.1/statuses/

http://world.openfoodfacts.org/api/v0/product/0646809521249

Page 115: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Paginarea și oferirea de răspunsuri parțiale

de obicei, se folosesc parametri precum limit și offset

/students?limit=33&offset=54

filtrele opționale pot fi delimitate de virgulă/students?fields=name,age,year,email

Page 116: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

interogări interactive asupra API-ului oferit de The New York Times

developer.nytimes.com

Page 117: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

răspuns în format JSON

diverse (meta-)date oferite de serverul Web

Page 118: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Eterogenitatea formatelor reprezentărilor întoarse

indicarea formatului în URL via un parametru opțional?alt=json (Google Data)

specificarea formatului acceptat în antetul cererii HTTPAccept: application/json (Digg)

precizarea formatului în numele resursei solicitate/venue.json (Foursquare)

Page 119: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Utilizarea subdomeniilor pentru API-uri diferiteale aceluiași ofertant de servicii

exemplificare:search.twitter.com

stream.twitter.com

api.twitter.com

Page 120: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Cum pot fi accesatereprezentări de resurse Web prin REST?

Page 121: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Biblioteci/API-uri implementând HTTP

libcURL (C; portări Perl, PHP, Ruby,…): curl.haxx.se/libcurl/

Apache HttpComponents (Java): http://hc.apache.org/

http (pachet Go): http://golang.org/pkg/net/http/

httplib (Python 2) + http.client (Python 3)neon (bibliotecă C): http://www.webdav.org/neon/

rest (Node.js): https://www.npmjs.org/package/rest

RestKit (macOS + iOS): https://github.com/RestKit/RestKit

RestSharp (pentru .NET): http://restsharp.org/

Page 122: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz: accesarea datelor publice privitoare la universul fictiv „Războiul stelelor”

colecții de resurse: Planets, Spaceships, Vehicles, People, Films, Species

fiecare categorie de resurse are proprietăți specifice e.g., orice instanță de Films include title, director, characters,…

Page 123: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

detalii la https://swapi.co/documentation

{

"name": "Leia Organa",

"height": "150",

"mass": "49",

"hair_color": "brown",

"skin_color": "light",

"eye_color": "brown",

"birth_year": "19BBY",

"gender": "female",

"homeworld": "http://swapi.co/api/planets/2/",

"films": [ "http://swapi.co/api/films/6/",… ],

"species": [ "http://swapi.co/api/species/1/" ],

"vehicles": [

"http://swapi.co/api/vehicles/30/" ],

"starships": [ ],

"created": "2014-12-10T15:20:09.791000Z",

"edited": "2014-12-20T21:17:50.315000Z",

"url": "http://swapi.co/api/people/5/"

}

răspuns disponibil în format

JSON

Page 124: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Biblioteci/API-uri implementând HTTP

permit dezvoltarea de aplicații desktop, mobile etc.

suport pentru crearea de aplicatii hibride (mash-up-uri) la nivel de server

nu funcționează în navigatorul Web

atenție la problemele de securitate ce pot apărea!

Page 125: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Navigatoarele Web actuale

nu necesită un API distinct pentru acces via HTTP

disponibilitate pe orice platformă

suport pentru REST prin obiectul XMLHttpRequest (Ajax),Fetch API (HTML5) ori WebSocket API (HTML5)

Page 126: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – exemplificări

ASP.NET MVC + Web API (C# et al.): www.asp.net/web-api

APIconnect, Express, Restify, webservice (Node.js)https://nodejsmodules.org/tags/rest

JAX-RS – Java Architecture for RESTful Serviceshttps://jax-rs-spec.java.net/

Restlet (Java): https://restlet.com/projects/restlet-framework/

Cornice, Django, Eve, Pecan (Python)Grape, RESTRack, Ruby on Rails (Ruby)

www.ruby-toolbox.com/categories/API_Builders

Fat-Free, Slim (micro-framework-uri PHP)

Page 127: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Servicii publice ce pot fi consumate via REST – exemple:500px, AIDSInfo, Amazon, Basecamp, Blip.tv, DBpedia,

eBay, Ericsson, Facebook, GitHub, Google, LinkedIn,Mastercard, Nodejitsu, Pipl, Quora, SlideShare, Tumblr,…

de explorat ProgrammableWebwww.programmableweb.com/category/all/apis

Page 128: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

În cazul aplicațiilor Web sociale,putea utiliza servicii Web

pentru autorizare și autentificare?

Page 129: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(1) înregistrarea aplicației conceputevia situl entității furnizoare a serviciului

cheie de acces – API key, consumer key, developer key

Page 130: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(2) pe baza acestei chei, aplicația se va putea autentificapentru a putea fi autorizată să acceseze serviciul

Page 131: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(2) pe baza acestei chei, aplicația se va putea autentificapentru a putea fi autorizată să acceseze serviciul

pot fi impuse diverse politici de acces (permissions):doar consultare (read), posibilitatea editării etc.

a se studia și inițiativa Open Credentials: opencreds.org

Page 132: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(3) autentificarea și autorizarea aplicațieiau loc cu acordul utilizatorului

Page 133: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(3) autentificarea și autorizarea aplicațieiau loc cu acordul utilizatorului

dacă utilizatorul nu este autentificat, i se vor solicitainformațiile de autentificare (e.g., nume + parola)

– eventual, folosind 2FA (Two Factor Auth) –,apoi va putea autoriza aplicația să aibă acces la date

via serviciul Web furnizat

Page 134: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

autentificare multi-factor (2FA): twofactorauth.org

Page 135: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(4) aplicația apelează funcționalitățile oferite de serviciupentru preluarea/modificarea datelor de interes,

conform politicilor de acces

Page 136: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(4) aplicația apelează funcționalitățile oferite de serviciu

sesiunea curentă va fi stabilită și menținutăpe baza unor informații de autentificare (auth tokens)

Page 137: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – oauth

Autorizarea unei aplicații să acceseze date private într-un mod standardizat – pe baza tehnologiilor

Web actuale – se poate realiza via OAuth

Page 138: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – oauth

Autorizarea unei aplicații să acceseze date private într-un mod standardizat – pe baza tehnologiilor

Web actuale – se poate realiza via OAuth

protocol deschis – RFC 6749

OAuth 1.0 (2010), OAuth 2.0 (2012)

http://oauth.net/2/

Page 139: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

securitatea datelor

procesele de autorizare a accesului la o resursă Webconform Dominik Mengelt (2013)

Page 140: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

securitatea datelor

exemplu concret – Facebook: autorizare cu diverse permisiuni – e.g., age_range, email (acces la adresa de e-mail a unui utilizator),

public_profile, user_birthday, user_hometown, user_friends, user_likes, user_photos, rsvp_event și altele

developers.facebook.com/docs/facebook-login/permissions/v2.0

Page 141: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – oauth

Biblioteci (server și/sau client) disponibile pentru C, C++, Go, Erlang, Java, JavaScript, Objective-C, .NET,

Perl, PHP, Python, Ruby, Swift,…http://oauth.net/code/

Servicii proxy de autentificare/autorizare prin OAuth:Auth0 – auth0.com

Hydra – github.com/ory/hydra

OAuth – oauth.io

Okta – developer.okta.com

Page 142: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – oauth

exemplificare: hello.js – soluție modulară, la nivel de client, vizând autentificarea și

accesarea serviciilor Web via RESTadodson.com/hello.js/

Page 143: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – oauth

Autentificare via servicii Web specifice – exemple:

GitHub – developer.github.com/v3/oauth/

Google – developers.google.com/identity/protocols/OAuth2

LinkedIn – developer.linkedin.com/docs/oauth2

Live Connect (Microsoft) – http://tinyurl.com/zztr97h

Pinterest – developers.pinterest.com/docs/api/overview/

Stack Exchange – api.stackexchange.com/docs/authentication

Twitter – dev.twitter.com/oauth

WordPress – developer.wordpress.com/docs/oauth2/

Page 144: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – openid

de experimentat accesul la diverse date (e.g., persoane de contact via Google Contacts API) pe baza OAuth 2.0 Playground

developers.google.com/oauthplayground/

Page 145: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – openid

OpenID

manieră descentralizată de autentificare a utilizatoruluila nivel de Web pe baza paradigmei SSO – Single Sign On

utilizatorul poate demonstra că deține un URL specificmenit a-l identifica on-line via un ofertant (serviciu)

de identitate digitală (identity provider)e.g., folosind o aplicație Web socială

Page 146: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – openid

Fiecare identitate a unui utilizator e desemnată de un URL (stabilit de identity provider)

exemplu: steamcommunity.com/openid/id/steamid

pentru a-și confirma identitatea,utilizatorul va trebui să se autentifice:

nume de cont + parolă, smart card, date biometrice,…

Page 147: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – openid

OpenID

biblioteci open source disponibilepentru C, C#, Java, JavaScript, PHP, Python, Ruby,…

http://openid.net/developers/libraries/

Page 148: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – openid

OpenID Connect

oferă un nivel vizând identitatea utilizatorului (identity layer) pe baza protocolului OAuth 2

recurge la formatul JWT (JSON Web Token)standardizat în RFC 7519 (2015)

openid.net/connect/

Page 149: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare – openid

OpenID Connect

biblioteci open source disponibile pentru C, C#, Java, JavaScript, PHP, Python, Ruby, TypeScript,…

openid.net/developers/libraries/

suport oferit de serverul Web:mod_auth_openidc – modul Apachegithub.com/pingidentity/mod_auth_openidc

L. Crilly, Authenticating API Clients with JWT (2016)www.nginx.com/blog/authenticating-api-clients-jwt-nginx-plus/

Page 150: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Mesaje – de autentificare sau interschimb de informații –

vehiculate în format JWT

resurse de interes + instrumente oferite de jwt.io

jeton JWT

Page 151: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rezumat

⤄aplicații orientate spre servicii Web în stilul REST

aspecte vizând autorizarea și autentificarea

Page 152: Dezvoltarea aplicațiilor Web

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

episodul viitor: arhitectura aplicațiilor Webde la API-uri și mashup-uri la proiectare arhitecturală


Recommended