Sincronizar usuarios y grupos entre un proveedor de identidad (IdP), como Azure Entra ID y el Suite de aplicaciones Maximo (MAS) es un paso fundamental para permitir la administración centralizada de identidades y accesos. MAS es compatible con SCIM 2.0 para el aprovisionamiento, pero varios matices (y algunos inconvenientes) pueden afectar al proceso de sincronización si no se entienden con claridad.

Este blog explica:

  • Pasos de configuración de SCIM en MAS
  • Generación de tokens para la autenticación
  • Creación de perfiles MAS SCIM
  • Configuración del aprovisionamiento de Azure Entra SCIM
  • Desafíos conocidos y cómo resolverlos

Creación de una clave de API en Maximo Application Suite

El aprovisionamiento de SCIM desde Azure Entra ID a MAS requiere un Símbolo JWT, que se deriva de una clave de API MAS.

Pasos

  1. Navega hasta Administración de la suite → Claves de API y haga clic Crear clave de API.
  1. Proporcione un descripción y defina un caducidad del token de autenticación.
  1. Bajo Acceso administrativo a la suite, selecciona Administración de usuarios.
  1. Haga clic Enviar.
  1. Copia ambos:
    • ID de clave de API
    • Token de autenticación


Nota: MAS sí no permitir la recuperación de los detalles del token de autenticación.

Si se pierde, debe generar un nueva clave de API.

Generar un token web JSON (JWT)

Una vez creados el token y la clave de API, debes emitir una solicitud GET para generar un JWT. Puedes usar postman para generar el token con los detalles que aparecen a continuación.

Punto final de API

OBTENER https://api.%3cmasdomain%3e/v1/authenticate]https://api. <masdomain>/v1/autenticar

Requerimientos

  • Autenticación básica:
    • Contraseña = Token de autenticación
    • Nombre de usuario = ID de clave de API
  • Cabecera:
    • mas-jwt-expiry-duration: P90D (ejemplo para 90 días)

Respuesta

La respuesta devuelve un Símbolo JWT que utilizará el aprovisionamiento de Azure Entra SCIM.

Creación de un perfil MAS SCIM

Un perfil SCIM controla cómo se sincronizan las identidades y los derechos desde el IdP. Para crear un perfil, pulsa la siguiente URL de solicitud POST con el cuerpo que se muestra a continuación.

https://api.%3cmasdomain%3e/scim/v2/Profiles]https://api. <masdomain>/SCIM/v2/Perfiles

  • identificación: identifica el perfil y debe ser único. Se recomienda utilizar nombres como MastestProfile, MasDevProfile, etc.
  • versión: especifica el número de versión del perfil. Si es necesario realizar algún cambio durante la fase de desarrollo, es posible que deba eliminar el perfil existente, aumentar el número de versión y volver a crear el perfil mediante las API.
  • Identidades — id: identifica la configuración de SAML en MAS. El valor predeterminado es «default-saml».
  • Identidades: tipo: Debe configurarse en «saml».
  • Identidades — samlid: Debe ser un identificador único que coincida con el ID de SAML de tu organización. En el ejemplo proporcionado, utilizamos externalid. El ID externo se asigna al nombre principal del usuario para el mapeo de atributos de usuario y al ID de objeto para el mapeo de atributos de grupo.
  • Derecho: solicitud: Puede elegir cualquier derecho de usuario de MAS como predeterminado. En el siguiente ejemplo, hemos usado BASE.
  • Espacios de trabajo: aplicación: define los nombres de las aplicaciones que utilizarán la configuración de SAML.

Referencia: Sincronización de usuarios con SCIM 2.0 - Documentación de IBM

Ejemplo de perfil SCIM: cuerpo

{ 
"id": "MasProfile1", 
"version": 1, 
"identities": [ 
{ "id": "default-saml", 
"type": "saml", 
"samlId": "externalId" 
} 
], 
"entitlement": { 
"application": "BASE" 
}, 
"runtimeConfigs": { 
"useGroupDisplayNameAsGroupId": true 
}, 
"workspaces": [ 
{ "id": "test", 
"applications": ["manage"] 
} 
] 
} 

Otro ejemplo de perfil SCIM: cuerpo

{ 
"id": "MasProfile2", 
"version": 2, 
"identities": [ 
{ 
"id": "default-saml", 
"type": "saml", 
"samlId": "externalId" 
} 
], 
"entitlement": { 
"application": "BASE" 
}, 
"workspaces": 
[ 
{ 
"id": "uat", 
"applications": ["manage"] 
} 
], 
"runtimeConfigs": { 
"useGroupDisplayNameAsGroupId": true 
} 
} 

Configuración del aprovisionamiento de Azure Entra SCIM

