Pools de usuarios, pools de identidades y JWTs

Uso de la seguridad de AWS para desarrolladores

Rahul Singh

Technical Product Manager

Cognito son dos servicios con un nombre

Amazon Cognito

  • Identidad gestionada para las personas usuarias de tu app
  • Un nombre, dos servicios distintos

Dos preguntas sobre un límite discontinuo llamado Amazon Cognito. Dentro hay dos paneles azules en paralelo: un pool de usuarios descrito como tu directorio de usuarios y un pool de identidades descrito como un intermediario de credenciales. Líneas desde ambos paneles confluyen en un recuadro naranja punteado abajo, que indica que muchas aplicaciones usan ambos.

Uso de la seguridad de AWS para desarrolladores

Cognito son dos servicios con un nombre

Amazon Cognito

  • Identidad gestionada para las personas usuarias de tu app
  • Un nombre, dos servicios distintos

¿Cuál necesitas?

  • Inicio de sesión y perfiles: pool de usuarios
  • Navegador o móvil llamando a AWS directo: pool de identidades

Dos preguntas sobre un límite discontinuo llamado Amazon Cognito. Dentro hay dos paneles azules en paralelo: un pool de usuarios descrito como tu directorio de usuarios y un pool de identidades descrito como un intermediario de credenciales. Líneas desde ambos paneles confluyen en un recuadro naranja punteado abajo, que indica que muchas aplicaciones usan ambos.

Uso de la seguridad de AWS para desarrolladores

Un pool de usuarios inicia la sesión

Un directorio de usuarios gestionado

  • Registro e inicio de sesión
  • Restablecimiento de contraseña
  • Autenticación multifactor

Flujo vertical: una persona usuaria inicia sesión en un pool de usuarios que guarda las contraseñas, y el pool devuelve una caja con un ID token, un access token y un refresh token

Uso de la seguridad de AWS para desarrolladores

Un pool de usuarios inicia la sesión

Un directorio de usuarios gestionado

  • Registro e inicio de sesión
  • Restablecimiento de contraseña
  • Autenticación multifactor

 

Si todo va bien, tres tokens

Flujo vertical: una persona usuaria inicia sesión en un pool de usuarios que guarda las contraseñas, y el pool devuelve una caja con un ID token, un access token y un refresh token

Uso de la seguridad de AWS para desarrolladores

Un pool de usuarios inicia la sesión

Un directorio de usuarios gestionado

  • Registro e inicio de sesión
  • Restablecimiento de contraseña
  • Autenticación multifactor

 

Si todo va bien, tres tokens

  • ID token: quién es la persona usuaria
  • Access token: qué puede llamar
  • Refresh token: renovar más tarde

Flujo vertical: una persona usuaria inicia sesión en un pool de usuarios que guarda las contraseñas, y el pool devuelve una caja con un ID token, un access token y un refresh token

Uso de la seguridad de AWS para desarrolladores

Un pool de identidades emite credenciales de AWS

Los tokens no son credenciales

  • Prueba de identidad para tu app
  • No son credenciales para acceder a servicios de AWS

 

Pools de identidades: token fiable entra, credenciales salen

Flujo vertical con la misma geometría que el diagrama del pool de usuarios: se presenta un token de confianza a un pool de identidades, que comprueba quién lo emitió y devuelve credenciales de AWS con el ámbito de un rol y con caducidad

Uso de la seguridad de AWS para desarrolladores

Un pool de identidades emite credenciales de AWS

Los tokens no son credenciales

  • Prueba de identidad para tu app
  • No son credenciales para acceder a servicios de AWS

 

Pools de identidades: token fiable entra, credenciales salen

  • Un job de build canjeó un token OIDC
  • Prueba que tienes, canjeada por una tarjeta de acceso

Flujo vertical con la misma geometría que el diagrama del pool de usuarios: se presenta un token de confianza a un pool de identidades, que comprueba quién lo emitió y devuelve credenciales de AWS con el ámbito de un rol y con caducidad

Uso de la seguridad de AWS para desarrolladores

Una app, ambas partes

Un navegador usando ambos

  1. Inicia sesión y recibe un token
  2. Envía ese token a tu API

Bearer token: quien lo tiene, lo usa

Un flujo vertical. Un navegador inicia sesión en un pool de usuarios, que devuelve un token. Ese único token se bifurca: a la izquierda hacia tu API y a la derecha hacia un pool de identidades. El pool de identidades devuelve credenciales, y esas credenciales son las que llegan a S3.

Uso de la seguridad de AWS para desarrolladores

Una app, ambas partes

Un navegador usando ambos

  1. Inicia sesión y recibe un token
  2. Envía ese token a tu API
  3. Canjea ese mismo token por credenciales

