Integraciones

SSO SAML 2.0

El protocolo SAML 2.0 es un estándar de federación ampliamente utilizado en entornos corporativos. Anjana Data permite configurar múltiples proveedores de identidad (IdP) simultáneamente bajo la sección security.authentication.saml2.

Prerequisito: el usuario debe existir en Anjana

Para que el inicio de sesión mediante SAML sea satisfactorio, el usuario debe estar registrado previamente en la base de datos de Anjana. La autenticación SAML verifica la identidad en el proveedor externo, pero Anjana siempre comprueba que el usuario exista localmente antes de conceder el acceso. Si el usuario se autentica con éxito en el IdP pero no está registrado en Anjana, el acceso será denegado. Consulte cómo registrar usuarios de forma automática en la guía de Aprovisionamiento de usuarios.


1. URL de Respuesta (ACS URL)

Para que la autenticación funcione, debe registrar correctamente la URL del Servicio de Consumidor de Aserciones (ACS) en su Proveedor de Identidad. Esta es la dirección a la que el IdP enviará la respuesta SAML cifrada/firmada.

La URL se construye siguiendo este patrón:

https://{dominio-anjana}/gateway/saml2/sso/{registrationId}

  • dominio-anjana: Su dominio público (ej: app.midominio.com).

  • registrationId: La clave exacta que utilice en el YAML para definir el proveedor.

Ejemplo: Si configura un proveedor con la clave azuread en el YAML, la URL a registrar en Azure será:

https://app.midominio.com/gateway/saml2/sso/azuread


2. Propiedades de configuración

Cada proveedor SAML se configura en security.authentication.saml2.providers.<registrationId>, donde <registrationId> es un nombre único interno (ej: azuread, okta-corp).

Propiedad

Requerido

Descripción

name

Nombre amigable que se mostrará a los usuarios en la pantalla de login (ej: "Login Corporativo").

type

Subtipo de proveedor para adaptar la interfaz gráfica (logos, estilos). Valores permitidos: AZURE, AWS, GOOGLE, OKTA, AUTH0, KEYCLOAK, OTHER. (Por defecto: OTHER).

entityId

El Identificador de Entidad (Entity ID) o Audiencia de Anjana Data. Usted define este valor (ej: anjana-saml-app) y debe coincidir exactamente con lo configurado en el IdP.

idpMetadataUri

