Consumo de Servicios RESTful (III)

Documentos relacionados
Consumo de Servicios RESTful (II)

Modelado de Arquitectura Software

Integración de datos

BLOQUE II: Integración de Sistemas Software. Integración Web. Arquitectura e Integración de Sistemas Software Curso 2012/2013.

Patrones de Integración

Desarrollo de Aplicaciones con GWT (I)

Arquitectura Web. Arquitectura e Integración de Sistemas Software Curso 2012/2013. Índice

Introducción a la Integración Software

Pruebas de Integración

Introducción a las Aplicaciones Web

Introducción a la Arquitectura del Software

FICHA PÚBLICA DEL PROYECTO

Introducción a GAM. Ahora queremos agregarle Seguridad a la aplicación, tanto a la parte web como a la de Smart Devices. Page1

Firma digital de actas académicas

Requisitos configuración de seguridad puestos cliente Rich Web

GUÍA DE SOPORTE A USUARIOS Preguntas Frecuentes.

Computadores y Comunicaciones. Práctica de Laboratorio: Configuración de un cliente de correo electrónico

Nueva pestaña de Renfe en Amadeus Selling Platform Preguntas frecuentes

Guía de usuario Plataforma de alojamiento web

CÓMO CREAR UNA BASE DE DATOS MySQL PARA PRACTICAR CON PHP. ACCESO AL GESTOR phpmyadmin. (CU00839B)

Arquitectura e Integración de Sistemas Software. Proyecto: Gestión de Almacenes de Libros

Shell Script de instalación y configuración para el servicio DNS en CentOS v5.x. Manual de instrucciones.

Guía básica de implementación

Manual de ayuda para la Gestión de las Convocatorias de Ayudas y Becas de Libros de texto y Material didáctico

Cómo publicar videos en YouTube y Google Video

Cálculo de Precio por Kilo WhitePaper Agosto de 2007

Sencillo manual de uso de Facebook

Manual de instalación y configuración de Plataforma de Participación Ciudadana (PAC) Versión 3.0

LabVIEW en la Enseñanza del Control: Laboratorios Virtuales y Remotos de Automática

GESTOR DE RESERVAS PARA UNA AGENCIA DE VIAJE

Esquema de los Sistemas y Aplicaciones. CleanTec Esquema de los Sistemas y Aplicaciones cleantecsoftware.com - Tlf:

Manual de usuario Módulo web de captura de datos de primas ganaderas. Fecha: 02/08/2005 Página: Sacrificios Nacimiento...

INSTRUCCIONES DE USO DE LA BASE DE DATOS DE EXPERTOS EN SEGURIDAD ALIMENTARIA Y NUTRICIÓN

Sistema de Antecedentes Docentes

Framework Atlas. Introducción. Unidad de Arquitectura y Soporte de Aplicaciones Área de Aplicaciones Especiales y Arquitectura de Software DIAS

Factura electrónica. Firma electrónica de documentos y Factura electrónica

Programación Android - Completo

Fiddler: Manual de usuario

Versión 2.0 (Febrero 2014)

Resolución provisional de reconocimiento de créditos para el título de Grado en Ingeniería Informática

La ayuda y referencia de Visual Basic y otros recursos como herramientas para los programadores. (CU00306A)

Manual para solicitud de instalación de sistemas de videovigilancia a través de la Oficina Virtual. Versión 1

Manual para la configuración del correo electrónico en Outlook 2010

Guía rápida de instalación de i-card Loyalty 5.0. Contenido

Materia Prima WhitePaper Noviembre de 2006

Desarrollo y servicios web

Especialista TIC en Programación de Páginas Web con ASP.NET 4 en C Sharp + Javascript (Cliente + Servidor) Informática y Programación

Cómo crear el objeto Punto en Eduloc

Microsoft Visual Studio.NET 2010 desarrollador y diseñador. Fabricante: Microsoft Grupo: Desarrollo Subgrupo: Microsoft Visual

DaVinciTEXTIL. Codificación de artículos

Tema 5. APIs y Servicios web

Tutorial básico de LOOMIO

CURSOS DE VERANO 2014

Preguntas más frecuentes:

Sistema de Información de Recursos Humanos

Aplicación para la actualización del OS

1. Requisitos previos para establecer conexión con la red eduroam

2.2 Campos de Aplicación de XML

Framework Atlas. Introducción. Unidad de Arquitectura y Soporte de Aplicaciones Área de Aplicaciones Especiales y Arquitectura de Software DIAS

Software de gestión empresarial ERP CRM SGA MRP. ERP para la distribución farmacéutica

