- 1

OAuth y OpenID Connect: Autenticación y Autorización Básica
05:01 - 2

¿Qué es la autenticación?
03:55 - 3

Autorización y Control de Acceso Basado en Roles
04:01 - 4

Protocolos Open Authorization y OpenID Connect: Alternativas y Comparación
05:32 - 5

Protección de Endpoints con Autenticación y Autorización Básica
11:14 - 6

Flujo de Open Authorization y Open ID con Discord
07:14
Implementación de Client Credentials Flow en Discord
Clase 17 de 25 • Curso de OAuth 2.0 y OpenID Connect: Flujos de Autenticación y Casos de Estudio
Contenido del curso
- 11

Implementación de flujos OAuth 2.0 con APIs populares
08:28 - 12

Flujos de Autorización en OAuth 2.0: Conceptos y Funcionamiento
11:55 - 13

Elección del Flujo Oauth 2.0 según Roles del Cliente y Servidor
07:08 - 14

Implementación de Authorization Code Flow con Spotify y React
16:07 - 15

Implementación de Authorization CodeFlow con Proofkit en Twitter API
12:25 - 16

Implementación de Implicit Flow con Twitch en React
07:11 - 17

Implementación de Client Credentials Flow en Discord
05:02 - 18

Implementación de Resource Owner Password Flow con Auth0
08:34 Quiz de Open Authorization 2.0
¿Cómo implementar el Cloud Credentials Flow con Discord?
Conectar servicios de manera eficaz es esencial en múltiples proyectos tecnológicos. El Cloud Credentials Flow, específicamente con Discord, permite visualizar cómo podemos autenticar servicios entre sí sin necesidad de intervención manual, impulsando automación y optimización de procesos. Este uso en Discord es relevante para pruebas rápidas y el desarrollo de bots, pero también permite profundizar en la comprensión de flujos de autenticación basada en máquinas.
¿Qué pasos seguir para crear una aplicación en Discord?
Para implementar este flujo, necesitas crear una aplicación en el portal de desarrolladores de Discord. Sigue estos pasos:
- Accede a discord.com/developers/applications.
- Haz clic en "Create Application" y asígnale un nombre, por ejemplo, "Client Credentials Discord".
- Acepta los términos y condiciones.
¿Cómo configurar el OAuth 2 en la aplicación de Discord?
Al continuar, identificarás los elementos clave para autenticación:
- Navega a la pestaña de OAuth 2 dentro de tu aplicación en Discord.
- Copia el
client_idy expón elclient_secret, ingresando tu código de autenticación si es necesario. - Asegúrate de no confundir el Application ID y las Public Keys, ya que tienen otros propósitos.
¿Qué es un servidor de Express y cómo se configura?
Implementarás un servidor sencillo de Express. A continuación, los pasos esenciales:
- Define las variables de entorno para
client_idyclient_secret. - Establece URLs para consumir tokens y endpoints correspondientes a Discord.
- Define los scopes necesarios:
identifyyguildspara acceder respectivamente a datos de usuario y servidores.
Con lo anterior definido, el esquema de autenticación se parecerá al siguiente:
const express = require('express');
const fetch = require('node-fetch');
require('dotenv').config();
const app = express();
const DISCORD_TOKEN_URL = 'https://discord.com/api/oauth2/token';
const client_id = process.env.CLIENT_ID;
const client_secret = process.env.CLIENT_SECRET;
const scopes = 'identify guilds';
app.listen(3005, () => {
console.log('Server running on http://localhost:3005');
});
¿Cómo se lleva a cabo la solicitud de autenticación en Discord?
El flujo de solicitud es directo y se realiza de la siguiente manera:
- Realiza un request de autenticación a Discord usando tu
client_idyclient_secret. - Se requiere establecer el grant_type como "client_credentials".
- Espera por un
access_token, el cual renombrarás para su uso posterior en camelCase.
const params = new URLSearchParams();
params.append('client_id', client_id);
params.append('client_secret', client_secret);
params.append('grant_type', 'client_credentials');
params.append('scope', scopes);
fetch(DISCORD_TOKEN_URL, {
method: 'POST',
body: params,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
})
.then(response => response.json())
.then(data => {
const accessToken = data.access_token;
fetchWithToken(accessToken);
})
.catch(console.error);
¿Cómo consumir datos de usuarios y servidores en Discord?
La autenticación te conducirá a la posibilidad de interactuar con los datos de usuario y servidores de Discord. Configura el fetch para esta interacción:
- Utiliza el access token como Authorization Bearer.
- Realiza solicitudes a los endpoints deseados para obtener y manejar la información requerida.
function fetchWithToken(token) {
const options = {
headers: {
'Authorization': `Bearer ${token}`,
},
};
// Fetch user data
fetch('https://discord.com/api/users/@me', options)
.then(response => response.json())
.then(userData => console.log(userData))
.catch(console.error);
// Fetch guild data
fetch('https://discord.com/api/users/@me/guilds', options)
.then(response => response.json())
.then(guildData => console.log(guildData))
.catch(console.error);
}
¿Cuáles son los usos y retos del Client Credentials Flow?
Este flujo es ideal para integraciones máquina a máquina, donde no se requiere interacción humana directa. Es eficiente para:
- Desarrollar bots para Discord.
- Integración de microservicios.
- Comandos API a API desde la terminal.
Como reto, intenta implementar Client Credentials en un servicio distinto a Discord para ampliar tu entendimiento práctico y fortalecer tus habilidades de integración API. Recuerda que la perseverancia y la práctica constante son claves en el mundo del desarrollo tecnológico. ¡Sigue aprendiendo y experimentando con nuevas integraciones!