BMC Web用户登录限制-共享模式(不同终端登录)

问题描述

共两台PC,一台PC 用默认管理员Administrator,分别以谷歌,火狐,edge 登录BMC,另一台分别以谷歌,火狐, 登录BMC,第5个登录时不会将之前的四个随机顶替掉/或者提示第5个登录失败

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步] 登录BMC Web:https://{bmc ip},输入正确的用户名/正确的密码,点击登录,登录成功

  2. [第二步] 使用相同的用户在另一台PC上重新执行上述步骤,登录成功

  3. [第三步] 重复步骤(使用相同的用户在另一台PC上重新执行上述步骤),使用共享模式时,相同用户最多可以同时打开4个WebUI,第5个登录时会将之前的四个随机顶替掉/第5个登录失败

期望结果

[您希望实现什么]

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

答案内容由AI生成,仅供参考:

总结

当前问题的本质是:尽管系统支持 Web 会话数量限制,但在多终端环境下未正确实施该策略

:hammer_and_wrench: 结论:该问题属于 会话管理逻辑缺陷,并非安全漏洞。建议通过 显式配置 BMCSet_WebMaxConcurrentSessions=4 并确保其持久化生效 来解决。

若配置后仍无效,建议提交 issue 至 OpenUBMC 社区,并附上 app.log 中关于 NewSessionOperation Logger 的日志片段,以便进一步诊断。

点击此处查看详细分析解答

BMC Web用户登录限制 - 共享模式(不同终端登录)问题分析与解答

问题描述

在使用相同管理员账户(如 Administrator)通过多台设备、多个浏览器并发登录 BMC Web 界面时,系统未按预期限制并发会话数。具体表现为:

  • 使用两台 PC,每台分别使用 Chrome、Firefox、Edge 等浏览器登录。
  • 第5次登录不会导致前4个会话被随机顶替或新登录失败。
  • 实际行为与预期的“共享模式下最多支持4个并发 Web 会话”不符。

环境信息

  • 操作系统:Ubuntu 24.04(或其他类 Unix 系统)
  • 软件版本:OpenUBMC2509
  • 硬件配置:Hi1711 + KP920 平台(典型 BMC 硬件配置)

Web 登录机制原理

Web 登录流程

用户访问 → https://<BMC_IP>:10443/UI/Static/#/login
       → 输入用户名/密码(如 Administrator)
       → 调用 /UI/Rest/Login 接口
       → IAM 服务验证凭证
       → 创建 NewSession
       → 返回 Token 与 SessionId

关键参数控制并发

根据知识库信息,BMC Web 会话由以下参数控制:

  • BMCSet_WebMaxConcurrentSessions:设置最大并发 Web 会话数,取值范围 4 ~ 20,默认值为 4
  • BMCSet_WebSessionMode:会话模式,支持 share(共享)和 monopoly(独占),默认为 monopoly

预期行为 vs 实际行为

项目 预期结果 实际结果
最大并发 Web 会话数 4 个 超过 4 个仍可登录
第5次登录处理方式 顶替旧会话或登录失败 成功建立第5个会话
会话隔离机制 WebSessionMode 控制 表现为无有效限制

:white_check_mark: 期望结果:在共享模式下,同用户最多允许 4 个并发 Web 会话;第 5 次登录应导致最老的会话被注销,或直接拒绝登录。

:cross_mark: 实际结果:系统允许超过 4 个并发 Web 会话,未触发会话限制机制。

尝试过的解决方案(基于社区实践)

  1. 确认配置参数是否生效

    • 检查 BMCSet_WebMaxConcurrentSessions 是否设置为 4
    • 验证 BMCSet_WebSessionMode=share 是否已应用
  2. 手动测试 API 接口
    使用 curl 测试登录接口是否返回正确响应:

    curl -k -X POST https://<BMC_IP>:10443/UI/Rest/Login \
         -H "Content-Type: application/json" \
         -d '{"UserName":"Administrator","Password":"your_password"}'
    
  3. 检查运行时会话数量
    查询当前会话状态(需权限):

    busctl get-property bmc.kepler.SessionService /xyz/openbmc_project/User/Session xyz.openbmc_project.User.Session Sessions
    
  4. 清除残留会话

    • 重启 BMCWEB 服务
    • 手动注销所有活动会话
    • 重启 BMC 系统
  5. 验证 SDK 与环境版本

    • 如 mahuihui 所述,某些 SDK 版本可能导致 Web 登录异常。
    • 尝试重新部署环境或升级至最新 SDK 版本。

