Integraciones

Okta

Este módulo permite sincronizar usuarios desde Okta Identity Cloud.

Existen dos modos de sincronización según si se configura o no el application-id:

  • Modo filtrado por Aplicación (con application-id): Anjana consulta el endpoint /api/v1/apps/{id}/users para obtener únicamente los usuarios asignados a esa aplicación. Recomendado cuando solo un subconjunto de la organización debe tener acceso.

  • Modo organización completa (sin application-id): Anjana consulta el endpoint /api/v1/users y sincroniza todos los usuarios de la organización Okta.


Parte 1: Configuración en Okta Admin

Para conectar la API, necesitamos un Token de Administración (SSWS) y, opcionalmente, el identificador de la aplicación.

Paso 1: Generar Token de API (SSWS)

  1. Inicie sesión en su panel de administración de Okta.

  2. Vaya a Security > API > Tokens.

  3. Haga clic en Create Token.

  4. Asígnele un nombre descriptivo (ej. Anjana Provisioning Token).

  5. Importante: Copie y guarde el Token Value inmediatamente. Okta no lo mostrará nuevamente.

Paso 2: Obtener el App ID (Opcional — solo para modo filtrado por aplicación)

Este paso solo es necesario si desea restringir la sincronización a los usuarios asignados a una aplicación concreta. Si omite application-id, Anjana sincronizará todos los usuarios de la organización.

  1. Vaya a Applications > Applications.

  2. Seleccione la aplicación que creó para Anjana (la misma que usa para el Login SAML/OIDC).

  3. En la página de detalles de la aplicación, busque el App ID.

    • Nota: Normalmente se encuentra en la URL del navegador (ej. .../instance/apps/0oa123456789/general) o puede haber un botón de "Copy ID" en la sección General.

  4. Asegúrese de que la aplicación tenga usuarios o grupos asignados en la pestaña Assignments.


Parte 2: Configuración en application.yml

Edite el fichero de configuración de Anjana e incluya los datos en la sección security.provisioning.providers.okta.

Modo filtrado por Aplicación (con application-id)

Solo se sincronizan los usuarios asignados a la aplicación indicada.

YAML
security:
  provisioning:
    providers:
      okta:
        okta-prod:
          org-url: "https://dev-123456.okta.com"
          api-token: "00TwXyZ_SUPER_SECRET_TOKEN_..."
          # ID de la Aplicación (Paso 2)
          application-id: "0oa123456789abcdef"

Modo organización completa (sin application-id)

Se sincronizan todos los usuarios de la organización Okta.

YAML
security:
  provisioning:
    providers:
      okta:
        okta-prod:
          org-url: "https://dev-123456.okta.com"
          api-token: "00TwXyZ_SUPER_SECRET_TOKEN_..."
          # application-id no configurado → sincronización de toda la organización

Resumen de Propiedades

Propiedad YAML

Descripción

Origen en Okta

Obligatorio

org-url

URL base de la organización.

Dashboard o URL del navegador.

api-token

Token de seguridad SSWS.

Security > API > Tokens

application-id

ID de la app. Si está presente, solo sincroniza sus usuarios asignados. Si está ausente, sincroniza toda la organización.

Applications > Select App > General (o URL)

No (opcional)


Mapeo de campos personalizado (field-mapping)

Anjana incluye un mapeo por defecto que cubre los casos habituales. Puede sobreescribir cualquier campo indicando la clave del perfil Okta de la que debe leer el valor. Las claves son listas en orden de prioridad: se usa el primer valor no vacío.

Modo App vs. Modo Org: En modo organización completa, Anjana lee el perfil SCIM estándar de Okta (/api/v1/users). En modo por aplicación, lee el perfil del Profile Editor (/api/v1/apps/{id}/users), cuyos campos son los que usted defina en Okta — más el campo especial creds_userName que contiene las credenciales de la app.

Mapeo por defecto

Campo Anjana

Claves por defecto (orden de prioridad)

userName

email, login, creds_userName

email

email

firstName

given_name, firstName

lastName

family_name, lastName

phone

phone_number, mobilePhone

title

title

Campos disponibles (perfil SCIM — modo organización completa)

Clave

Descripción

email

Correo electrónico principal.

login

Nombre de usuario de login (UPN en Okta).

firstName

Nombre de pila.

lastName

Apellidos.

middleName

Segundo nombre.

displayName

Nombre para mostrar.

nickName

Apodo.

honorificPrefix

Prefijo honorífico (ej. Dr., Ms.).

honorificSuffix

Sufijo honorífico (ej. Jr.).

mobilePhone

Teléfono móvil.

primaryPhone

Teléfono principal.

secondEmail

Correo secundario.

title

Cargo.

userType

Tipo de usuario.

department

Departamento.

organization

Organización.

division

División.

costCenter

Centro de coste.

employeeNumber

Número de empleado.

manager

Nombre del responsable directo.

managerId

ID del responsable directo.

locale

Configuración regional.

timezone

Zona horaria.

preferredLanguage

Idioma preferido.

streetAddress

Dirección postal.

city

Ciudad.

state

Estado o provincia.

zipCode

Código postal.

countryCode

Código de país (ISO 3166-1 alpha-2).

postalAddress

Dirección completa formateada.

creds_userName

(Solo modo aplicación) Nombre de usuario de las credenciales de la app.

Ejemplo de configuración

YAML
security:
  provisioning:
    providers:
      okta:
        okta-prod:
          org-url: "https://dev-123456.okta.com"
          api-token: "..."
          field-mapping:
            # Usar login (UPN) como userName en vez del email
            user-name: ["login"]
            # Leer teléfono del campo primario con fallback a móvil
            phone: ["primaryPhone", "mobilePhone"]
            # Cargo; si está vacío, usar departamento
            title: ["title", "department"]