Monday, December 30, 2024

Week #3: Arquitectura y servicios

Infraestructura global de Azure

  • Proveedor de Cloud Computing global
  • Regiones de Azure
    • Regiones emparejadas
    • Regiones soberanas
  • Zonas de disponibilidad de Azure: Permiten tener alta disponibilidad
  • Centros de Datos de Azure
  • Puntos de presencia de Azure (PoP)
https://datacenters.microsoft.com/globe/explore/

Regiones

  • Imagina configurar centros de datos en diferentes regiones de todo el mundo.
    • ¿Sería fácil? NO
  • (Solución) Azure ofrece más de 60 regiones en todo el mundo
    • Expandiéndose cada año
  • Una región es una ubicación geográfica específica para alojar tus recursos.
  • Las ventajas que aportan las regiones son:
    • Alta disponibilidad
    • Baja latencia
    • Cumplimiento de las regulaciones gubernamentales

¿Cómo elegir una región de Azure?

  • Cumplimiento de los requisitos legales y de gobernanza de datos: los datos nunca salen de una región sin tu permiso explícito
  • Proximidad a los clientes: latencia reducida
  • Servicios disponibles en una región: los nuevos servicios y las nuevas funciones no están disponibles en todas las regiones
  • Precios: los precios varían de una región a otra y son transparentes en la página de precios del servicio.


Regiones emparejadas

  • Cada región está emparejada con otra región en el mismo límite geopolítico para proporcionar resistencia si se produce un error catastrófico en la región
  • Los objetivos de las regiones emparejadas son:
    • Mejorar la resiliencia y disponibilidad
    • Asegurar la continuidad del negocio y la recuperación ante desastres
  • Y sus características destacables son:
    • Separación geográfica para resistir fallos en una amplia región
    • Actualizaciones secuenciales para minimizar interrupciones
    • Opción para replicar datos entre regiones emparejadas
https://learn.microsoft.com/es-es/azure/reliability/cross-region-replication-azure#azure-cross-region-replication-pairings-for-all-geographies

Regiones soberanas

  • Las regiones soberanas de Azure son centros de datos específicamente diseñados para cumplir con los requisitos reglamentarios y de cumplimiento de una jurisdicción o nación particular.
  • Microsoft no las administra necesariamente y podrían estar restringidas a determinados tipos de clientes.
  • Los objetivos de las regiones soberanas son:
    • Garantizar la soberanía de los datos y la privacidad.
    • Satisfacer necesidades reglamentarias locales.
  • Y sus características destacables son:
    • Operación y residencia de datos dentro de fronteras específicas
    • Conexiones de red más aisladas y específicas de la región
  • Ejemplos: Azure China 21Vianet, Azure Alemania, Azure Government: EE. UU.

Zonas de disponibilidad

  • ¿Cómo lograr una alta disponibilidad en la misma región (o ubicación geográfica)?
    • Mediante zonas de disponibilidad (AZ)
  • Cada zona de disponibilidad (AZ) es uno o varios centros de datos discretos con alimentación, red y conectividad redundantes.
  • Las zonas de disponibilidad de una región están conectadas mediante un enlace de baja latencia.
  • Están separadas unas de otras, de modo que están aisladas de las catástrofes.
  • NOTA: No todas las regiones de Azure tienen zonas de disponibilidad.


Puntos de Presencia (PoP)

  • Un punto de presencia (PoP) se refiere a un punto físico de interconexión entre diferentes redes que facilita la entrega rápida y confiable de contenido y servicios a los usuarios finales.
  • Las ventajas del uso de puntos de presencia (PoPs) son:
    • Rendimiento mejorado: Reducción de la latencia y optimización de la velocidad de conexión.
    • Expansión global: Azure tiene PoPs en varias localidades alrededor del mundo, facilitando la entrega local a usuarios globales.
  • Si una empresa en América Latina tiene usuarios en China, mediante los PoPs, Azure puede entregar el contenido desde un punto más cercano en China, reduciendo la latencia y mejorando la experiencia del usuario.

