Saltar al contenido

Ejemplo de servidor y cliente PHP de OAuth 2.0

Contamos con tu apoyo para extender nuestros posts sobre las ciencias de la computación.

Solución:

Configurar un proveedor de OAuth2 es bastante fácil una vez que sabe cómo funciona el protocolo. Es un proceso de 2 o 3 pasos (según su configuración y si obtiene tokens en nombre de un usuario o solo del servidor).

Lo que necesitarás:

  • Código de trabajo para un proveedor de OAuth2
  • Paciencia

Lo que necesitará para averiguar cómo hacer en su código:

  • Crear un cliente (tokens de acceso público y privado)
  • Averigüe cómo se nombran los puntos finales de autorización y token (normalmente /authorize y /token)
  • Averiguar cómo se tratan los alcances

El primer paso para obtener un token es llamar /authorize?response_type=code&client_id=[YOUR ID]&redirect_uri=[YOUR REDIRECT URI]&scope=[YOUR SCOPE] donde:

  • Identificación del cliente ([YOUR ID]) es su token de acceso público
  • redirigir_uri ([YOUR REDIRECT URI]) es su URI de redireccionamiento. Será redirigido a esto una vez que complete el paso de autorización
  • scope es el alcance de su token futuro

Al finalizar (generalmente hay un botón de envío), su navegador será redirigido al URI especificado con un código en la URL (código = bla). Guarde este valor.

Cuando tenga este código, llame al otro extremo: /token?client_id=[YOUR ID]&client_secret=[YOUR SECRET]&grant_type=authorization_code&scope=[YOUR SCOPE]&code=[YOUR CODE]&redirect_uri=[YOUR REDIRECT URI]

Los parámetros: – client_id – de nuevo, su cliente público key
– client_secret – tu privado key (se supone que esto es una llamada del lado del servidor) – alcance – el alcance del token – DEBE COINCIDIR CON LA PRIMERA LLAMADA – redirect_uri – el URI de redirección – DEBE COINCIDIR CON LA PRIMERA LLAMADA – código – el código que recibió

Si todo salió bien, verá un objeto JSON en su pantalla que contiene la información del token.

Lo que sucede en el fondo

Paso 1 (autorizar)

Cuando confirma el formulario, el servidor crea un token temporal (token de autenticación como se les llama), que generalmente tiene una vida muy corta (mi código sp oauth2 generalmente establece esto en 60 segundos). Este es el tiempo que tiene su servidor para pasar de recibir el código a activar el paso 2. Es sólo un sistema de confirmación, y su propósito es almacenar también la información proporcionada en el paso 1 para evitar secuestros.

Paso 2 (ficha)

Aquí es donde realmente se crea su token de acceso. Muchas verificaciones, muchas cosas, pero al final, el token es solo un valor que vincula su client_id y su token. Eso es todo.

Complemento desvergonzado: si está utilizando el marco de Laravel, he creado exactamente esto desde cero (en lugar de usar el código de muestra indocumentado y de mierda): http://bundles.laravel.com/bundle/oauth2-sp

PHP tiene un cliente PECL: http://www.php.net/manual/en/book.oauth.php

Buena introducción sobre oauth2: http://www.slideshare.net/aaronpk/an-introduction-to-oauth-2

Este sitio oauth2.net/2/ enumera 3 servidores oauth en diferentes etapas de desarrollo.

Los grandes proveedores (Facebook, Google, Yahoo, Twitter, etc.) implementan su propio estilo de Oauth y, además, Oauth 2.0 todavía está en revisión preliminar, cada proveedor sigue una revisión diferente.

Estoy trabajando en algún tipo de este cliente PHP que hace lo siguiente:

  • Escuchar en un enchufe
  • Autenticación -> Solicitud
  • Proceso de autenticación -> Reglas del lado del servidor
  • Autenticación -> Respuesta como resultado
  • Continuar la demanda del lado del cliente en la respuesta recopilada

La respuesta corta es: curl + JSON

Todo el proceso de autenticación solicitado con curl a mi secuencia de comandos del lado del servidor que toma variables de autenticación, luego procesa y compara y al final se hace eco ‘JSON codificado’ La respuesta contiene múltiples variables en el eco devuelto al cliente.

Después de la respuesta reunida ‘Decodificación JSON’ variables como var independiente y ahora el script del lado del cliente sabe lo que hace para este cliente.

Luego proporcione al usuario actualmente autenticado (especificado por Sesiones) algunas herramientas. Todo el trabajo se ejecuta en PHP Desktop, un servidor web incrustado de mongoose con soporte para PHP y curl. De hecho, no es necesario usar ninguna biblioteca, por lo que PHP tiene una biblioteca propia completa. Use curl, JSON y en PHP del lado del servidor, MySQL (verificación condicional) es suficiente para fines de autenticación.

Nos encantaría que puedieras compartir esta división si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *