example ejemplo bearer php authentication oauth http-headers bearer-token

php - ejemplo - ¿Cómo usar correctamente los tokens de portador?



php token authentication (2)

1.Mejorando la seguridad porque si el token no se envía en el encabezado que se envió en url, el sistema de red lo registrará, el registro del servidor ...

2.Una buena función para obtener fichas de portador

/** * Get header Authorization * */ function getAuthorizationHeader(){ $headers = null; if (isset($_SERVER[''Authorization''])) { $headers = trim($_SERVER["Authorization"]); } else if (isset($_SERVER[''HTTP_AUTHORIZATION''])) { //Nginx or fast CGI $headers = trim($_SERVER["HTTP_AUTHORIZATION"]); } elseif (function_exists(''apache_request_headers'')) { $requestHeaders = apache_request_headers(); // Server-side fix for bug in old Android versions (a nice side-effect of this fix means we don''t care about capitalization for Authorization) $requestHeaders = array_combine(array_map(''ucwords'', array_keys($requestHeaders)), array_values($requestHeaders)); //print_r($requestHeaders); if (isset($requestHeaders[''Authorization''])) { $headers = trim($requestHeaders[''Authorization'']); } } return $headers; } /** * get access token from header * */ function getBearerToken() { $headers = getAuthorizationHeader(); // HEADER: Get the access token from the header if (!empty($headers)) { if (preg_match(''/Bearer/s(/S+)/'', $headers, $matches)) { return $matches[1]; } } return null; }

Estoy haciendo un sistema de autorización en PHP , y encontré este esquema de portador para pasar tokens JWT, leí RFC 6750 . Tengo las siguientes dudas:

  1. ¿Cómo está mejorando esto la seguridad?
  2. El servidor responde al cliente con un token JWT en su cuerpo después de una autorización e inicio de sesión exitosos, y ahora, cuando el cliente hace otra solicitud, no tengo claro cómo hacerlo, deseo enviar el token del cliente en el encabezado de Autorización en el solicito, así que ahora debo simplemente prefijo "Portador" al token que recibí en la respuesta anterior del servidor y, en caso afirmativo, el servidor al recibir el encabezado de Autorización debería simplemente dividir la cadena con espacio y tomar el segundo valor de La matriz obtenida y luego decodificarla? Por ejemplo, Authorization: Bearer fdbghfbfgbjhg_something , ¿cómo se supone que el servidor maneje esto, decodeFunc(explode(" ", $this->getRequest()->getHeader("Authorization"))[1]) ?

Recomendaría usar el siguiente RegEx para verificar, si es un token jwt válido:

/Bearer/s((.*)/.(.*)/.(.*))/

Y accede también a los partidos [1].

Esta es la estructura de un JWT-Token, consulte: https://jwt.io/