Infraestructura de Azure: Desafío + Soluciones

  • Imagina que tu aplicación está desplegada en un centro de datos en Londres.
  • ¿Cuáles serían los desafíos?
    • Desafío 1: Acceso lento para usuarios de otras partes del mundo (alta latencia)
    • Desafío 2: ¿Qué sucede si el centro de datos falla?
      • Tu aplicación se cae (baja disponibilidad).

Múltiples centros de datos

  • Agreguemos otro centro de datos en Londres. Con esto resolvemos el reto de la baja disponibilidad.
  • ¿Cuáles son los retos?
    • Desafío 1: el acceso de los usuarios en otras partes del mundo es lento.
    • Desafío 2 (resuelto): ¿Qué sucede si uno de los centros de datos falla?
      • Tus aplicaciones aún están disponibles desde otros centros de datos.
    • Desafío 3: ¿Qué pasa si toda el área de Londres no está disponible?
      • La aplicación se bloquea.

Múltiples regiones

Agreguemos una nueva región: Mumbai. ¿Cuáles son los retos?
  • Desafío 1 (parcialmente resuelto): Acceso lento para usuarios de otras partes del mundo.
    • Esto se puede resolver agregando implementaciones para su aplicación en otras regiones.
  • Desafío 2 (resuelto): ¿Qué sucede si el centro de datos falla?
    • La aplicación todavía está en línea en otros centros de datos.
  • Desafío 3 (resuelto): ¿Qué pasa si toda el área de Londres no está disponible?
    • La aplicación es proporcionada por Mumbai.


Recursos y grupos de Recursos

Un recurso es un elemento administrable que está disponible a través de Azure. Algunos ejemplos de recursos son:
  • Máquinas virtuales
  • Aplicaciones web
  • Bases de datos
  • Redes virtuales
Los grupos de recursos, las suscripciones, los grupos de administración y las etiquetas también son ejemplos de recursos.



Un grupo de recursos es un contenedor que almacena los recursos relacionados con una solución de Azure. Puede incluir todos los recursos de la solución o solo aquellos que se desean administrar como grupo. Se recomienda agregar recursos que compartan el mismo ciclo de vida al mismo grupo de recursos para que los pueda implementar, actualizar y eliminar con facilidad como un grupo.


NOTA: Los grupos de recursos almacenan metadatos acerca de los recursos.


Suscripciones

  • Las suscripciones permiten organizar y controlar el acceso, costos y facturación.
  • Son muy útiles para separar diferentes unidades de trabajo, proyectos o entornos
    • prod, dev, test
  • Cada suscripción tiene límites en la cantidad y tipo de recursos que puedes crear
  • Se factura por suscripción, permitiendo un seguimiento detallado de los costos
  • Mediante el control de acceso se define quién tiene acceso y qué pueden hacer con los recursos dentro de la suscripción
  • NOTA: Es posible tener múltiples suscripciones bajo una sola cuenta de Azure



Grupos de Administración

  • Un grupo de administración es una estructura jerárquica que permite organizar y administrar múltiples suscripciones de Azure.
  • Las características clave de los grupos de administración son:
    • Organiza suscripciones en una estructura jerárquica (en árbol)
    • Aplica políticas y iniciativas consistentemente a todas las suscripciones dentro de un grupo
    • Establece roles y permisos a nivel de grupo para administrar el acceso a las suscripciones y recursos de manera unificada.
  • Casos de uso:
    • Diferentes departamentos en una organización
    • Distintos entornos (prod, dev, test)



Servicio Globales y Regionales

Azure cuenta con servicios globales: Disponible en todas las regiones de Azure o múltiples regiones. Ofrecen una experiencia uniforme sin importar la ubicación del usuario. No está enlazada a ninguna ubicación. 
  • Azure Active Directory (Gestión de identidad y acceso)
  • Azure Traffic Manager (Balanceador de tráfico DNS)
La mayoría de los servicios de Azure son de ámbito regional: Ubicado en una ubicación geográfica específica. 
  • Azure Virtual Machines (VMs)
  • Azure App Service
  • Azure Functions
Tabla de regiones:
  • https://azure.microsoft.com/es-es/explore/global-infrastructure/geographies

