2010-05-25 23 views
24

Así que estoy tratando de analizar una solicitud entrante en PHP que tiene el siguiente conjunto de cabecera:Autorización de cabecera personalizada Obtención de PHP petición entrante

Authorization: Custom Username 

simple pregunta: ¿cómo diablos hacer yo ponga las manos sobre ella ? Si fuera Authorization: Basic, podría obtener el nombre de usuario $_SERVER["PHP_AUTH_USER"]. Si fuera X-Custom-Authorization: Username, podría obtener el nombre de usuario $_SERVER["HTTP_X_CUSTOM_AUTHORIZATION"]. Pero ninguno de estos se establece mediante una Autorización personalizada, var_dump($_SERVER) revela que no se menciona el encabezado (en particular, AUTH_TYPE falta), y las funciones de PHP5 como get_headers() solo funcionan en las respuestas a las solicitudes salientes. Estoy ejecutando PHP 5 en Apache con una instalación de Ubuntu lista para usar.

Respuesta

35

Si solo vas a utilizar Apache, deberías echarle un vistazo al apache_request_headers().

+0

funciona de maravilla, gracias! – jpatokal

+0

@halfdan: ¿más? Estoy usando nginx y no puedo obtener autorización en el encabezado. – Divakarcool

32

Para autenticación basada en token:

$token = null; 
    $headers = apache_request_headers(); 
    if(isset($headers['Authorization'])){ 
    $matches = array(); 
    preg_match('/Token token="(.*)"/', $headers['Authorization'], $matches); 
    if(isset($matches[1])){ 
     $token = $matches[1]; 
    } 
    } 
6

Para el fondo, ¿por qué Apache filtra distancia de la cabecera Authorization: https://stackoverflow.com/a/17490827

soluciones en función de las cuales se utiliza el módulo de Apache para pasar la solicitud a la aplicación:

mod_wsgi, mod_fcgid:

cgi:

Otros hacks - masaje de los encabezados en esta pregunta:

5

Añadir este código en su .htaccess

RewriteEngine On 
RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

Pase su cabecera como Authorization: {auth_code} y, finalmente, obtener el código de autorización mediante el uso de $_SERVER['HTTP_AUTHORIZATION']

Cuestiones relacionadas