Un flujo vertical. Un navegador inicia sesión en un pool de usuarios, que devuelve un token. Ese único token se bifurca: a la izquierda hacia tu API y a la derecha hacia un pool de identidades. El pool de identidades devuelve credenciales, y esas credenciales son las que llegan a S3.

Uso de la seguridad de AWS para desarrolladores

Una app, ambas partes

Un navegador usando ambos

  1. Inicia sesión y recibe un token
  2. Envía ese token a tu API
  3. Canjea ese mismo token por credenciales
  4. Accede a S3 con esas credenciales

Tokens para tu código, credenciales para AWS

Un flujo vertical. Un navegador inicia sesión en un pool de usuarios, que devuelve un token. Ese único token se bifurca: a la izquierda hacia tu API y a la derecha hacia un pool de identidades. El pool de identidades devuelve credenciales, y esas credenciales son las que llegan a S3.

Uso de la seguridad de AWS para desarrolladores

Un token es texto con una firma

Tres segmentos unidos por puntos y etiquetados como Header, Payload y Signature. Un candado abierto está sobre el payload, y un corchete bajo los dos primeros segmentos muestra hasta dónde llega la firma.

JWT: JSON Web Token

  • Claims: afirmaciones etiquetadas sobre la persona usuaria
Uso de la seguridad de AWS para desarrolladores

Un token es texto con una firma

Tres segmentos unidos por puntos y etiquetados como Header, Payload y Signature. Un candado abierto está sobre el payload, y un corchete bajo los dos primeros segmentos muestra hasta dónde llega la firma.

JWT: JSON Web Token

  • Claims: afirmaciones etiquetadas sobre la persona usuaria
  • Codificado, no cifrado
  • Cualquiera puede leerlo y cualquiera puede cambiarlo
Uso de la seguridad de AWS para desarrolladores

Verifica antes de leer

Primero, verificar

  • JWKS: JSON Web Key Set, claves públicas de firma del emisor
  • Firma comprobada contra esas claves

Un diagrama vertical tipo compuerta. Llega un token y supera cuatro comprobaciones con tilde en orden: firma, emisor, audiencia y caducidad. Las claves públicas del emisor alimentan la verificación de la firma desde un lateral, y solo tras la cuarta comprobación se llega a un recuadro verde para leer los claims.

Uso de la seguridad de AWS para desarrolladores

Verifica antes de leer

Primero, verificar

  • JWKS: JSON Web Key Set, claves públicas de firma del emisor
  • Firma comprobada contra esas claves

 

Luego, tres claims

  • iss: tu pool de usuarios
  • aud en un ID token, client_id en un access token
  • exp: aún vigente

Un diagrama vertical tipo compuerta. Llega un token y supera cuatro comprobaciones con tilde en orden: firma, emisor, audiencia y caducidad. Las claves públicas del emisor alimentan la verificación de la firma desde un lateral, y solo tras la cuarta comprobación se llega a un recuadro verde para leer los claims.

Uso de la seguridad de AWS para desarrolladores

Un token verificado puede seguir siendo incorrecto

Dos tarjetas emparejadas en paralelo. La tarjeta del ID token está marcada como token de identidad, muestra el client ID en el claim de audiencia y señala que no lleva scope, sobre un recuadro gris de quién es la persona usuaria. La tarjeta del access token está marcada como token de acceso, muestra el client ID en su propio claim de identificador de cliente y señala que lleva un scope, sobre un recuadro naranja de qué puede llamar. Una franja discontinua bajo ambas indica que el claim de grupos de Cognito aparece en ambos tokens.

Verificado, y aun así el token incorrecto

Uso de la seguridad de AWS para desarrolladores

Un token verificado puede seguir siendo incorrecto

Dos tarjetas emparejadas en paralelo. La tarjeta del ID token está marcada como token de identidad, muestra el client ID en el claim de audiencia y señala que no lleva scope, sobre un recuadro gris de quién es la persona usuaria. La tarjeta del access token está marcada como token de acceso, muestra el client ID en su propio claim de identificador de cliente y señala que lleva un scope, sobre un recuadro naranja de qué puede llamar. Una franja discontinua bajo ambas indica que el claim de grupos de Cognito aparece en ambos tokens.

Verificado, y aun así el token incorrecto

token_use indica el tipo

  • cognito:groups va en ambos tipos y no es un scope

  • scope: qué puede llamar el token

  • sub: qué persona usuaria es, y no cambia nunca
  • Identidad no es permiso
Uso de la seguridad de AWS para desarrolladores

¡Vamos a practicar!

Uso de la seguridad de AWS para desarrolladores

Preparing Video For Download...