JSON Web Tokens como componentes básicos para la seguridad en la nube

Autor

Henrik Loeser

Technical Offering Manager / Developer Advocate

Comprenda cómo reclamar su identidad.

No estoy seguro de cuándo vi un JSON Web Token (JWT) por primera vez, pero desde entonces, he visto muchos de ellos. Para el ojo inexperto, parecen una salida de computadora confusa:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30._iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM

La realidad es que lo anterior (y los JWT en general) contienen información esencial que tiene un impacto directo en la seguridad tanto en la nube como on premises. Es información para identificar y autenticar a los usuarios. Los JWT son fundamentales para que las soluciones basadas en microservicios funcionen y constituyen un pilar fundamental para lograr aplicaciones de 12 factores.

En esta entrada en el blog, voy a compartir algo de la historia detrás de los JWT, presentar sus conceptos básicos y analizar escenarios comunes de uso de JWT en IBM Cloud.

 

¿Su equipo captaría a tiempo el próximo día cero?

Únase a los líderes de seguridad que confían en el boletín Think para obtener noticias seleccionadas sobre IA, ciberseguridad, datos y automatización. Aprende rápido con tutoriales de expertos y documentos explicativos, que se envían directamente a su bandeja de entrada. Consulte la Declaración de privacidad de IBM.

Su subscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

https://www.ibm.com/mx-es/privacy

Algo de historia de JWT

El primer borrador para tokens Web JSON ya tiene más de 10 años (es de diciembre de 2010). El borrador inicial establece: “JSON Web Token (JWT) define un formato de token que puede codificar reclamaciones transferidas entre dos partes. Las reclamaciones en un JWT se codifican como un objeto JSON que está firmado digitalmente.“

En su última versión, IETF RFC 7519, se amplió a lo siguiente: “JSON Web Token (JWT) es un medio compacto y seguro para URL de representar notificaciones que se transferirán entre dos partes. Las notificaciones en un JWT se codifican como un objeto JSON que se utiliza como carga útil de una estructura JSON Web Signature (JWS) o como texto sin formato de una estructura JSON Web Encryption (JWE), lo que permite firmar digitalmente las notificaciones o proteger su integridad con un código de autenticación de mensajes (MAC) y/o cifrado.“

La nueva descripción sugiere dos representaciones de un JWT (a menudo pronunciado "jot"), a saber, una firma web JSON (JWS) o una estructura de cifrado web JSON (JWE). JWS se define en RFC 7515, JWE en RFC 7516. Incluso hay algunos estándares de seguridad más relacionados basados en JSON, todos definidos por un grupo de trabajo llamado JOSE: JSON Object Signing and cifrado.

OAuth 2.0 es un estándar de la industria para la autorización. Sin entrar en detalles, ofrece un flujo de autorización y conceptos básicos, incluidos los llamados token de acceso y token de actualización. No es un requisito usarlos, pero los JWT generalmente se usan en estos días. Como se indicó, el enfoque de OAuth está en la autorización y, a veces, también se utilizó indebidamente para manejar la identificación. OpenID Connect agrega esta pieza faltante en el rompecabezas e introduce la identidad o el token de identificación. El token de ID se representa como JWT.

Codificación y decodificación de JWT

Con esa historia y algunos estándares como base, ¿cómo podemos procesar el JWT desde arriba y qué información contiene?

El JWT anterior consta de tres partes, separadas cada una por un punto (‘.’):

  1. Encabezado:: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
  2. Carga útil: eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDASImV4cCI6MTYxMTIzNDU2N30
  3. Firma: _iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM

Tanto el encabezado como la carga útil están codificados en base64url y, sin tener en cuenta el posible relleno, se pueden decodificar así:

henrik@home> base64 -d <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
{"alg":"HS256","typ":"JWT"}

henrik@home> base64 -d <<< eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
{"sub":"1234567890ABC","name":"Henrik Loeser","iat":1611140400,"exp":1611234567}base64: invalid input