Pasos

  1. En Azure Entra ID → Aplicaciones empresariales, cree una aplicación para MAS.
  1. Habilitar Aprovisionamiento de SCIM.
  1. Configure el URL base de SCIM:
    [https://api.%7bdomain%7d/scim/v2/%7bprofileId%7d]https://api. {dominio} /scim/v2/ {ID de perfil}
  1. Para la autenticación, añada Símbolo JWT generado anteriormente.
  1. Pruebe la conexión → Azure debería emitir correctamente las solicitudes de SCIM.
  1. Asignar usuarios y grupos → comienza el aprovisionamiento.

Comprensión de los desafíos de sincronización de grupos

Los grupos de seguridad de Maximo y sus miembros se pueden administrar en el proyecto Azure Entra, mientras que las autorizaciones de las aplicaciones se administran en Maximo Manage. Cuando los grupos se sincronizan mediante SCIM, el ID del grupo (por ejemplo, AP_MAXIMO_Supervisors_TYHNTB) se asigna al nombre del grupo en Maximo, lo que hace que se cree un grupo nuevo en lugar de vincularlo al grupo AP_MAXIMO_SUPERVISORS existente. Como AP_MAXIMO_Supervisors_TYHNTB es el ID de grupo de SCIM, no podemos eliminarlo ni reasignarlo.

Cuando los grupos se sincronizan desde Azure AD → MAS Core:

  • MAS añade un sufijo al nombre del grupo.
  • Ejemplo:
    Grupo Azure: AP_MAXIMO_SUPERVISORS
    El grupo MAS se convierte en: AP_Maximo_Supervisors_TYHNTB

Esto provoca una nuevo grupo para crearse en Maximo en lugar de asignarse al grupo de seguridad Maximo existente.

Impacto

  • Interrupción de mapeos grupales
  • La membresía no se alinea
  • Las autorizaciones de aplicaciones de administración existentes no se reutilizan

Solución

Añada la siguiente etiqueta al crear el perfil SCIM.

«useGroupDisplayNameAsGroupID»: verdadero

Esto garantiza que MAS utilice el nombre para mostrar como ID de grupo y evita sufijos no deseados.

Nota: Si modifica un perfil existente en MAS, aumente el número de «versión». MAS solo se actualiza cuando cambia la versión.

Desafío: Azure Entra envía solicitudes de parches SCIM que no cumplen con los requisitos

Cuando elimina un usuario del grupo Azure Entra, Entra envía la siguiente solicitud de parche a MAS, lo que obliga a MAS a eliminar todos los usuarios del grupo en lugar de a un usuario específico.

La solicitud de parche registrada en los registros de MAS Core:

PARCHE: /scim/v2/masstgProfileExt/Groups/Maximo-secGroup

{   
	'schemas': [...],   
    'Operations': [     
    	{       
        	'op': 'Remove',       
            'path': 'members',       
            'value': [{'value': 'userid'}]     
        }   
    ] 
} 


Esto es NO Cumple con SCIM.

La carga útil de SCIM correcta debe ser

{ 
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], 
"Operations": [ 
{ 
"op": "remove", 
"path": "members[value eq \"userid\"]" 
} 
] 
} 

Resolución

Azure Entra ofrece una Modo de compatibilidad SCIM.

Habilítelo añadiendo este parámetro a la URL de SCIM:

? AA adopta el SCIM 06 2020

Ejemplo final de URL de SCIM

https://api.%7bmas-instance-id%7d.%7bdomain%7d/scim/v2/%7bprofileId%7d?aadOptscim062020]https://api. {mas-instance-id}. ¿{dominio} /scim/v2/ {profileID}? AA adopta el SCIM 06 2020


Esto resuelve:

  • Operaciones PATCH incorrectas
  • Fallos al actualizar la membresía del grupo
  • Otros problemas de interoperabilidad de Azure SCIM


Referencia:

https://learn.microsoft.com/en-us/entra/identity/app-provisioning/application-provisioning-config-problem-scim-compatibility

Unlock the Ultimate Guide to IBM Maximo Application Suite (MAS)

Discover everything you need to know to modernize your asset management strategy.

Inside, you’ll learn:

  • What’s new in IBM Maximo Application Suite 9.0
  • Key differences between Maximo 7.6 and MAS
  • How AppPoints and OpenShift change the game
  • Industry use cases across energy, manufacturing, and transportation
  • Step-by-step guidance for upgrading and migration readiness
Cover of 'The Ultimate Guide to MAS Maximo Application Suite' by Naviam featuring a man in a yellow construction helmet and safety vest holding a tablet.
×

ActiveG, BPD Zenith, EAM Swiss, InterPro Solutions, Lexco, Peacock Engineering, Projetech, Sharptree, and ZNAPZ have united under one brand: Naviam.

You’ll be redirected to the most relevant page at Naviam.io in a few seconds — or you can go now.

Read Press Release