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:

php
if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){
  • Revisa si existen las variables PHP_AUTH_USER y PHP_AUTH_PW en el servidor

  • Estas variables se crean automáticamente cuando el cliente envía autenticación básica HTTP

2. Procesamiento de la solicitud:

php
$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:

php
$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)

php
// 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

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

¿Necesitas que te explique algún aspecto específico o prefieres un ejemplo completo de implementación de tokens JWT

Comentarios

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API