Implementando Resource Owner Password Grant
Clase 24 de 39 • Curso de Autenticación con OAuth
Contenido del curso
JSON Web Tokens
- 5

JSON Web Tokens
08:34 min - 6

Autenticación tradicional vs JWT
08:08 min - 7

Configuración inicial de los proyectos
08:22 min - 8

Firmando un JWT
15:23 min - 9

Verificando nuestro JWT firmado y buenas practicas con JWT
11:43 min - 10

Server-Side vs Client-Side sessions
05:23 min - 11

Protegiendo nuestros recursos con JWT
04:38 min - 12

Habilitando CORS en nuestro servidor
01:11 min - 13

Profundizando el concepto de JWKS
02:24 min
OAuth 2.0
- 14

Cómo elegir el flujo adecuado para OAuth 2.0
02:54 min - 15

¿Qué es OAuth 2.0?
00:15 min - 16

Conociendo el API de Spotify
07:29 min - 17

Creando los clientes de Spotify y servicios iniciales
16:46 min - 18

Implementando Authorization Code Grant
14:54 min - 19

Usando nuestro access token para obtener nuestros recursos
07:12 min - 20

Implementando Implicit Grant
09:11 min - 21

Implementando nuestro servicio de autenticación
08:46 min - 22

Modificando nuestro Layout
09:18 min - 23

Implementando Client Credentials Grant
09:52 min - 24

Implementando Resource Owner Password Grant
Viendo ahora - 25

Implementando Authorization Code Grant (PKCE)
02:26 min
Open ID Connect
Preocupaciones con JWT y OAuth 2.0
Haciendo uso de Auth0
Consideraciones para producción
Cierre del curso
Aplicaciones altamente confiables pueden usar este flujo, ya que en este flujo se le pregunta al usuario final llenar sus credenciales (usuario/contraseña) con un formulario interactivo y luego la información es enviada al authorization server.
Usa este flujo solo si lo siguiente aplica:
- Se le puede confiar absolutamente a la aplicación las credenciales del usuario. Para aplicaciones del lado del cliente o aplicaciones mobile se recomienda usar otros flujos.
- Un flujo basado en redireccionamiento no es posible debido a que es una apliación legada. Si el redireccionamiento es posible se recomienda usar mejor Authorization Code Grant.
Conociendo el flujo
La definición de Resource Owner Password Grant puede ser encontrada en https://tools.ietf.org/html/rfc6749#section-4.3.
- El usuario final ingresa sus credenciales en la aplicación (cliente) mediante un formulario.
- La aplicación envía las credenciales al Authorization Server.
- El Authorization Server valida las credenciales y devuelve un Access Token.
- La aplicacion ahora puede usar el Access Token para llamar la API en nombre del usuario.
Detalles de implementación
Para su implementación se debe implementar de parte de la aplicación un formulario que tome las credenciales del usuario y luego pueda hacer una petición al Authorization Server. Es sumamente importante que esto suceda en una conexión segura HTTPS.
- La aplicación obtiene las credenciales desde el formulario.
- La aplicación hace una petición al Authorization Server.
const request = require("request"); const options = { method: "POST", url: "https://<authorization-server>/oauth/token", headers: { "content-type": "application/json" }, body: { grant_type: "password", username: "<username>", password: "<password>", audience: "<your-audience>", scope: "<your-scopes>", client_id: "<your-client-id>", client_secret: "<your-client-secret>" }, json: true }; request(options, function(error, response, body) { if (error) { throw new Error(error); } console.log(body); });
- La respuesta tiene un JSON Web Token, generalmente de tipo
Bearerincluyendo el tiempo de expiración.
{ "access_token": "eyJz93a...k4laUWw", "token_type": "Bearer", "expires_in": 36000 }
- La aplicación ya puede usar el JSON Web Token para hacer peticiones a los recursos del usuario (API) en nombre de él.
const request = require("request"); const options = { method: "GET", url: "https://someapi.com/api", headers: { authorization: "Bearer <access-token>", "content-type": "application/json" } }; request(options, function(error, response, body) { if (error) throw new Error(error); console.log(body); });
Con esto tenemos los conocimientos necesarios para poder implementar este flujo. Recuerda seguir las recomendaciones para darle un uso adecuado.