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}/userspara 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/usersy 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)
-
Inicie sesión en su panel de administración de Okta.
-
Vaya a Security > API > Tokens.
-
Haga clic en Create Token.
-
Asígnele un nombre descriptivo (ej.
Anjana Provisioning Token). -
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.
-
Vaya a Applications > Applications.
-
Seleccione la aplicación que creó para Anjana (la misma que usa para el Login SAML/OIDC).
-
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.
-
-
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.
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.
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 |
|---|---|---|---|
|
|
URL base de la organización. |
Dashboard o URL del navegador. |
Sí |
|
|
Token de seguridad SSWS. |
Security > API > Tokens |
Sí |
|
|
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) |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Campos disponibles (perfil SCIM — modo organización completa)
|
Clave |
Descripción |
|---|---|
|
|
Correo electrónico principal. |
|
|
Nombre de usuario de login (UPN en Okta). |
|
|
Nombre de pila. |
|
|
Apellidos. |
|
|
Segundo nombre. |
|
|
Nombre para mostrar. |
|
|
Apodo. |
|
|
Prefijo honorífico (ej. |
|
|
Sufijo honorífico (ej. |
|
|
Teléfono móvil. |
|
|
Teléfono principal. |
|
|
Correo secundario. |
|
|
Cargo. |
|
|
Tipo de usuario. |
|
|
Departamento. |
|
|
Organización. |
|
|
División. |
|
|
Centro de coste. |
|
|
Número de empleado. |
|
|
Nombre del responsable directo. |
|
|
ID del responsable directo. |
|
|
Configuración regional. |
|
|
Zona horaria. |
|
|
Idioma preferido. |
|
|
Dirección postal. |
|
|
Ciudad. |
|
|
Estado o provincia. |
|
|
Código postal. |
|
|
Código de país (ISO 3166-1 alpha-2). |
|
|
Dirección completa formateada. |
|
|
(Solo modo aplicación) Nombre de usuario de las credenciales de la app. |
Ejemplo de configuración
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"]