OAUTH_SETUP_GUIDE.md•4.74 kB
# Guía de Configuración OAuth2
## 🔧 Configurar Google OAuth2 (Ejemplo Completo)
### Paso 1: Crear Proyecto en Google Cloud Console
1. **Ir a Google Cloud Console**: https://console.cloud.google.com/
2. **Crear nuevo proyecto** o seleccionar uno existente
3. **Habilitar Google+ API**:
- Ir a "APIs & Services" > "Library"
- Buscar "Google+ API" y habilitarla
### Paso 2: Crear Credenciales OAuth2
1. **Ir a "APIs & Services" > "Credentials"**
2. **Hacer clic en "Create Credentials" > "OAuth 2.0 Client IDs"**
3. **Configurar pantalla de consentimiento** (si es la primera vez):
- Application name: "MCP HTTP Server"
- User support email: tu email
- Developer contact: tu email
4. **Crear OAuth 2.0 Client ID**:
- Application type: "Web application"
- Name: "MCP Server"
- Authorized redirect URIs: `http://localhost:8001/auth/callback/google`
### Paso 3: Obtener Credenciales
Después de crear, obtendrás:
- **Client ID**: algo como `123456789-abc123.apps.googleusercontent.com`
- **Client Secret**: algo como `GOCSPX-abc123def456`
### Paso 4: Configurar en tu aplicación
Editar archivo `.env`:
```bash
# Google OAuth2
GOOGLE_CLIENT_ID=123456789-abc123.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-abc123def456
```
## 🔧 Configurar GitHub OAuth2
### Paso 1: Crear OAuth App en GitHub
1. **Ir a GitHub Settings**: https://github.com/settings/applications/new
2. **Llenar formulario**:
- Application name: "MCP HTTP Server"
- Homepage URL: `http://localhost:8001`
- Authorization callback URL: `http://localhost:8001/auth/callback/github`
### Paso 2: Obtener Credenciales
Después de crear:
- **Client ID**: algo como `Iv1.abc123def456`
- **Client Secret**: algo como `abc123def456ghi789`
### Paso 3: Configurar en .env
```bash
# GitHub OAuth2
GITHUB_CLIENT_ID=Iv1.abc123def456
GITHUB_CLIENT_SECRET=abc123def456ghi789
```
## 🚀 Cómo Funciona el Flujo Completo
### 1. Usuario visita tu aplicación
```
http://localhost:8001/login
```
### 2. Selecciona proveedor (ej: Google)
```
Usuario hace clic en "Iniciar sesión con Google"
```
### 3. Redirección a Google
```
https://accounts.google.com/o/oauth2/v2/auth?
response_type=code&
client_id=TU_CLIENT_ID&
redirect_uri=http://localhost:8001/auth/callback/google&
scope=openid email profile
```
### 4. Usuario autoriza en Google
```
Google muestra: "¿Permitir que MCP Server acceda a tu información?"
Usuario hace clic en "Permitir"
```
### 5. Google redirige de vuelta
```
http://localhost:8001/auth/callback/google?code=ABC123&state=XYZ789
```
### 6. Tu servidor intercambia código por tokens
```
POST https://oauth2.googleapis.com/token
{
"grant_type": "authorization_code",
"client_id": "TU_CLIENT_ID",
"client_secret": "TU_CLIENT_SECRET",
"code": "ABC123",
"redirect_uri": "http://localhost:8001/auth/callback/google"
}
```
### 7. Google devuelve access_token
```json
{
"access_token": "ya29.abc123...",
"token_type": "Bearer",
"expires_in": 3600
}
```
### 8. Tu servidor obtiene info del usuario
```
GET https://www.googleapis.com/oauth2/v2/userinfo
Authorization: Bearer ya29.abc123...
Respuesta:
{
"id": "123456789",
"email": "usuario@gmail.com",
"name": "Juan Pérez",
"picture": "https://..."
}
```
### 9. Tu servidor crea JWT token propio
```json
{
"sub": "user_id_interno",
"email": "usuario@gmail.com",
"name": "Juan Pérez",
"exp": 1234567890
}
```
### 10. Usuario puede usar tu API
```bash
curl -H "Authorization: Bearer TU_JWT_TOKEN" \
http://localhost:8001/mcp
```
## 🎯 Ventajas de OAuth2
### Para el Usuario:
- ✅ No necesita crear otra cuenta
- ✅ No necesita recordar otra contraseña
- ✅ Usa credenciales que ya conoce y confía
- ✅ Puede revocar acceso desde Google/GitHub
### Para el Desarrollador:
- ✅ No manejas contraseñas (más seguro)
- ✅ No necesitas sistema de registro
- ✅ Verificación de email automática
- ✅ Información de perfil incluida
## 🔒 Seguridad
### Lo que NO ve tu aplicación:
- ❌ Contraseña del usuario
- ❌ Datos personales no autorizados
### Lo que SÍ obtiene tu aplicación:
- ✅ Email verificado
- ✅ Nombre público
- ✅ ID único del proveedor
- ✅ Avatar (si está público)
## 📝 Ejemplo de Uso Real
Una vez configurado, el flujo sería:
1. **Usuario va a**: `http://localhost:8001/login`
2. **Ve opciones**: "Iniciar sesión con Google" | "Iniciar sesión con GitHub"
3. **Hace clic en Google**
4. **Se abre Google**: "¿Permitir acceso a MCP Server?"
5. **Usuario acepta**
6. **Vuelve a tu app**: Ya autenticado con token
7. **Puede usar MCP**: Con su token personal
¡Es como usar "Iniciar sesión con Google" en cualquier app que hayas usado antes!