Guión de prácticas de la asignatura de Laboratorio de PCs. PRÁCTICA 2: MONTAJE DE UNA RED DE ÁREA LOCAL

MECANISMOS DE CONTROL INCLUIDOS EN SEVEN STARS

MANUAL DE LA APLICACIÓN ICOLEGIA 4.0

Manual Instalación de Impresoras Locales en Guadalinex 9.04

Logística - Compras. Gestor de Pedidos Sin Tratamiento Logístico MANUAL DE USUARIO. (Versión , Mayo de 2012)

MANUAL DE USO ÁREA RESTRINGIDA DE ASOCIADOS

CREACIÓN DE SOBRES, ETIQUETAS Y CARTAS PERSONALES

PRUEBA TIENDA MAGENTO

hidra tpv manual rápido

Notificación de acciones correctivas de seguridad en campo europeas (NIS)

Manual de Usuario de la Página Web del SGC

Ayuda. Mensajes del sistema. Iniciar/Cerrar sesión. Iconos del panel de control

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

Manual para la configuración del correo electrónico en Outlook 2003

Objetivos y Temario CURSO SQL SERVER 2012

Microsoft Windows XP SP3

PROCESO DE ALTA EN EL PORTAL DEL PROVEEDOR DEL AYUNTAMIENTO DE OVIEDO

DESCRIPCIÓN DE TECNOLOGÍAS A UTILIZAR

Usuarios y grupos ÍNDICE

MANUAL DE USO E INSTALACIÓN ADT GO

Tabla de contenido. P á g i n a 2

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Configuración de Moodle con usuarios de LDAP

Manual de configuración de la red inalámbrica. eduroam. en Microsoft Windows 7

Organización de los contenidos en Joomla!

Manual de Usuario. HISMINSA Sistema de Gestión Asistencial (Versión Offline) Ministerio de Salud del Perú Todos los Derechos Reservados

POLITICA DE CERTIFICACION CERTIFICADO DE CIUDADANO

Introducción a las bases de datos y Access

DESCARGAR E INSTALAR EL NAVEGADOR. VENTAJAS DE GOOGLE CHROME. VISUALIZAR PÁGINAS PHP. (CU00811B)

Manual de Usuario de Xeryus v5.25

Ahora queremos agregarle Seguridad a la aplicación, tanto a la parte Web como a la de Smart Devices.

Configuración de traducción de dirección de red: Introducción

1 Sociedad Andaluza para el Desarrollo de las Telecomunicaciones S.A. 1

Curso JAVA EE

APPS MOVILES INFORMACION PARA LA GESTION DEL PROYECTO Versión 1.0

Configuración correo en Oficinas Locales

Unidad 1 Cómo usar Facebook para lograr objetivos empresariales? Una guía introductoria

Clients. PPPoE Clients WINDOWS 7

Transcripción:

Departamento de Lenguajes y Sistemas Informáticos Consumo de Servicios RESTful (III) Práctica 7 Arquitectura e Integración del Software Curso 2012/2013 Índice Introducción OAuth 2 Enlaces 1

Introducción En la práctica, los servicios RESTful suelen requerir alguna forma de identificar al cliente/consumidor de los recursos. Esto principalmente se debe a 2 motivos: Por el coste que tiene la invocación del servicio para el proveedor se quiere limitar el ratio de peticiones por cliente (o incluso cobrar por el uso del servicio) La seguridad de los recursos (para que un usuario no pueda consultar o modificar recursos sobre los que no tiene permisos). Hay varios métodos de autenticación. En las aplicaciones actuales, el mecanismo más popular de autenticación es OAuth. En esta práctica Aprenderemos como hacer que nuestra aplicación GWT utilice para autenticarnos en diferentes aplicaciones (Google Drive y Facebook). Cliente: Interfaz gráfica de nuestro mashup (práctica 2) Introducción Visión general de la práctica 1. Autenticación 3. Token 2. Token Servicio RESTful de múltiples recursos con autenticación 4. Invocación + Token Servidor: Consumo de servicios RESTful (prácticas 5-7) 2

Índice Introducción OAuth 2 Enlaces OAuth 2 Descripción OAuth 2.0 es un protocolo para la autenticación de usuarios en servicios RESTful de terceros. Aparece para evitar la autenticación directa del usuario en nuestra aplicación con credenciales de otro servicio. En vez de autenticarse en nuestra aplicación, la ejecución se redirige al servicio de terceros a usar para hacer la autenticación directamente con el proveedor del servicio. Si la autenticación es correcta, el proveedor retorna la ejecución a nuestra aplicación, indicando una clave de acceso (token). Esta clave de acceso (Access Token) solo es válida para nuestra aplicación, es temporal (el tiempo de validez lo impone el proveedor) y siempre puede ser revocada por el usuario. Usando la clave de acceso como parámetro se pueden invocar los servicios RESTful del proveedor. 3

