Usuario:ManuelRomero/PHP/hibridas/auth2

De WikiEducator
Saltar a: navegación, buscar



Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg



Protocolo OAuth 2.0



Icon inter.gif

Recursos de la Web


  1. http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=SpringSecurity-OAuth-Google
  2. http://rubenvasallo.es/php/google-y-su-oauth2/
  3. https://developers.google.com/accounts/docs/OAuth2?hl=es
  4. https://github.com/google/google-api-php-client
  5. http://www.thegameofcode.com/2012/07/conceptos-basicos-de-oauth2.html
  6. http://es.wikipedia.org/wiki/OAuth

Que es oauth2.0


Icon define.gif

Definición

OAuth (Open Authorization) es un protocolo abierto, que tras autentificarse (seguridad) autoriza el uso de una API para aplicaciones de escritorio, móviles y web.


  • Permite mediante terceros (No es ni el cliente ni el servidor, sino un servicio externo a nuestra aplicación, como google, twiter o Facebook), poder autentificarnos en lugar de tener que identificar usuario y contraseña en nuestra aplicación
  • En realidad esta parte es más propia de OpenID, pero queda integrada en oAuth2.0
  • Además autoriza mediante el uso de token a que el cliente pueda acceder a determinada información privada de un usuario sin necesidad de identificarse con los credenciales de dicho usuario, pero sí acceder en su nombre
  • La idea es que una aplicación (cliente) que requiere tener acceso a datos privados de un usuario (Propietario de recursos). Pero esta aplicación no debe conocer los datos privados usuario y contraseña del propietario de recursos
  • Entonces entra en escena un tercer elemento llamado proveedor
  • Êl proveedor identifica al cliente y le concede permiso para acceder a los recursos privados
  • El escenario se produce con tres elementos
  1. Cliente Aplicación que quiere acceder a los datos privados en nombre del propietario
  2. Propietario de recursos El es quien puede dar permiso para acceder a recursos y solo él
  3. Provedor (Servidor de recursos y de autentificación). Pueden ir juntos o separados. Contienen los datos privados a los que quiere acceder y por medio de tokens es capaz de aceptar solicitudes del cliente y responder con los datos solicitados. Genera tokens de acceso, valida usuarios y accesos.

Plantilla:Activicdad

https://developers.google.com/identity/sign-in/web/sign-in

Seguimos este enlace y vemos lo sencillo que es identificarse

  • Como podemos ver todo el proceso se hace escribiendo código en el cliente
  • Una vez identificados tenemos un token que podemos usar para verificar que estamos identificados

===Pendiente de desarrollar=== http://www.ladrupalera.com/drupal/desarrollo/javascript/como-usar-una-api-de-google-con-autenticacion-traves-de-oauth2

  • Diferencias entre autentificar y autorizar
  • Descripción de cada proceso
  • Uso del protocolo con php
  • Alcance de su uso
  • Duración de las claves
Concepto del funcionamiento del protocolo.
  • En la página anterior hay un párrafo que describe perfectamente el proceso.

Archivo:ProtocoloAuth20.png

Archivo:ProtocoloAuth20 1.png Pasos: (Texto literal de la página con permiso del autor)

  1. El usuario hará clic en el botón de login para identificarse en nuestra aplicación web con una cuenta de google.
  2. Nuestra aplicación web solicitara a la api de google, permiso para acceder a los datos del usuario.
  3. La api de google le pedirá al usuario permiso para que nuestra web acceda a sus datos.
  4. Cuando el usuario acepte, la api de google retornara a nuestra web un código con el que solicitar un token valido.
  5. Con este código, nuestra aplicación web solicitara un token valido para poder acceder a los datos del usuario.
  6. La api de google retornara un token valido con el que poder hacer consultas
  7. Nuestra aplicación web solicitara los datos del usuario pasando el token devuelto antes.
  8. La api de google retornara los datos del usuario.
  9. Y con esto habrá acabado el proceso. En la imagen lateral se puede ver un gráfico del proceso para mejor comprensión.


  • Es importante que Auth es un protocolo de autorización más que de autentificación.
  • Lo que permite Auth es que una aplicación acceda en tu nombre a ciertos datos tuyos privados sin que tenga que conocer la aplicación tus credenciales.
  • Podemos leer la documentacion oficial
https://developers.google.com/identity/protocols/OAuth2
  • Esta misma idea la podemos usar para autentificarnos. Vamos a seguir el proceso
Paso 1
Identificamos nuestra aplicación en google

Auth 1.png
Auth 2.png
Archivo:Auth 3.png
Paso2 Seleccionamos las apis a las que queremos que los clientes puedan acceder

Seleccionamos el menú de credenciales (Credentials) y creamos un cliente nuevo

Archivo:Auth 5.png

  • Ahora hay que establecer permisos, el cual es un paso importante

Pasos para crear una app de autentificarnos

https://developers.google.com/identity/protocols/OAuth2WebServer
  • Instalamos el cliente de google para php
https://developers.google.com/api-client-library/php/start/installation
  • Creamos el fichero composer.json en nuestro directorio de proyecto
{
  "require": {
    "google/apiclient": "^2.0"
  }
}
  • Ejecutamos composer para descargar todas las librerías de apiclient de google
composer install
  • Nos habrá creado una carpeta vendor en el directorio actual
  • Contiene toda la librería de google-client para php
  • Composer habrá creado un fichero autloload para localizar cualquier fichero que queramos utilizar

Instalacion vendor 1.png