Conoce más sobre GeneXus
7 Min.

Seguridad en sistemas: Todo sobre los nuevos esquemas de autenticación con GeneXus

En
este post describiré los nuevos esquemas de autenticación que estamos soportando en GAM.


GAM significa GeneXus Access Manager, y es una funcionalidad que va incorporada en GeneXus para resolver los temas de autenticación y autorización de sus aplicaciones.

Para introducir las herramientas nos preguntaremos: ¿En qué anda el mundo de la seguridad y autenticación?

En la encuesta de Auth0, donde se presenta qué es lo que se ofrece en el mercado referente a los esquemas de autenticación, se desprenden los siguiente datos:

  • El 28% está ofreciendo multi factor authentication, que es lo mismo que Two Factor Authentication, esto significa que el usuario tiene que validar dos factores para ingresar a la aplicación. Generalmente el primer factor es la contraseña y el segundo es un número randómico o algo que se envía a través de un email o SMS.
  • El 45% está ofreciendo single sign-on a través de servicios existentes. Esto es algo muy bueno para los usuarios finales, ya que las empresas están dando la posibilidad de tener un único ingreso de usuario y contraseña, y les permite así acceder a todas sus aplicaciones o productos.
  • El 21% está ofreciendo autenticación biométrica, eso principalmente se da en las aplicaciones nativas en los dispositivos móviles.
  • Después tenemos el 31% que está ofreciendo autenticación a través de las redes sociales. Las más utilizadas son Google, Facebook y Twitter.
  • Y el 20% está permitiendo ingresar a los usuarios sin tener una contraseña. Este mecanismo trata de que el usuario no tenga una contraseña para ingresar a la aplicación, sino que simplemente ingresa un email y el sistema le envía un correo electrónico con el código de acceso para acceder a esa aplicación. Ese código vale una única vez y por un periodo muy corto de tiempo.

¿Qué ofrece GeneXus para resolver todos estos esquemas de autenticación?

Veámos qué tiene GeneXus para configurar cada uno de estos esquemas de autenticación:

  • OAuth 2.0, 
  • OpenID Connect, 
  • One-Time Password, y
  • Two-Factor Authentication. 

OAuth 2.0 Protocol 

Oauth 2.0 es el protocolo más utilizado entre los diferentes proveedores de Identidades; entre ellos se destacan Google, Facebook, Microsoft, etc.

¿Cómo funciona el protocolo OAuth 2.0? Pongamos un ejemplo puntual: tenemos un usuario final que va a navegar por una aplicación y en Internet tenemos 3 aplicaciones (ver imagen abajo). Estas aplicaciones son 3 bases de conocimiento independientes con su propia base de datos y cada una tiene activado GAM.

Las dos aplicaciones de los extremos son los Clientes y la aplicación central es el Identity Provider. Yo llamé a los clientes “Download Center”, y el otro el sitio de “GeneXus.com,” y el Identity Provider podría ser el “GeneXus Account”.

Cuando el usuario va a acceder en esta aplicación, la misma sabe que se autentica con un Identity Provider, por lo cual la aplicación redirecciona al Identity Provider, éste despliega su pantalla de Inicio de Sesión.

Esta es una de las cosas fuertes, las credenciales sólo se ingresan en el Identity Provider, no se ingresan en los clientes. El Identity Provider es el responsable de validar esas credenciales y si validan correctamente, le responde al cliente, y el cliente ya muestra la pantalla del usuario autenticado.

Ahora, el protocolo OAuth 2.0 es un poco más complejo que esto, aquí entre el Identity Provider y el Cliente hay más intercambio de información. Lo que responde el Identity Provider al Cliente es lo que se denomina un access_code y el cliente con ese código solicita el token y luego que obtiene el token solicita la información del usuario de ese token.
Después que tiene toda esa información en su base de datos local, se crea o actualiza el usuario, se crea una sesión y un token local y ahí sí termina la autenticación. Por detrás ocurre todo eso, ocurre el estándar de OAuth 2.0.

¿Qué sucede si navegando por esta aplicación voy a acceder a otra aplicación que también se autentica con el mismo Identity Provider?