Resumen - Arquitectura y servicios

  • Regiones: Áreas geográficas específicas donde se localizan los centros de datos de Azure
    • Regiones emparejadas: Pares de regiones conectadas entre sí para garantizar la continuidad del servicio y la recuperación de desastres
    • Regiones soberanas: Regiones de Azure diseñadas para cumplir con requisitos de residencia y cumplimiento de datos locales
  • Zonas de disponibilidad (AZ): Centros de datos separados físicamente dentro de una región para proporcionar resistencia a fallas
  • Puntos de Presencia (PoP): Ubicaciones de red que facilitan la conexión rápida y confiable a los servicios de Azure
  • Recursos y grupos de recursos: Unidades individuales de servicios y sus agrupaciones lógicas para facilitar la gestión en Azure
  • Suscripciones: Permiten organizar y controlar el acceso, costos y facturación
  • Grupos de administración: Estructura jerárquica que permite organizar y administrar múltiples suscripciones
  • Servicios globales y regionales


Friday, December 27, 2024

Modern Software Engineering: Doing What Works to Build Better Software Faster - David Farley

 

Download

Implementación de seguridad con ASP.NET

Sesión 4: 4h14m

Implementar la securización en el servicio

  • Implementar la securización en el servicio Library.Service
  • Cuanto ejecute mi servicio, este me debe pedir un token el cual será validado contra el proveedor de identidad.
  • Agregamos extensiones: Library.Service/Infrastructure/Security/Extensions
  • Modificar archivo Library.Service/Infrastructure/Extensions/InfrastructureExtensions.cs
  • Activar autenticación/autorización de .NET en Program.cs
    • app.UseAuthentication()
    • app.UseAuthorization()

Agregar el mecanismo de seguridad a los Endpoints de manera granular



Agregar extensión al Swagger para que permita agregar token.

Monday, December 23, 2024

Week #2: Qué es Cloud Computing

Vista general de las Insfraestructuras tradicionales


Infraestructuras tradicionales
  • Infraestructura física
  • Centro de datos en la oficina (Datacenter)
Problemas con el enfoque tradicional de las IT
  • Pagar el alquiler del centro de datos
  • Pagar el suministro eléctrico, la refrigeración y el mantenimiento
  • Añadir y sustituir el hardware lleva tiempo
  • El escalado es limitado
  • Contratar un equipo 24/7 para supervisar la infraestructura
  • ¿Cómo hacer frente a las cátástrofes (terremoto, apagón, incendio,...)?
  • ¿Podemos externalizar todo esto? Llevar la infraestructura tradicional a algo más para resolver estos problemas. 
  • Cloud Computing es la solución a todo estos problemas.

¿Qué es Cloud Computing?

  • El Cloud Computing (Computación en la nube) es el suministro bajo demanda de potencia de cálculo, almacenamiento en bases de datos, aplicaciones y otros recursos informáticos.
  • A través de una plataforma de servicios en el cloud con precios de pago por uso.
  • Puedes aprovisionar exactamente el tipo y el tamaño de los recursos informáticos que necesitas.
  • Puedes acceder a tantos recursos como necesites, casi al instante.
  • Forma sencilla de acceder a servidores, almacenamiento, bases de datos y un conjunto de servicios de aplicaciones.
  • Microsoft Azure posee y mantiene el hardware conectado a la red necesario para estos servicios de aplicaciones, mientras que aprovisionas y utilizas lo que necesitas a través de una aplicación web.


Modelos de despliegue en el Cloud

Cloud privado: Servicios en el cloud utilizados por una sola organización, no expuestos al público.
  • Control total
  • Seguridad para aplicaciones sensibles
  • Satisfacer necesidades empresariales específicas

Cloud público: Recursos en el cloud que son propiedad de un proveedor de servicios en el
cloud y son operados por él, y que se suministran a través de Internet.
  • Seis ventajas de la computación en el cloud

Cloud híbrido: Mantener algunos servidores en las instalaciones y extiende algunas capacidades al cloud.
  • Control de los activos sensibles en tu infraestructura privada
  • Flexibilidad y rentabilidad del cloud público



5 Características del Cloud Computing


Autoservicio bajo demanda (on-demand):
  • Los usuarios pueden aprovisionar recursos y utilizarlos sin interacción humana del proveedor de servicios.
Amplio acceso a la red:
  • Los recursos están disponibles a través de la red, y pueden ser accedidos por diversas plataformas de clientes.
