Post on 07-Feb-2016
description
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– Molt overhead– Fitxer de definició WSDL
• No tant API com la base de SOA– Service Oriented Architecture
• 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 nom nostre a la part que nosaltres autoritzem d’un altre, sense passar-li l’username i password.
• Exemple: Autoritzo a una aplicació de Facebook a que accedeixi a la meva llista d’amics, pero no al meu aniversari
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 usuari utilitza l’aplicació…– La primera vegada ha d’accedir a una pàgina de
Facebook d’autorització– Un cop fet aquest pas, l’aplicació ja pot accedir en
nom nostre a Facebook
Molt bé i aixo com es fa?
• L’aplicació demana un “Request Token”• Fem una redirecció amb el token perque el
proveidor pugui “autoritzar” el token, passant un callback de tornada
• El callback intercanvia el “Request Token” (ja autoritzat) per un “Access Token” al proveidor
• Guardem el Access Token a la nostra aplicació associat a l’usuari que ha entrat
Oauth 2.0 vs 1.0
• OAuth 1.0 signa les peticions utilitzant un secret a part del token. El secret mai s’envia a les peticions.
• Oauth 2.0 es mes simple i permet més escenaris– Aplicacions no web– Aplicacions pròpies en les que podem posar
username i password de forma segura
Exemple al Racó
• https://raco.fib.upc.edu/api• Java• Aplicació web• Llibreria Signpost
• Signpost ens permet signar les peticions Oauth 1.0 de forma simple
• Permet obtenir i validar els tokens a partir de 3 url (request, access i authorize)
OAuth 1.0 + App Android
• El callback té un format especial (raco://raco) <intent-filter> <action android:name="android.intent.action.VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="android.intent.category.BROWSABLE"></category> <data android:host="raco" android:scheme="raco"></data> </intent-filter>
• Les peticions s’han de fer de forma asíncrona, utilitzant AsyncTaskClick al login -> Demana token -> Mostra pantalla d’acceptació -> Retorna a la app i demana accés token -> Demana URL amb OAuth