Lo que va a suceder es que cuando llega el Identity Provider detecta que ya está autenticado y él ya directamente le responde el access_code a esta aplicación; acá también se crea o actualiza el usuario y después se redirige a la pantalla con el usuario autenticado. Vean que no solo centraliza la autenticación, sino que con esto ya ganamos al tener single sign-on entre todas las aplicaciones de la empresa.

¿Qué tanto trabajo lleva implementarlo en nuestras aplicaciones?

Con GeneXus, lo bueno es que no tienen que programar nada, es simplemente configurar.

En este video explico el paso a paso para la configuración de seguridad con GAM.

OpenID Connect

Open ID Connect se está transformando en el protocolo más común utilizado entre todos los proveedores de identidades. Eso se da porque Open ID Connect corre dentro de Oauth 2.0 y digamos que lo termina de estandarizar, porque Oauth 2.0 no tiene en el estándar cómo obtener la información del usuario.

Entonces, lo que ustedes configuraban en este tab de User Information ahora, si utilizan Open ID Connect, no es necesario configurarlo. Pueden dejar esa URL en blanco. Lo que nos pasaba hasta hoy es que el User Information cada Identity Provider devolvía los datos que el Identity Provider quería.

Ahora hay un estándar y ustedes lo pueden configurar en el sector de Autorización. Cuando entren ahí, van a tener una opción para habilitar este protocolo Open ID Connect y si simplemente lo habilitan, el GAM comienza a almacenar una nueva propiedad que retorna el Identity Provider que se llama ID Token. El GAM lo almacena y se lo deja disponible para que ustedes lo puedan usar. Si necesitan hacer algún request a ese Identity Provider lo pueden utilizar. Pero para habilitar el 100% del protocolo tendrían que habilitar la validación, donde dice Validate IDToken. El ID Token es un JSON web token que está firmado por el proveedor.

Por eso acá tienen que confirmar quién es el proveedor del ID Token y tienen que tener en su servidor local, en una ruta local del servidor, es un certificado público de ese proveedor. Con esto se obtiene ese JSON Web Token que, entre otras cosas, tiene la información del usuario autenticado.

One-Time Password (OTP)

Es un nuevo tipo autenticación de GAM, así como podían configurar autenticación con Google o Facebook.

Recuerden que One Time Password es una password que se autogenera y la puede usar una única vez por un período corto de tiempo. Ustedes pueden elegir el largo, si la clave que se genera son solo números o si quieren que sea alfanumérico.

Puede seleccionarse qué tiempo de vida útil tiene ese código auto generado y muchas otras propiedades de seguridad.

Si les interesa  específicamente este método de autenticación, les sugiero esta lectura: One Time Passwords (OTP) y segundo factor de autenticación (2FA)

Two-Factor Authentication

También es conocido como Multi Factor Authentication, en ambos casos se van a validar siempre dos factores.

Normalmente se valida primero una contraseña. Nosotros los tenemos disponibles en todos los tipos de autenticación que no hacen un redireccionamiento para autenticar. Esos tipos de autenticación son: Local, Custom, External Webservice y GAMRemoteRest.

En esos van a ver estas las propiedades nuevas donde ustedes pueden habilitar esta funcionalidad. Luego lo que van a elegir es cuál es el segundo tipo de autenticación que van a utilizar. Como segundo factor van a poder seleccionar los Tipos de Autenticación One Time Password que ustedes hayan definido en este mismo GAM. Ustedes definen como quieren que se genere ese segundo tipo autenticación y también van a poder configurar el tiempo, la vida útil que va a tener el usuario para validar los dos factores de autenticación. En este caso, si se superan los 900 segundos en validar los dos factores, tiene que volver a validar el primer factor.

Otra propiedad interesante es que ustedes pueden marcar si quieren que todos los usuarios de su aplicación estén forzados a hacer Two Factor Authentication o si no la marcan, es que cada usuario puede ir a seleccionar si quiere o no utilizar este mecanismo de autenticación.

No se pierdan este video 2FA, contraseña de un solo uso, OpenID: Todo sobre los nuevos esquemas de autenticación, donde profundizo todos estos conceptos y doy algunos tips técnicos para que ustedes puedan desarrollar sus aplicaciones integradas entre sí e integradas a todos los esquemas de autenticación existentes. ¡Todo utilizando GeneXus 17!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver al incio