Alquiler múltiple y agrupación de recursos:
  • Varios clientes pueden compartir la misma infraestructura y aplicaciones con seguridad y privacidad
  • Múltiples clientes reciben servicio desde los mismos recursos físicos
Rápida elasticidad y escalabilidad:
  • Adquirir y disponer de recursos de forma automática y rápida cuando sea necesario
  • Escala rápida y fácilmente en función de la demanda
Servicio medido:
  • El uso se mide, los usuarios pagan correctamente por lo que han utilizado


6 Ventajas del Cloud Computing


Cambia el gasto de capital (CAPEX) por el gasto operativo (OPEX)
  • Pagar bajo demanda: no poseer el hardware
  • Reducción del coste total de propiedad (TCO) y de los gastos operativos (OPEX)
Te beneficias de economías de escala masivas
  • Los precios se reducen ya que Azure es más eficiente debido a la gran escala
Deja de adivinar la capacidad
  • Escala basada en el uso real medido
Aumentar la velocidad y la agilidad
  • Centros de datos más cerca de mis clientes
  • Respuestas más rápidas
Deja de gastar dinero en el funcionamiento y el mantenimiento de los centros
de datos

Se global en minutos: aprovecha la infraestructura global de Azure


Problemas resueltos por el Cloud Computing

  • Flexibilidad: cambia los tipos de recursos cuando sea necesario
  • Rentabilidad: paga por lo que utilizas
  • Escalabilidad: permite acomodar mayores cargas reforzando el hardware o añadiendo nodos adicionales.
  • Elasticidad: capacidad de reducir y aumentar la escala cuando sea necesario
  • Alta disponibilidad y tolerancia a los fallos: construye a través de los centros de datos (data centers).
  • Agilidad: desarrollar, testear y lanzar rápidamente aplicaciones de software

Diferentes tipos de Cloud Computing

Infraestructura como servicio (IaaS)
  • Proporciona bloques de construcción para la IT en el cloud
  • Proporciona redes, ordenadores y espacio de almacenamiento de datos
  • Máximo nivel de flexibilidad
  • Fácil paralelismo con la IT tradicional en las instalaciones
  • Ejemplos:
    • Azure Virtual Machines (en Azure)
    • Amazon EC2 (AWS), GCP, Rackspace, Digital Ocean, Linode

Plataforma como servicio (PaaS)
  • Elimina la necesidad de que tu organización gestione la infraestructura subyacente
  • Se centra en el despliegue y la gestión de tus aplicaciones
  • Ejemplos:
    • Azure App Service (en Azure)
    • Elastic Beanstalk (AWS), Heroku, Google App Engine (GCP)

Software como servicio (SaaS)
  • Producto completo que es ejecutado y gestionado por el proveedor de servicios
  • Ejemplos:
    • Varios servicios de Azure, como Azure Cognitive Services para Machine Learning.
    • Google Workspace (Gmail), Dropbox, Zoom

Visión general de los precios del Cloud

Azure tiene 3 fundamentos de precios, siguiendo el modelo de precios de pago por uso:
  • Computación:
    • Pagar por el tiempo de computación
    • Funciones, maquinas virtuales, contenedores
  • Almacenamiento:
    • Paga por los datos almacenados en el Cloud
  • Transferencia de datos FUERA del Cloud:
    • La transferencia de datos hacia adentro es gratuita
Resuelve el costoso problema de las IT tradicionales

https://azure.microsoft.com/en-us/pricing/calculator/


Vista general de Azure

¿Qué es Microsoft Azure?
  • Microsoft Azure es un proveedor de Cloud
  • Te proporcionan servidores y servicios que puedes utilizar bajo demanda y escalar fácilmente
  • Azure ha revolucionado la IT a lo largo del tiempo
  • Azure impulsa algunos de los mayores sitios web del mundo: HP, Starbucks, LinkedIn, Walmart, Adobe, etc.

Números de Azure
  • En 2024, Azure ha tenido 245.122 millones de dólares en ingresos
  • Azure en 2024 ha crecido un 15.67% (en un año)
  • Azure ha tenido el mayor crecimiento los últimos 5 años
  • Amazon Web Services (AWS) sigue liderando el mercado

