Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
REST avanzado
Sistemas de Informacin Orientados a Servicios
RODRIGO SANTAMARA
OAuth
Flask
REST avanzado
Objetivo
3
OAuth
4
DEFINICIN
CLAVE Y PALABRA SECRETA
COMPOSICIN Y CODIFICACIN
TOKEN DE ACCESO
USO
protocolo
Sin embargo, tiene problemas importantes de
seguridad que deben ser solucionados por el
usuario
http://hueniverse.com/2012/07/26/oauth-2-0-and-theroad-to-hell/
Artculo
2.
3.
4.
Obteniendo autorizacin
8
1proveedor.com/oauth/authorize?
credentials
cliente.com/oauth_accept
key+password
2
proveedor.com/oauth/access_token?
cliente.com
proveedor.com
credentials
cliente.com/oauth_accept
access token
yes
proveedor.com/cualquier/peticin?
access token
cliente
https://dev.twitter.com/docs/auth/obtaining-access-tokens
1.
2.
Siguientes pasos
Nivel de usuario:
https://dev.twitter.com/docs/auth/tokens-devtwittercom
2) Componer y codificar
10
codificarse en Base64
Por qu Base64?
Ejemplo
Clave:
xvz1evFS4wEEPTGEFPHBog
Palabra secreta: L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
Composicin:
xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg
Codificacin
secreta
-k hace la conexin SSL sin certificado
{"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}
Ejemplo (curl):
OAuth y el mundo
13
http://en.wikipedia.org/wiki/OAuth#List_of_OAuth_service_providers
Flask
14
INTRODUCCIN
GET, POST, PUT, DELETE
CORS
SUBIDA DE ARCHIVOS
Flask
15
Instalacin:
$pip
install flask
Aprenderemos:
http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask
http://mortoray.com/2014/04/09/allowing-unlimited-access-with-cors/
#!flask/bin/python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug = True)
1) Instanciamos una
aplicacin de Flask
2) Definimos un servicio
3) Ejecutamos la aplicacin
1) Permisos de ejecucin
$ chmod a+x app.py
2) Lanzamos la aplicacin
$ ./app.py
* Running on http://127.0.0.1:5000/
* Restarting with reloader
cualquier mensaje adicional (peticiones
aceptadas, errores, etc.) aparecer aqu
Testeo:
Navegador web: http://localhost:5000
Consola:
curl i http://localhost:5000
incluye la cabecera HTTP en la
salida, a modo informativo
3) Tipo de peticin
Podemos usar variables globales (la
implementacin de REST en Flask es
con estado)
3) request.args es un
diccionario con todos los
parmetros pasados a la
URL
Flask: POST
21
1) Soporte para peticiones
2) tipo de mtodo: POST
Flask: POST
22
Opciones de curl:
-H para aadir cabecera HTTP de la peticin (p. ej. el
contenido es de tipo aplicacin en formato JSON)
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
Flask: PUT
23
Flask: DELETE
24
CORS
25
CORS: Ejemplo
26
http://www.socialBooks.com
Access-Control-Allow-Origin: http://www.socialBooks.com
Tambin
Access-Control-Allow-Origin: *
CORS y Flask
27
Subida de archivos
28
Barras de progreso
33
en distintos lenguajes
Plupload (HTML5, Java, Flash)
SWFUpload (Flash)
JumpLoader (Java)
Resumen
34
OAuth es un mtodo de
Consiste en un intercambio
Referencias
35
2006.
http://gcn.com/Articles/2006/07/12/Grady-Booch--Avoid-the-stupid-SOA-approach.aspx?Page=1
http://xml.coverpages.org/SOA-RM-ReferenceModel200602-CD.pdf
36