在身份提供商 (IdP) 之间同步用户和群组,例如 Azure 入口 ID 还有 Maximo 应用程序套件 (MAS) 是实现集中式身份和访问管理的关键步骤。MAS 支持 SCIM 2.0 进行配置,但一些细微差别——以及一些陷阱——如果不清楚地理解,可能会影响同步过程。

这篇博客介绍了:

  • MAS 中的 SCIM 配置步骤
  • 生成用于身份验证的令牌
  • 构建 MAS SCIM 配置文件
  • 配置 Azure Entra SCIM 配置
  • 已知挑战及其解决方法

在 Maximo 应用程序套件中创建 API 密钥

从 Azure Entra ID 到 MAS 的 SCIM 配置需要 JWT 代币,它源自 MAS API 密钥。

步骤

  1. 导航至 套件管理 → API 密钥 然后点击 创建 API 密钥
  1. 提供一个 描述 并定义一个 身份验证令牌到期
  1. 在下面 套件管理权限,选择 用户管理
  1. 点击 提交
  1. 两者都复制:
    • API 密钥 ID
    • 身份验证令牌


注意:MAS 确实如此 允许恢复身份验证令牌的详细信息。

如果丢失,则必须生成一个 新的 API 密钥

生成 JSON 网络令牌 (JWT)

创建 API 密钥和令牌后,必须发出 GET 请求才能生成 JWT。您可以使用邮差生成令牌,详细信息如下。

API 终端节点

得到 https://api.%3cmasdomain%3e/v1/authenticate]https://api。<masdomain>/v1/身份验证

要求

  • 基本身份验证:
    • 密码 = 身份验证令牌
    • 用户名 = API 密钥 ID
  • 标题:
    • mas-jwt-过期时间:P90D(例如 90 天)

回应

响应返回 JWT 代币 这将用于 Azure Entra SCIM 配置中。

创建 MAS SCIM 配置文件

SCIM 配置文件控制身份和授权如何从 IdP 同步。要创建个人资料,请点击以下 URL POST 请求,正文如下所示。

https://api.%3cmasdomain%3e/scim/v2/Profiles]https://api。/s@@ <masdomain>cim/v2/配置文件

  • id:标识配置文件并且必须是唯一的。建议使用诸如 mastestProfile、masdevProfile 等名称。
  • 版本:指定配置文件的版本号。如果在开发阶段需要进行任何更改,则可能需要删除现有配置文件,增加版本号,然后使用 API 重新创建配置文件。
  • 身份 — ID:识别 MAS 中的 SAML 配置。默认值为 “default-saml”。
  • 身份 — 类型: 应设置为 “saml”。
  • 身份 — samlid:这必须是与您组织的 SAML ID 相匹配的唯一标识符。在提供的示例中,我们使用了 externalid。外部 ID 映射到用于用户属性映射的用户主体名称和组属性映射的对象 ID。
  • 权利-申请:您可以选择任何 MAS 用户权利作为默认权限。在下面的示例中,我们使用了 BASE。
  • 工作空间-应用程序:定义将使用 SAML 配置的应用程序的名称。

参考: 用户与 SCIM 2.0 同步-IBM 文档

示例 SCIM 配置文件-正文

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

另一个示例 SCIM 配置文件-正文

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

配置 Azure Entra SCIM 配置

步骤

  1. 在 Azure Entra ID 中 → 企业应用程序,为 MAS 创建应用程序。
  1. 启用 SCIM 配置
  1. 设置 基本 SCIM 网址:
    [https://api.%7bdomain%7d/scim/v2/%7bprofileId%7d]https://api。{domain} /scim/v2/ {profileId}
  1. 要进行身份验证,请添加 JWT 代币 之前生成。
  1. 测试连接 → Azure 应该成功发出 SCIM 请求。
  1. 分配 用户和群组 → 资源调配开始。

了解群组同步挑战

Maximo 安全组及其成员资格可以在 Azure Entra 项目中管理,而应用程序授权则在 Maximo Manage 中管理。当群组通过 SCIM 同步时,群组 ID(例如 ap_maximo_supervisors_tyhntb)会在 Maximo 中映射为群组名称,从而使其创建新群组而不是链接到现有的 AP_MAXIMO_SUPERSIORS 群组。由于 ap_maximo_supervisors_tyhntb 是 SCIM 群组 ID,因此我们无法将其移除或重新映射。

当群组从 Azure AD → MAS Core 同步时:

  • MAS 附加 后缀 到群组名称。
  • 示例:
    Azure 群组:AP_MAXIMO_SUPERIORS
    MAS 群组变成:ap_maximo_supervisors_TYHNTB

这会导致 新群组 将在 Maximo 中创建,而不是映射到现有的 Maximo 安全组。

冲击

  • 群组映射中断
  • 成员资格不一致
  • 现有的 Manage 应用程序授权不可重复使用

解决方案

创建 SCIM 配置文件时添加以下标签。

“使用群组显示名称作为群组 ID”: true

这确保 MAS 使用 显示名称 作为群组 ID,避免使用不需要的后缀。

注意:如果在 MAS 中修改现有配置文件,请增加 “版本” 号。MAS 仅在版本更改时更新。

挑战:Azure Entra 发送不合规的 SCIM 补丁请求

当你从 Azure Entra 组中移除用户时,Entra 会向 MAS 发送以下补丁请求,这会强制 MAS 从群组中删除所有用户,而不是删除一个特定用户。

补丁请求记录在 MAS Core 日志中:

补丁:/scim/v2/masstgprofileext/groups/maximo-secGroup

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


这是 不是 符合 SCIM 标准。

正确的 SCIM 负载应该是

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

分辨率

Azure Entra 提供了 SCIM 兼容模式

通过将此参数附加到 SCIM URL 来启用它:

?aadoptscim062020

最终 SCIM 网址示例

https://api.%7bmas-instance-id%7d.%7bdomain%7d/scim/v2/%7bprofileId%7d?aadOptscim062020]https://api。{mas-instance-id}。{domain} /scim/v2/ {profileID}?aadoptscim062020


这解决了:

  • 补丁操作不正确
  • 群组成员更新失败
  • 其他几个 Azure SCIM 互操作性问题


参考:

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