Casos de uso del Cloud de Azure
  • Azure permite crear aplicaciones sofisticadas y escalables
  • Aplicable a un conjunto diverso de industrias
  • Los casos de uso incluyen
    • IT para empresas
    • Copias de seguridad y almacenamiento
    • Alojamiento de sitios web, aplicaciones móviles y sociales
    • Inteligencia Artificial y Machine Learning

Pilares fundamentales del Cloud

  • Gobernanza: Herramientas y prácticas que permiten a las organizaciones gestionar y supervisar sus recursos en la nube, asegurando el cumplimiento de políticas y estándares
  • Confiabilidad: Garantiza un funcionamiento estable y constante del servicio, reduciendo fallos y maximizando el tiempo de actividad de las aplicaciones y datos
  • Previsibilidad (Predicción): Capacidades analíticas que permiten anticipar el comportamiento de los recursos y cargas de trabajo, facilitando la planificación y optimización de recursos
  • Manejabilidad: Facilita el monitoreo, la gestión y la administración de recursos en la nube, proporcionando herramientas intuitivas para un control simplificado
  • Seguridad: Protección integral de datos, aplicaciones y redes con soluciones avanzadas que detectan y responden a amenazas, asegurando la integridad y privacidad de la información

Modelo de responsabilidad compartida



Links:


Thursday, December 19, 2024

Week #1: Definición de objetivos, desglose de trabajo

Objetivo

  • Aprobar la certificación Microsoft Azure AZ-900 antes del 31 de mayo de 2025, completando al menos el 90% del material de estudio disponible y logrando una puntuación mínima de 700 puntos en el examen.

Materiales de preparación

Desglose de trabajo



Azure Certification Path for Devs
  • AZ-900: Microsoft Azure Fundamentals
    • Introducción a los conceptos de nube, servicios básicos de Azure y modelos de precios.
  • AZ-204: Developing Solutions for Microsoft Azure
    • Creación de soluciones en Azure, ideal para desarrolladores.
  • AZ-400: Designing and Implementing Microsoft DevOps Solutions
    • Diseño e implementación de procesos DevOps en Azure.
Estas certificaciones cubrirán desde los fundamentos hasta habilidades avanzadas en desarrollo y DevOps con Azure. 



Source: https://www.pluralsight.com/resources/blog/cloud/which-azure-certification-is-right-for-me



Wednesday, December 4, 2024

Keycloak, Características, Instalacion y configuración

 Sesión 4: 3h41m30s

Hoy en dia las organizaciones usan proveedores de identidad.

Una vez que el proveedor de identidad te redirecciona a tu aplicación puedes seguir trabajando sin hacer uso del usuario y password sino con los tokens de acceso e identificación que entregó el proveedor de identidad.

Hay varios proveedores de identidad:

  • Azure AD
  • Google
  • Facebook 
  • IdentiyServe 4
  • WCO2 Identiy Server
  • Keycloak
Estos tres últimos puedes instalar de manera standalone. 
ASP.NET Identity Core te provee un gestor de identidad (no tan robusto).

Keycloak

  • Es un servidor de autenticación y gestión de identidad de código abierto que proporciona autenticación de usuarios con gran variedad de características.
  • Fue desarrollado por Red Hat y es ampliamente utilizado para la autenticación en aplicaciones modernas.
  • Soporta protocolos estándar de la industria como OpenID Connect, OAuth 2.0, JWT, SAML entre otros. Esto significa que puede integrarse con una gran cantidad de aplicaciones y servicvios sin necesidad de implementar su propia solución de autenticación.

Carecterísticas de Keycloak



Instalación y Configuración

Sesión 4: 3h51m30s

  • Agregar archivo de configuración Configuration.txt en la siguiente ruta: app/Backend/Infrastructure/Security/keycloak y seguir los pasos definidos en dicho archivo.
  • Crear base de datos llamada "keycloak" en SQL Server
  • Instalar la última version de keycloak: https://www.keycloak.org. Lo agregamos en "docker-compose.yml".
  • Levantamos servidor de keycloak: docker compose up -d keycloak
  • Acceder al servidor keycload "http://localhost:8081" con user/pass definido (admin/Password1234)
  • Crear un "realm" sería como un entorno de la aplicación. Real name: "fullstack"
  • Crear un cliente para que consuma nuestro library.service.
  • ...
  • Test keycloak
    • POST http://localhost:8081/realms/fullstack/protocol/openid-connect/token
    • BODY TYPE: x-www-form-urlencoded
    • BODY
      • grant_type: password
      • client_id: library.service
      • username: javier
      • password: password
      • client_secret: <from client>

