Usuario:ManuelRomero/PHP/hibridas/auth2

Protocolo OAuth 2.0
Que es oauth2.0
 * 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


 * 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.

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

Imagen:protocoloAuth20.png Imagen:protocoloAuth20_1.png Pasos: (Texto literal de la página con permiso del autor)
 * 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.
 * También vamos a analizar la información de esta página http://rubenvasallo.es/php/google-y-su-oauth2/
 * 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.

https://developers.google.com/identity/protocols/OAuth2 imagen:auth_1.png
 * 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
 * Esta misma idea la podemos usar para autentificarnos. Vamos a seguir el proceso
 * Paso 1: Identificamos nuestra aplicación en google
 * Accedemos a https://console.developers.google.com/dcredirect?pli=1#access
 * Si no estábamos registrados, nos pedirá que nos autentifiquemos
 * Creamos el nuevo proyecto

imagen:auth_2.png

imagen: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 imagen: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

https://developers.google.com/api-client-library/php/start/installation
 * Instalamos el cliente de google para php
 * Creamos el fichero composer.json en nuestro directorio de proyecto
 * Ejecutamos composer para descargar todas las librerías de apiclient de google
 * 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