Autenticación directa (sin OAuth) Usuario Aplicación Servicio REST Acceso a mi panel de videos Consulta Vídeos de Usuario Tus credenciales de YouTube? Credenciales de Usuario? UsuarioPaco, *****3 Consulta Videos de UsuarioPaco, *****3 Panel con videos Videos de UsuarioPaco Nuestra aplicación tiene acceso a las credenciales del usuario Autenticación con OAuth Usuario Aplicación APP Servicio REST Acceso a mi panel de videos Consulta URL de Login en Youtube para APP URL de Login para APP Redirige a URL de Login en YouTube para APP UsuarioPaco, *****3 TOKEN temporal de UsuarioPaco para APP Consulta Videos con TOKEN Videos de UsuarioPaco Panel con videos Nuestra aplicación NO tiene acceso a las credenciales del usuario, pero tiene que estar registrada en el servicio 4

Pasos genéricos para usar PASO 1: Registrar nuestra aplicación para el recurso correspondiente indicando la Url decallback. El servicio nos proporcionará unclient ID. Pasos genéricos para usar PASO 2: Consultar la documentación del servicio para saber su URL de login así como los permisos quepermite. 5

Pasos genéricos para usar PASO 3: La primera vez que nuestra aplicación requiera acceder al servicio en nombre de un usuario (ej. subir un video a la cuenta del usuario en youtube) la aplicación redirigirá al usuario a la URL de login indicando el CLIENT ID (indentificador) y el SCOPE (permisos) que requerimos para el recurso. Pasos genéricos para usar PASO 4: El usuario se autenticará en la URL de login aceptando los permisos requeridos (en caso contrario, no se podrá hacer uso del recurso). 6

Pasos genéricos para usar PASO 5: El servicio invocará a la URL de callback de la aplicación enviándole un ACCESS TOKEN. El token está asociado con el usuario, nuestra aplicación y los permisos requeridos y es de carácter temporal). Notar que la aplicación nunca llegará a conocer el usuario/clave del usuario, en su lugar trabajará con el token. Access Token: ya29.ahes6zqenuwpfneh5a7tgwdqijvflqxbljcuknpwhupwptbux4eomw Pasos genéricos para usar PASO 6: La aplicación podrá invocar a cualquier Servicio correspondiente a los permisos requeridos pasando como parámetro el ACCESS TOKEN. 7

Consideraciones Actualmente existen dos versiones principales de Oauth: OAuth1 y. No son compatibles entre ellos. OAuth1 vs. Consideraciones Cuando untoken de acceso caduca hay querefrescar dicho token. 8

Consideraciones Para implementar el protocolo Oauth (en cualquier versión) es necesario que nuestra aplicación tenga una URL accesible en Internet para recibir el token desde el servicio de login usado (facebook, google, etc). Conclusión: Debemos desplegar la aplicación en el AppEngine para hacer uso de OAuth. No se puede probar en local. Consideraciones Los permisos asociados con un Token los define la aplicación. Por ejemplo, Facebook define una gran cantidad de permisos diferentes: Acceso a los datos básicos del usuario. Datos protegidos como el email. Acceso al muro. Acceso a la lista de amigos. Acceso a las fan pages. Acceso a a las fotografías, etc. Incluso una aplicación puede definir sus propios permisos para permitir que otras aplicaciones hagan uso de ésta a través de Facebook (Open Graph). 9

Índice Introducción OAuth 2 Enlaces Cliente o Servidor? Recordemos que el consumo de servicios REST se hace en servidor debido al SOP (Same-Origin-Policy). En GWT, la gestión de la navegación se hace en cliente, con lo que tendremos que hacer el proceso de autenticación con en cliente. Una vez que tengamos el token de acceso habrá que enviarlo a servidor para consumir el servicio quenos interese. La gestión del protocolo OAuth es un poco compleja, pero vamos a utilizar una librería para simplificarla: https://code.google.com/p/gwt-oauth2/ 10