Ubicación del XML de metadatos del IdP. Puede ser una URL remota (https://...) o una ruta local (classpath: o file:).

spKeyLocation

No

Ruta a la Clave Privada (PKCS#8 PEM) usada para firmar las peticiones SAML enviadas al IdP. Requerido si el IdP exige peticiones firmadas.

spCertLocation

No

Ruta al Certificado Público (X.509) correspondiente a la clave privada.


3. Configuración por Proveedor

A continuación, se detallan los pasos para obtener los datos necesarios y el ejemplo de configuración para los principales proveedores.

Estructura base del YAML

YAML
security:
  authentication:
    saml2:
      # (Opcional) Rutas base por defecto. No modificar salvo necesidad específica.
      # acs-location-path: /sso/{registrationId}
      # authenticate-path: /authenticate/{registrationId}
      providers:
        # Aquí se añaden los proveedores específicos

A. Microsoft Azure AD (Entra ID)

Para integraciones con Microsoft 365 / Azure Enterprise Applications.

Paso 1: Configuración en Azure Portal

  1. Vaya a Aplicaciones empresariales > Nueva aplicación > Crear su propia aplicación > Integrar cualquier otra aplicación (No galería).

  2. En Inicio de sesión único (SAML), edite la Configuración básica de SAML:

    • Identificador (Id. de entidad): Defina un nombre único, por ejemplo: anjana-saml-azure.

    • URL de respuesta (ACS): https://<dominio-anjana>/gateway/saml2/sso/azuread

  3. En Certificados de firma de SAML, copie la Dirección URL de metadatos de federación de aplicación.

Paso 2: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        azuread:
          name: Azure Login
          type: AZURE
          entityId: anjana-saml-azure
          idpMetadataUri: https://login.microsoftonline.com/uuid-tenant/federationmetadata/2007-06/federationmetadata.xml

B. Google Workspace

Para autenticación mediante cuentas de Google corporativas.

Paso 1: Configuración en Google Admin Console

  1. Vaya a Aplicaciones > Aplicaciones web y móviles > Añadir aplicación > Añadir aplicación SAML personalizada.

  2. Detalles del proveedor de identidad: Descargue el archivo de Metadatos del IdP y súbalo a su servidor Anjana (ej: /opt/anjana/configs/google-metadata.xml).

  3. Detalles del proveedor de servicios:

    • URL ACS: https://<dominio-anjana>/gateway/saml2/sso/devgcp

    • ID de entidad: Defina un nombre, por ejemplo: anjana-saml-gcp.

Paso 2: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        devgcp:
          name: Google Workspace
          type: GOOGLE
          entityId: anjana-saml-gcp
          idpMetadataUri: file:/opt/anjana/configs/google-metadata.xml

C. AWS IAM Identity Center

Para autenticación centralizada con AWS SSO.

Paso 1: Configuración en AWS Console

  1. Vaya a IAM Identity Center > Aplicaciones > Añadir aplicación > Añadir aplicación SAML 2.0 personalizada.

  2. Metadatos de SAML de IAM Identity Center: Copie la URL de metadatos de SAML del IdP.

  3. Metadatos de la aplicación:

    • ACS URL: https://<dominio-anjana>/gateway/saml2/sso/devaws

    • Audiencia SAML (Entity ID): Defina un nombre, por ejemplo: anjana-saml-aws.

Paso 2: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        devaws:
          name: AWS Access
          type: AWS
          entityId: anjana-saml-aws
          idpMetadataUri: https://portal.sso.eu-west-1.amazonaws.com/saml/metadata/ExampleID

D. Okta (SAML)

Para integraciones con Okta utilizando el protocolo SAML en lugar de OIDC.

Paso 1: Configuración en Okta Admin

  1. Vaya a Applications > Create App Integration.

  2. Seleccione SAML 2.0 y haga clic en Next.

  3. Configure SAML:

    • Single sign on URL (ACS): https://<dominio-anjana>/gateway/saml2/sso/okta-saml

    • Audience URI (SP Entity ID): Defina un nombre único, por ejemplo: anjana-saml-okta.

  4. En la pestaña Sign On, copie la Metadata URL.

Paso 2: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        okta-saml:
          name: Okta Login
          type: OKTA
          entityId: anjana-saml-okta
          idpMetadataUri: https://dev-123456.okta.com/app/exk1.../sso/saml/metadata

E. Auth0 (SAML)

Auth0 soporta SAML mediante un "Addon" sobre una aplicación web estándar.

Paso 1: Configuración en Auth0 Dashboard

  1. Vaya a Applications > Create Application > Regular Web App.

  2. Una vez creada, vaya a la pestaña Addons y active SAML2 Web App.

  3. En la pantalla de configuración del Addon (pestaña Settings):

    • Application Callback URL: https://<dominio-anjana>/gateway/saml2/sso/auth0-saml

    • Settings (JSON): Configure la audiencia:<code class="language-json">{ "audience": "anjana-saml-auth0" }</code>

  4. Vaya a la pestaña Usage y copie la Identity Provider Metadata URL.

Paso 2: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        auth0-saml:
          name: Auth0 Login
          type: AUTH0
          entityId: anjana-saml-auth0
          idpMetadataUri: https://mi-tenant.eu.auth0.com/samlp/metadata/abcdef...

F. Keycloak (SAML)

Para organizaciones que utilizan Keycloak como servidor de identidad y acceso.

Paso 1: Configuración en Keycloak Admin Console

  1. Acceda a la Admin Console de Keycloak y seleccione el realm correspondiente.

  2. En Clients > Create client:

    • Client type: SAML

    • Client ID: Este valor será su entityId. Defina un nombre único, ej. anjana-saml-keycloak.

  3. En la pestaña Settings:

    • Valid redirect URIs: https://<dominio-anjana>/gateway/saml2/sso/keycloak-saml

    • Master SAML Processing URL (ACS URL): https://<dominio-anjana>/gateway/saml2/sso/keycloak-saml

  4. URL de metadatos del IdP (Keycloak): https://<keycloak-server>/realms/<realm>/protocol/saml/descriptor

Paso 2: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        keycloak-saml:
          name: Keycloak Login
          type: KEYCLOAK
          # Debe coincidir exactamente con el Client ID definido en Keycloak
          entityId: anjana-saml-keycloak
          # URL de metadatos del realm de Keycloak
          idpMetadataUri: https://sso.mi-dominio.com/realms/mi-realm/protocol/saml/descriptor

Descarga local de metadatos: Si el servidor Anjana no tiene acceso directo a Keycloak, descargue el XML de metadatos manualmente desde la URL anterior, guárdelo en el servidor (ej. /opt/anjana/keycloak-metadata.xml) y use idpMetadataUri: file:/opt/anjana/keycloak-metadata.xml.

G. Proveedor Genérico (ADFS, Shibboleth, otros)

Utilice esta configuración para cualquier proveedor de identidad compatible con SAML 2.0 que no aparezca en la lista anterior (por ejemplo: Active Directory Federation Services, Shibboleth, PingFederate).

Paso 1: Configuración en su Proveedor de Identidad (IdP)

En su panel de administración, cree un nuevo cliente SAML y configure los siguientes parámetros del Service Provider (SP):

  • ACS URL (Assertion Consumer Service): https://<dominio-anjana>/gateway/saml2/sso/generic-idp

  • Entity ID (Audience / Issuer): Defina un identificador único, por ejemplo: anjana-saml-generic.

  • NameID Format: Se recomienda configurar Persistent o EmailAddress.

Paso 2: Obtención de Metadatos

Localice la URL pública de los metadatos de su IdP. Si el servidor de Anjana no tiene acceso, descargue el XML y use la ruta file:/....

Paso 3: Configuración YAML

YAML
security:
  authentication:
    saml2:
      providers:
        generic-idp:
          name: Login Corporativo
          type: OTHER
          entityId: anjana-saml-generic
          idpMetadataUri: https://sso.mi-empresa.com/metadata.xml