Solicitando TOKEN de Autorización en PHP nativo
¿Qué hace este código?
Este fragmento verifica si se están enviando credenciales de autenticación básica (usuario y contraseña) a través de los headers HTTP, pero NO está solicitando un token sino usando autenticación básica.
Explicación detallada:
1. Verificación de credenciales:
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){Revisa si existen las variables
PHP_AUTH_USERyPHP_AUTH_PWen el servidorEstas variables se crean automáticamente cuando el cliente envía autenticación básica HTTP
2. Procesamiento de la solicitud:
$cursos = ModeloCursos::index("cursos");Si las credenciales están presentes, obtiene datos de cursos
Nota importante: El código NO valida las credenciales, solo verifica que existan
3. Respuesta JSON:
$json = array(
"status"=>200,
"total_registros"=>count($cursos),
"detalle"=>$cursos
);
echo json_encode($json, true);Devuelve los datos en formato JSON con estado 200 (éxito)
Para implementar autenticación por TOKEN:
Opción 1: Token en headers (Recomendado)
// Verificar token en header Authorization
$headers = apache_request_headers();
if(isset($headers['Authorization'])){
$token = str_replace('Bearer ', '', $headers['Authorization']);
// Validar token aquí
if(validarToken($token)){
$cursos = ModeloCursos::index("cursos");
// ... responder con datos
} else {
http_response_code(401);
echo json_encode(["error" => "Token inválido"]);
}
} else {
http_response_code(401);
echo json_encode(["error" => "Token requerido"]);
}Opción 2: Forzar autenticación básica
if(!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Mi API"');
header('HTTP/1.0 401 Unauthorized');
echo json_encode(["error" => "Autenticación requerida"]);
exit;
}
// Validar credenciales
if($_SERVER['PHP_AUTH_USER'] != "usuario_valido" || $_SERVER['PHP_AUTH_PW'] != "contraseña_valida") {
header('HTTP/1.0 401 Unauthorized');
echo json_encode(["error" => "Credenciales inválidas"]);
exit;
}
// Si las credenciales son válidas, continuar...
Comentarios
Publicar un comentario