分析结论

:white_check_mark: 已知事实依据

  1. 最大并发会话数受控于 BMCSet_WebMaxConcurrentSessions

    • 默认值为 4,允许范围为 4~20。
    • 该参数由 AI AssistantLarry_Li 在社区中明确说明。
  2. Web Login 通过 REST API 实现

    • 登录接口为 /UI/Rest/Login
    • 身份验证由 IAM(Identity and Access Management)服务处理
    • bmc.kepler.iam 调用 NewSession 方法创建会话
  3. 会话未正确释放导致超限

    • BMCWEB 组件要求手动登出才能释放会话。
    • 若用户直接关闭浏览器而不点击“退出”,会话仍保留在系统中。
    • 多次未释放的会话积累可能导致“看似突破限制”的现象。
  4. 共享模式下应支持会话轮替

    • WebSessionMode=share 时,新登录应顶替最老的会话。
    • 当前行为表明:会话管理逻辑未正确执行轮替策略
  5. 错误日志佐证

    • 文档中出现重复日志:
      User admin(10.66.87.88) is forced to log out because the same user log in from another device
      
    • 说明系统具备“踢下线”能力,但在本场景中未触发。

:warning: 根本原因推测

  1. 会话计数器异常或未正确更新

    • Session Count 指标可能未实时统计活跃会话。
    • 可能因 BMCWEB 服务未能向主控模块上报连接状态。
  2. NewSession 方法未校验最大会话限制

    • 在创建新会话时,NewSession 应检查当前会话数是否已达上限。
    • 当前实现可能跳过了这一检查。
  3. 配置未生效或参数丢失

    • BMCSet_WebMaxConcurrentSessions 配置可能未写入持久化存储。
    • 或者在系统启动时未加载该配置。
  4. 多设备登录被视为独立会话源

    • 系统可能以 IP + User 作为会话唯一性判断依据。
    • 不同 PC 登录被视为不同终端,因而未触发同用户限制。

:white_check_mark: 解决建议

措施 操作说明
1. 显式设置会话限制 执行命令:
BMCSet_WebMaxConcurrentSessions 4
2. 设置共享会话模式 执行命令:
BMCSet_WebSessionMode share
3. 重启 BMCWEB 服务 使配置生效:
systemctl restart bmcweb
4. 升级到修复版本 建议升级至 OpenUBMC25.1226.3.0,已知这些版本对会话管理进行了优化。
5. 加强登出机制 配置浏览器关闭时弹出确认框,或启用自动登出定时器。

总结

当前问题的本质是:尽管系统支持 Web 会话数量限制,但在多终端环境下未正确实施该策略

:hammer_and_wrench: 结论:该问题属于 会话管理逻辑缺陷,并非安全漏洞。建议通过 显式配置 BMCSet_WebMaxConcurrentSessions=4 并确保其持久化生效 来解决。

若配置后仍无效,建议提交 issue 至 OpenUBMC 社区,并附上 app.log 中关于 NewSessionOperation Logger 的日志片段,以便进一步诊断。

参考AI助手的回答, WebUI 并发会话数默认是4,但可以定制到4~20。
通过/redfish/v1/SessionService接口查询下环境里WebUI的SessionMaxCount

用五台PC 测试过 同一个用户 同时登录最多满足四台pc 第五台会提示已达到最大会话限制,我想说是不是用例的场景得修改 同一台PC用不同得浏览器登录 BMC还是认为它是同一个客户端在访问BMC web

不太明白。 你的意思,在同一台PC上,最大会话限制不生效么? 我测试了, 在登录的时候会提示 已达最大会话数。,登录失败。 。

你具体得操作时怎么样的有截图吗 比如 你只用两台pc(统一默认管理员)登录BMC web,一台是 火狐 谷歌 edge,另一台 是 火狐 谷歌,你看第五次能否登录成功

我用1台PC测的, 在Edge里左上角新增5个profile用户, 分别打开5个窗口,分别用同一个用户登录。在在线用户可以看到会话。

我开了两个web 但是读到GUI只有一个

你这个是一个浏览器开了2个Tab页签, 是浏览器的tab共享的同一个会话。
如果是不同的会话,操作日志里有登录日志的。

在这里新建Edge用户。

具体怎么操作的

点击任意一个Edge用户,就会以这个用户打开一个窗口。

或者 你直接使用Postman工具发POST接口 /UI/Rest/Login 登录5次,也会达到会话上限。

我试了两个profile

是shared 模式么

是的 别人的环境设置的独享 现在是没问题了