Integraciones
Breadcrumbs

SSO AWS

Modelo de integración

Autenticación (Oauth2)

La funcionalidad está directamente embebida en el microservicio de gestión de autenticación Zeus, se habilita y configura mediante el fichero de configuración de dicho microservicio.


Configuración de autenticación

En la propiedad security.authentication se configuran los distintos proveedores de autenticación que se utilizan.

En el caso de AWS es necesario configurar las siguientes propiedades:

YAML
security:
  authentication:
    oidc:
      providers:        
        aws:
          # Nombre del proveedor tal y como aparecerá en la página de inicio de sesión
          name: Anjana AWS
          # URL del proveedor para autorizar a los usuarios del Portal Anjana (usar variables en la URL)
          authorize-url: https://${security.authentication.oidc.providers.aws.domain}.auth.${security.authentication.oidc.providers.aws.region}.amazoncognito.com/login?response_type=code&client_id=${security.authentication.oidc.providers.aws.client-id}&redirect_uri=${security.authentication.oidc.providers.aws.redirect-uri}&state=STATE&scope=${security.authentication.oidc.providers.aws.scopes}
          # URL del proveedor para autorizar a los usuarios de Portuno (usar variables en la URL)
          authorize-url-portuno: https://${security.authentication.oidc.providers.aws.domain}.auth.${security.authentication.oidc.providers.aws.region}.amazoncognito.com/login?response_type=code&client_id=${security.authentication.oidc.providers.aws.client-id}&redirect_uri=${security.authentication.oidc.providers.aws.redirect-uri-portuno}&state=STATE&scope=${security.authentication.oidc.providers.aws.scopes}
          # URL del proveedor para gestionar la creación del token
          token-url: https://${security.authentication.oidc.providers.aws.domain}.auth.${security.authentication.oidc.providers.aws.region}.amazoncognito.com/oauth2/token
          # Alcance de la autenticación del proveedor
          scopes: openid+profile
          # Identificador del cliente de autenticación en el proveedor
          client-id: <client-id>
          # Secreto del cliente de autenticación en el proveedor
          client-secret: <client-secret>
          # Método de autenticación del proveedor
          client-authentication-method: GET
          # URI a la que el navegador debe redirigir tras un inicio de sesión exitoso con el proveedor en el Portal Anjana 
          redirect-uri: https://<host>/anjana/authorized
          # URI a la que el navegador debe redirigir tras un inicio de sesión exitoso con el proveedor en el portal administrativo (Portuno)
          redirect-uri-portuno: https://<host>/admin/authorized
          # Campo donde se encuentra el nombre de usuario en el proveedor
          username-claim: cognito:username
          # Tipo de autentificacion según la definicion de Oauth2
          workflowType: AUTHORIZATION_CODE
          # URL del servidor de autorización a la que llamar para obtener la información del usuario
          authorizeServer: https://${security.authentication.oidc.providers.aws.domain}.auth.${security.authentication.oidc.providers.aws.region}.amazoncognito.com/oauth2/userInfo
          # Propiedad en la que se recoge el nombre de usuario del servidor de autorización.
          userNameProperty: username
          # Tipo de proveedor
          type: AWS
          # Region de AWS IAM, usada para generar las URL de autorización
          region: eu-web-1
          # Dominio de AWS IAM, usada para generar las URL de autorización
          domain: anjana-app-desarrollo
          # Identificador del grupo de usuario
          poolID: <poolID>
          # Clave de acceso del usuario adminitrador usado para recuperar los usuarios
          accessKey: <accessKey>
          # Contraseña de la clave de acceso del usuario adminitrador usado para recuperar los usuarios
          secretKey: <secretKey>

Gobierno activo

El plugin a desplegar el cual realizará la parte de las tareas de gobierno activo que tengan que provisionar elementos sobre AWS es “Tot plugin AWS IAM”.

Credenciales requeridas

La credencial puede ser única aglutinando los permisos de ambas, pero se recomienda mantenerlas por separado de cara a facilitar la monitorización y auditoría de la actividad ejercida por las mismas.

Autenticación

La funcionalidad está directamente embebida en el microservicio de gestión de autenticación Zeus, se habilita y configura mediante el fichero de configuración de dicho microservicio.


Es necesario registrar un grupo de usuarios(User Pool) en el servicio Amazon Cognito para aplicaciones OAuth2, habrá que darle un nombre.


Tras la creación del grupos de usuarios es necesario hacer más configuraciones en el apartado “Clientes de aplicación” y dentro del cliente que se ha creado rescatar la siguiente configuración:

  • ID de cliente

  • Secreto de cliente


Además habrá que configurar una Página de inicio de sesión y configurar lo siguiente:

  • las url acorde al nombre de dominio que enrute hasta el frontal de Anjana Data, es necesario dar de alta:

    • URL de devolución de llamadas:

      • https://<host>/authorized

      • https://<host>/login

      • https://<host>/configpanel/authorized

      • https://<host>/configpanel/login

    • URL de cierre de sesión

      • https://<host>/logout

      • https://<host>/configpanel/logout

  • Tipo de concesión OAuth2

    • Aquí el tipo de flujo que más se desee


Por último, en el apartado de Creación de marca / Dominio se debe editar el dominio de Cognito, que vendrá con una concatenación de región y un hash y rellenar con un nombre identificativo en minúsculas y sin caracteres especiales como espacios (es una URL).

Gobierno activo

El plugin a desplegar el cual realizará la parte de las tareas de gobierno activo que tengan que provisionar elementos sobre AWS es “Tot plugin AWS IAM”, en su documentación queda descrita la credencial requerida.

Emulación SSO vía Oauth2

El protocolo Oauth2 observa la autenticación transparente en caso de que sea posible, para lo cual solo es necesario redirigir al usuario a https://<host>/provider=<identificador de provider en zeus>, si el usuario ya está logado en dicho provider y las políticas configuradas en dicho provider hacen que no se requiera validar nuevamente la credencial, el usuario será autenticado en Anjana Data de forma totalmente transparente.