在身份提供商 (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

MORE Community Logo
Live from the MORE community

Your Maximo questions probably already have answers

See what Maximo users are asking, answering, and solving right now.

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