El encabezado contiene información sobre el algoritmo utilizado, aquí, HS256 (HMAC SHA256). La carga útil depende del tipo de token (acceso/actualización/ID/...) y se compone de notificaciones. Esos y otros campos predefinidos de encabezado y carga útil de JOSE son gestionados por IANA. En el ejemplo anterior, los campos y reclamaciones son asunto (ect), nombre, emitido a las (iat) y exp (fecha de caducidad).

La firma se calcula aplicando el algoritmo indicado a la concatenación del encabezado, ‘.’ y payload y luego base64url codificando el resultado. A partir de entonces, las tres partes separadas por un punto forman el JWT. Los detalles de cómo se derivan las firmas se definen en RFC 7515.

Puede acceder al JWT anterior en este depurador en línea en JTW.io. Primero, mostrará el mensaje “Firma no válida”. Puede resolverlo reemplazando el secreto predeterminado que se muestra con !!!my-really-big-256-bit-secret!!!.

IBM Cloud y JWT

Debido a que IBM Cloud ofrece muchos servicios en su catálogo y es una aplicación de Internet con muchos componentes propios, hace un uso intensivo de tokens, incluidos los JWT. Probablemente haya utilizado la IBM Cloud Command Line Interface (CLI) y el comando ibmcloud iam oauth-tokens:

Imprime el token de portador de OAuth (token de acceso) para la sesión CLI actual, implementados como JWT. Estos tokens de IAM se utilizan para acceder a servicios en la nube habilitados para IAM

Si desea integrar usuarios externos en su cuenta en la nube, también se utilizan JWT. Los tokens de identidad y sus notificaciones incluidas se intercambian por autenticación para identificar al usuario. Muchas soluciones utilizan el servicio de seguridad IBM Cloud App ID. Ayuda a autenticar a los usuarios y proteger los recursos. Aprovecha los estándares OAuth 2.0 y OpenID Connect mencionados y, por lo tanto, se ocupa de los tokens de acceso, identificación y actualización.

Uno de mis servicios favoritos (y el suyo) es watsonx Assistant para crear un chatbot. Si desea proteger los chats web (es decir, proteger aún más los mensajes intercambiados y certificar el origen de los mensajes), los JWT vienen al rescate.

Por supuesto, hay muchos más ejemplos de cómo se utilizan los JWT para intercambiar fácilmente reclamaciones (de seguridad) y, por lo tanto, reforzar la seguridad de una solución en la nube.

Resumen

Los JWT son un medio fácil e independiente de intercambiar reclamaciones entre dos partes. Son una estructura de datos ubicua, en la nube y on premises. Con suerte, lo anterior fue una introducción útil para que se interese (¡si aún no lo estaba!).

 Si desea examinar y jugar con los JWT usted mismo, le recomiendo una herramienta en línea como https://jwt.io/ para comenzar. Si está más interesado, use un monitor de red o las developer tools en su navegador para tener cuidado con los JWT. Diviértase y consulte nuestros tutoriales de IBM Cloud, que incluyen muchos tutoriales relacionados con la seguridad.

Si tienes feedback, sugerencias o preguntas sobre esta publicación, por favor contacta conmigo en Twitter (@data_henrik) o LinkedIn.

Soluciones relacionadas
Soluciones de seguridad y protección de datos

Proteja los datos en múltiples entornos, cumpla la normativa sobre privacidad y simplifique la complejidad operativa.

    Explore las soluciones de seguridad de datos
    IBM Guardium

    Descubra IBM Guardium, una familia de software de seguridad de datos que protege los datos confidenciales on premises y en la nube.

     

      Explore IBM Guardium
      Servicios de seguridad de datos

      IBM ofrece servicios integrales de seguridad de datos para proteger los datos empresariales, las aplicaciones e IA.

      Explore los servicios de seguridad de datos
      Dé el siguiente paso

      Proteja los datos de su organización en las distintas nubes híbridas y simplifique los requisitos de cumplimiento normativo con soluciones de seguridad de datos.

      Explore las soluciones de seguridad de datos Reserve una demostración en vivo