Oauth2, OpenID Connect y JWT

Sesión 4: 3h06m40s

Para implementar los proceso de autenticación y autorización vamos a utilizar Oauth2, OpenID Connect y JWT.

OAuth 2.0 (Token de acceso)

  • OAuth 2.0 (Open Authorization) es un protocolo de autorización que permite a una aplicación obtener acceso limitado a los recursos de un usuario en otro servicio web.
  • Protocolo que permite a los usuarios compartir su información almacenada en un sitio web con otro sitio web sin necesidad de proporcionar sus credenciales de inicio de sesion.
  • En lugar de compartir contraseñas, las aplicaciones obtienen tokens de acceso que se pueden ser utilizados para acceder a ciertos recursos en nombre del usuario. Estos tokens de acceso son emitidos por un servidor de autorización después de que el usuario ha proporcionado su consentimiento.
  • OAuth 2.0 es ampliamente utilizado en la web por servicios como Google, Facebook, Twitter y Microsoft para permitir el uso de funcionalidades de sus plataformas en otras aplicaciones. Por ejemplo, una aplicación puede utilizar OAuth 2.0 para obtener permiso para acceder a los datos de tu calendario en Google, o para publicar actualizaciones de estado en tu nombre en Twitter.
  • Es importante destacar que OAuth 2.0 es un protocolo de autorización, no de autenticación. Aunque a menudo se utiliza en combinación con protocolos de autenticación como OpenID Connect, OAuth 2.0 por sí solo no proporciona formas de autenticar la identidad de los usuarios. La autenticación la hace un proveedor.

Flujos de concesión Oauth2

  • Authorization Code Grant: Este es flujo más común y se utiliza para aplicaciones que se ejecutan en un servidor web. El proceso implica redirigir al usuario a un servidor de autorización, que luego redirige de vuelta a la aplicación con un código de autorización. Este código se intercambia por un token de acceso. Se usa en aplicaciones web o mobile.
  • Implicit Grant: Este flujo fue diseñado para aplicaciones basadas en JavaScript que se ejecutan en el navegador del usuario. En lugar de recibir un código de autorización que debe ser intercambiado por un token de acceso, la aplicación recibe directamente el token de acceso. Este flujo se considera menos seguro y ya no se recomienda su uso. 

  • Resource Owner Password Credentials: Este flujo permiete a la aplicación recoger las credenciales del usaurio (nombre de uusario y contraseña) y usarlas para obtener un token de acceso directamente. Este flujo solo recomienda para aplicaciones de confianza, como las creadas por el mismo servicio que proporciona la API. Cuando quieres implementar tu propio Login (usualmente para aplicaciones antiguas).
  • Client Credentials Grant: Este flujo es aplicaciones que acceden a su propio servicio, no en nombre de un usuario. La aplicación utiliza sus propias credenciales para obtener un token de acceso. Se usa para que una aplicación acceda a otra aplicación. 


OpenID Connect (Token de identificación)

  • OpenID Connect es un estándar de autenticación que se construye sobre el protocolo OAuth 2.0. Mientras que OAuth 2.0 se utiliza para la autorización, OpenID Connect introduce el concepto de un ID token, que permite a la aplicación cliente verificar la identidad del usuario.
  • El ID token contiene información sobre el usuario. Esta información puede incluir el nombre de usuario, la dirección de correo electrónico, la imagen de perfil y otros datos que el usuario ha acordado compartir.
  • OpenID Connect genera un token de identificación. No hay nada de permisos, solo me identifico. 
  • En vez de estar usando mis credenciales para realizar una operación, OpenID me entrega una llave (un token) que va a representar mi usuario y contraseña. La particularidad de este token es que tiene un tiempo de vida.
  • OpenID Connect también introduce un nuevo endpoint, el endpoint de userinfo, que la aplicación cliente puede utilizar para obener más información sobre el usuario una vez que ha obtenido un token de acceso.
  • OpenID Connect se utiliza para autenticar al usuario y proporcionar información sobre su identidad a la aplicación. Esto lo convierte en una solución ideal para el inicio de sesión único (SSO), donde un usuario puede iniciar sesión en varias aplicaciones con una sola cuenta.

