110 likes | 269 Views
API Racó i OAuth. API. Tradicionalment , les API son els mètodes que podem cridar en una llibreria o entorn Aquí estem parlant de API web Poder fer servir una aplicació o obtenir dades d’una aplicació des d’una altra aplicació. SOAP. Primera opció Farragosa XML
E N D
API • Tradicionalment, les API son elsmètodes que podem cridar en una llibreria o entorn • Aquí estemparlant de API web • Poder fer servir una aplicació o obtenirdadesd’unaaplicació des d’unaaltraaplicació
SOAP • Primera opció • Farragosa • XML • Moltoverhead • Fitxer de definició WSDL • No tant API com la base de SOA • ServiceOrientedArchitecture • A la UPC: Bus SOA
REST • Idea de que la URL es un nom i les operacions son les que permet HTTP • GET /usuaris • GET /usuari/jaume • POST /usuaris {JSON} • PUT /usuari/jaumem {JSON} • DELETE /usuari/jaume
REST “relaxat” • No apte per puristes • Algo més simple que SOAP, basat en JSON o en XML però simple • Es pot cridar facilment des de Javascript en crides AJAX des del navegador • Cuidado! no es poden fer crides AJAX en Javascript a un servidor diferent del que ha servit la pàgina
OAuth • Permet que un sistema accedeixi en nomnostre a la part que nosaltresautoritzemd’unaltre, sensepassar-lil’username i password. • Exemple: Autoritzo a una aplicació de Facebook a que accedeixi a la mevallistad’amics, pero no al meuaniversari
Conceptes • L’aplicació externa s’ha de registrar. • Facebook ha de donar permís a l’aplicació i li dona unes claus que la identifiquen • Quan un usuariutilitzal’aplicació… • La primera vegada ha d’accedir a una pàgina de Facebookd’autorització • Un copfetaquestpas, l’aplicaciójapotaccedir en nomnostre a Facebook
Moltbé i aixocom es fa? • L’aplicaciódemana un “RequestToken” • Fem una redireccióamb el tokenperque el proveidorpugui “autoritzar” el token, passant un callback de tornada • El callbackintercanvia el “RequestToken” (jaautoritzat) per un “Access Token” al proveidor • Guardem el Access Token a la nostraaplicacióassociat a l’usuari que ha entrat
Oauth 2.0 vs 1.0 • OAuth 1.0 signa les peticionsutilitzantun secret a part del token. El secretmais’envia a les peticions. • Oauth 2.0 es mes simple i permetmésescenaris • Aplicacions no web • Aplicacionspròpies en les que podem posar username i password de forma segura
Exemple al Racó • https://raco.fib.upc.edu/api • Java • Aplicació web • LlibreriaSignpost • Signpostenspermet signar les peticionsOauth 1.0 de forma simple • Permetobtenir i validar elstokens a partir de 3 url (request, access i authorize)
OAuth 1.0 + AppAndroid • El callback té un format especial (raco://raco) <intent-filter> <actionandroid:name="android.intent.action.VIEW"></action> <categoryandroid:name="android.intent.category.DEFAULT"></category> <categoryandroid:name="android.intent.category.BROWSABLE"></category> <data android:host="raco" android:scheme="raco"></data> </intent-filter> • Les peticionss’han de fer de forma asíncrona, utilitzantAsyncTask Click al login -> Demanatoken -> Mostra pantalla d’acceptació -> Retorna a la app i demanaaccéstoken -> Demana URL ambOAuth