GWT- Para usar la librería en nuestro proyecto: 1. Descargamos el jar de la librería: https://code.google.com/p/gwt-oauth2/downloads/detail?name=gwtoauth2-0.2-alpha.jar&can=2&q= 2. Añadimos el jar al build path de la aplicación. 3. Indicamos en el fichero del proyecto gwt que debemos utilizar dicha librería: Registrando nuestra aplicación en el servicio GWT- necesita 3 valores para realizar la autenticación: Client ID URL del Servicio de Consulta de URL de Login Scope (permiso que se solicita, en caso de que sea necesario). Con esos valores y un objeto Auth de GWT-, podemos iniciar el proceso de autenticación llamando al método Login: Objeto Auth Parámetros necesarios Operación de Login y resultado 11

Registrando los parámetros para nuestra aplicación Ejemplo: Aplicaciones de Google La URL de login es la misma para todos los servicios: https://accounts.google.com/o/oauth2/auth El Scope depende del servicio (API) de Google que queramos usar. Google provee de una consola de control para todas sus APIs: https://code.google.com/apis/console En la consola indicamos el nombre del proyecto que va a utilizar los servicios (el proyecto es nuestra aplicación) y en la pestaña Services indicamos que APIs queremos que pueda usar nuestra aplicación (en el login de un usuario nuestra aplicación no podrá solicitar acceso al Scope de una API que previamente no se haya autorizado en la consola de control). Solo nos faltaría el Client ID. Para crear el identificador de nuestra aplicación, lo haremos en la pestaña API Access. Para crear el Client ID Google nos va a pedir la url de Callback de nuestra aplicación. Esta URL la genera automáticamente la librería GWT-, y será: http://{aplicacion}.appspot.com/{nombredeproyecto}/oauthwindow.html Registrando nuestra aplicación en el servicio Ejemplo: Aplicaciones de Google (Pestaña Services) Nombre de nuestra aplicación Permisos 12

Registrando nuestra aplicación en el servicio Ejemplo: Aplicaciones de Google (Pestaña API Access) Datos de información de nuestra Aplicación URL de Aplicación y URL de Callback (o Redirect) http://urldenuestraplicación/oauthwindow.html Registrando nuestra aplicación en el servicio Ejemplo: Aplicaciones de Google (Pestaña API Access) Este es el Client ID que usaremos en nuestra aplicación RESUMEN: Client ID: El proporcionado por Google. Url de Servicio de URL de Login: https://accounts.google.com/o/oauth2/auth Scope: Depende del servicio. Por ejemplo, de Youtube: https://www.googleapis.com/auth/youtube OJO! El Scope es una cadena sin un formato específico. En el caso concreto de los servicios de Google, esas cadenas tienen formato de URL, pero, en general, el scope no tiene por qué tener formato URL. 13

Registrando los parámetros para nuestra aplicación Ejemplo 2: Facebook La URL de login es la misma para todos los servicios de Facebook: https://www.facebook.com/dialog/oauth Los tipos de permiso pueden consultarse en la documentación: https://developers.facebook.com/docs/reference/api/ Solo nos faltaría el Client ID. Para crear el identificador, tendremos que registrar nuestra aplicación. Esto se puede hacer en: https://developers.facebook.com/apps Registrando los parámetros para nuestra aplicación Ejemplo 2: Facebook Solo es obligatorio el App Name, que puede ser el que queramos (que no existe). 14

Registrando los parámetros para nuestra aplicación Ejemplo 2: Facebook Una vez creada la aplicación aparecerá el panel de control de la aplicación y habrá que marcar que nuestra aplicación Web usará Facebook Login: Este es el Client ID Aquí hay que indicar la URL de Callback (usando GWT- será la misma que para google) Índice Introducción OAuth 2 Enlaces 15

Enlaces Librería GWT- https://code.google.com/p/gwt-oauth2/ Documentación OAuth http://oauth.net/ Documentación sobre autenticación en Google https://developers.google.com/accounts/docs/login?hl=es API de Facebook https://developers.facebook.com/ APIs de Google https://developers.google.com/ Disclaimer and Terms of Use All material displayed on this presentation is for teaching and personal use only. Many of the images that have been used in the presentation are Royalty Free images taken from http://www.everystockphoto.com/. Other images have been sourced directly from the Public domain, from where in most cases it is unclear whether copyright has been explicitly claimed. Our intention is not to infringe any artist s copyright, whether written or visual. We do not claim ownership of any image that has been freely obtained from the public domain. In the event that we have freely obtained an image or quotation that has been placed in the public domain and in doing so have inadvertently used a copyrighted image without the copyright holder s express permission we ask that the copyright holder writes to us directly, upon which we will contact the copyright holder to request full written permission to use the quote or images. 16