81 lines
2.2 KiB
Markdown
81 lines
2.2 KiB
Markdown
|
|
# Fix Cloudflare 403 Forbidden en /auth/discord
|
||
|
|
|
||
|
|
## Problema
|
||
|
|
|
||
|
|
Cloudflare WAF (Web Application Firewall) está bloqueando las peticiones a `/auth/discord` con **403 Forbidden** ANTES de que lleguen al servidor backend.
|
||
|
|
|
||
|
|
**Evidencia:**
|
||
|
|
- Frontend correctamente apunta a `https://api.amayo.dev/auth/discord` ✅
|
||
|
|
- Backend tiene bypass de validación Cloudflare para `/auth/*` ✅
|
||
|
|
- `curl https://api.amayo.dev/auth/discord` → **403 Forbidden**
|
||
|
|
- Error viene de Cloudflare, no del backend
|
||
|
|
|
||
|
|
## Solución: Opción 1 (Recomendada) - Page Rules en Cloudflare
|
||
|
|
|
||
|
|
### Pasos:
|
||
|
|
1. Ve a tu Dashboard de Cloudflare → `amayo.dev`
|
||
|
|
2. Click en **Page Rules** (en el menú lateral)
|
||
|
|
3. Click **Create Page Rule**
|
||
|
|
4. Configura la regla:
|
||
|
|
```
|
||
|
|
URL Pattern: api.amayo.dev/auth/*
|
||
|
|
Settings:
|
||
|
|
- Security Level: Off
|
||
|
|
- Disable Performance
|
||
|
|
- Disable Apps
|
||
|
|
```
|
||
|
|
5. **Save and Deploy**
|
||
|
|
|
||
|
|
## Solución: Opción 2 (Temporal) - Desactivar Proxy en api.amayo.dev
|
||
|
|
|
||
|
|
### Pasos:
|
||
|
|
1. Ve a Cloudflare Dashboard → DNS Records
|
||
|
|
2. Encuentra el registro A para `api`
|
||
|
|
3. **Click en la nube naranja** para cambiarla a gris (DNS only)
|
||
|
|
4. Espera 1-2 minutos para propagación
|
||
|
|
5. **Prueba el login**
|
||
|
|
|
||
|
|
⚠️ **IMPORTANTE**: Esto desprotege completamente `api.amayo.dev`. Después de verificar que funciona, puedes volver a activar el proxy (nube naranja) y usar la Opción 1.
|
||
|
|
|
||
|
|
## Solución: Opción 3 - Firewall Rules para permitir /auth/*
|
||
|
|
|
||
|
|
### Pasos:
|
||
|
|
1. Ve a Cloudflare Dashboard → **Security** → **WAF**
|
||
|
|
2. Ir a **Custom Rules** o **Firewall Rules**
|
||
|
|
3. Create Rule:
|
||
|
|
```
|
||
|
|
Rule name: Allow OAuth Routes
|
||
|
|
|
||
|
|
When incoming requests match:
|
||
|
|
Field: URI Path
|
||
|
|
Operator: starts with
|
||
|
|
Value: /auth/
|
||
|
|
|
||
|
|
Then:
|
||
|
|
Action: Allow
|
||
|
|
```
|
||
|
|
4. Deploy and test
|
||
|
|
|
||
|
|
## Verificación
|
||
|
|
|
||
|
|
Después de aplicar CUALQUIERA de las soluciones:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Test desde terminal
|
||
|
|
curl -I https://api.amayo.dev/auth/discord
|
||
|
|
|
||
|
|
# Debería devolver: HTTP/2 302 (redirect a Discord)
|
||
|
|
# NO: HTTP/2 403
|
||
|
|
```
|
||
|
|
|
||
|
|
## Probar Login
|
||
|
|
|
||
|
|
1. Abre https://docs.amayo.dev en modo incógnito
|
||
|
|
2. Click "Continue with Discord"
|
||
|
|
3. Debería redirigir a Discord OAuth
|
||
|
|
4. Después del login → dashboard
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Recomendación Final**: Usar **Opción 1 (Page Rules)** para permitir `/auth/*` sin desproteger todo el API.
|