OpenID Connect utiliza OAuth para la generación del token de acceso.
  • Authorization Code Flow. Este el flujo que tenemos que usar para autenticar todas nuestras aplicaciones.
  • Implicit Flow. Este flujo se considera menos seguro para la autenticación y ya no se recomienda su uso.
  • Hybrid Flow. 


Tokens

  • Un token es una cadena de caracteres generada por un servidor en respuesta a una solicitud válidad de autenticación. Este token representa la identidad del usuario (token de identificación) y los permisos de acceso (token de acceso), y se utiliza para acceder a recursos protegidos.
  • Un token es como un pase de acceso digital que permite al usuario acceder a ciertos recursos y realizar ciertas operaciones. Es una parte esencial de los sistemas de autenticación y autorización modernos.

Características de un token

  • Identificación del usuario: Un token representa a un usuario específico. Contiene información (llamada "claims" o afirmaciones) que identifica al usuario ante el servidor. Esta información puede incluir el ID del usuario, el nombre de usuario, el correo electrónico y otros datos.
  • Autorización: Además de identificar al usuario, un token también puede contener información sobre los permisos del usuario. Esto permite al servidor determinar qué recursos puede acceder el usuario y qué operaciones puede realizar.
  • Seguridad: Son emitidos por un servidor de autorización después de que el usuario se ha autenticado correctamente. Los tokens pueden ser firmados digitalmente para garantizar su integridad y autenticidad, y también pueden ser cifrados para proteger la información que contienen.
  • Formato: Los tokens pueden estar en varios formatos, como JWT (JSON Web Tokens), SAML (Security Assertion Markup Language), tokens opacos y PASETO (Platform-Agnostic Security Tokens). Cada formato tiene sus propias características y usos.
  • Vida útil: Los tokens tienen una vida limitada. Una vez que un token ha expirado, ya no puede ser utilizado para acceder a recursos, y el usuario debe autenticarse de nuevo para obtener un nuevo token.

Formatos de un token



¿Qué es un JWT?

  • JSON Web Token es un estándar abierto de la industria que se usa para compartir información entre dos entidades, generalmente un cliente (como el front-end de su aplicación) y un servidor (el backend de su aplicación).
  • Contiene objetos JSON que tiene la información que necesita ser compartida. Cada JWT se firma mediante criptografía (hashing) para garantizar qaue el contenido JSON (también conocido como notificaciones JWT) no pueda ser alterado por el cliente o una parte malintencionada.

Estructura de un JWT

Un JWT contiene tres partes:
  • Cabecera: Consta de dos partes:
    • El algoritmo de firma que se está utilizando.
    • El tipo de token, que, en este caso, es principalmente "JWT".
  • Carga útil: la carga contiene las notificaciones o el objeto JSON.
  • Firma: Una cadena que se genera a través de un algoritmo criptográfico que se puede utilizar para verificar la integridad de la carga útil JSON.





Autenticación / Autorización

Sesión 4:  3h05m40s

Autenticación: El proceso de identificar quién es el consumidor.

Autorización: El proceso de identificar lo que el consumidor puede hacer. Saber que permisos tiene o no sobre los recursos de un sistema.




Sunday, December 1, 2024

Desafíos de la seguridad perimetral

Sesión 4: 3h3m

Cuando hablamos de seguridad implica que tendremos datos reservados en el que no todos tengan acceso. Habrán servicios (o componentes) que necesitarán acceder a dichos datos además de comunicarse entre sí de manera segura.

Tipos de consumidor

  • Humano (usuario)
  • No humano (Servicio o sistema)







Cuando el código funciona, pero no tiene tests: ¿y ahora qué?

Seguramente te ha pasado alguna vez. Te dan acceso al repositorio de un nuevo proyecto. Lo abres con curiosidad, esperas encontrar una estru...