anxiety
(Anxiety)
1
问题描述
共两台PC,一台PC 用默认管理员Administrator,分别以谷歌,火狐,edge 登录BMC,另一台分别以谷歌,火狐, 登录BMC,第5个登录时不会将之前的四个随机顶替掉/或者提示第5个登录失败
环境信息
-
操作系统:[如 Ubuntu 24.04]
-
软件版本:[如 OpenUBMC2509]
-
硬件配置:[如 CPU、内存等]
重现步骤
-
[第一步] 登录BMC Web:https://{bmc ip},输入正确的用户名/正确的密码,点击登录,登录成功
-
[第二步] 使用相同的用户在另一台PC上重新执行上述步骤,登录成功
-
[第三步] 重复步骤(使用相同的用户在另一台PC上重新执行上述步骤),使用共享模式时,相同用户最多可以同时打开4个WebUI,第5个登录时会将之前的四个随机顶替掉/第5个登录失败
期望结果
[您希望实现什么]
实际结果
[实际发生了什么,包含错误信息]
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
分析结论
[详细总结您对此问题的分析结论]
答案内容由AI生成,仅供参考:
总结
当前问题的本质是:尽管系统支持 Web 会话数量限制,但在多终端环境下未正确实施该策略。
结论:该问题属于 会话管理逻辑缺陷,并非安全漏洞。建议通过 显式配置 BMCSet_WebMaxConcurrentSessions=4 并确保其持久化生效 来解决。
若配置后仍无效,建议提交 issue 至 OpenUBMC 社区,并附上 app.log 中关于 NewSession 和 Operation 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 控制 |
表现为无有效限制 |
期望结果:在共享模式下,同用户最多允许 4 个并发 Web 会话;第 5 次登录应导致最老的会话被注销,或直接拒绝登录。
实际结果:系统允许超过 4 个并发 Web 会话,未触发会话限制机制。
尝试过的解决方案(基于社区实践)
-
确认配置参数是否生效
- 检查
BMCSet_WebMaxConcurrentSessions 是否设置为 4
- 验证
BMCSet_WebSessionMode=share 是否已应用
-
手动测试 API 接口
使用 curl 测试登录接口是否返回正确响应:
curl -k -X POST https://<BMC_IP>:10443/UI/Rest/Login \
-H "Content-Type: application/json" \
-d '{"UserName":"Administrator","Password":"your_password"}'
-
检查运行时会话数量
查询当前会话状态(需权限):
busctl get-property bmc.kepler.SessionService /xyz/openbmc_project/User/Session xyz.openbmc_project.User.Session Sessions
-
清除残留会话
- 重启 BMCWEB 服务
- 手动注销所有活动会话
- 重启 BMC 系统
-
验证 SDK 与环境版本
- 如 mahuihui 所述,某些 SDK 版本可能导致 Web 登录异常。
- 尝试重新部署环境或升级至最新 SDK 版本。
分析结论
已知事实依据
-
最大并发会话数受控于 BMCSet_WebMaxConcurrentSessions
- 默认值为 4,允许范围为 4~20。
- 该参数由
AI Assistant 和 Larry_Li 在社区中明确说明。
-
Web Login 通过 REST API 实现
- 登录接口为
/UI/Rest/Login
- 身份验证由
IAM(Identity and Access Management)服务处理
bmc.kepler.iam 调用 NewSession 方法创建会话
-
会话未正确释放导致超限
BMCWEB 组件要求手动登出才能释放会话。
- 若用户直接关闭浏览器而不点击“退出”,会话仍保留在系统中。
- 多次未释放的会话积累可能导致“看似突破限制”的现象。
-
共享模式下应支持会话轮替
- 当
WebSessionMode=share 时,新登录应顶替最老的会话。
- 当前行为表明:会话管理逻辑未正确执行轮替策略。
-
错误日志佐证
根本原因推测
-
会话计数器异常或未正确更新
Session Count 指标可能未实时统计活跃会话。
- 可能因
BMCWEB 服务未能向主控模块上报连接状态。
-
NewSession 方法未校验最大会话限制
- 在创建新会话时,
NewSession 应检查当前会话数是否已达上限。
- 当前实现可能跳过了这一检查。
-
配置未生效或参数丢失
BMCSet_WebMaxConcurrentSessions 配置可能未写入持久化存储。
- 或者在系统启动时未加载该配置。
-
多设备登录被视为独立会话源
- 系统可能以 IP + User 作为会话唯一性判断依据。
- 不同 PC 登录被视为不同终端,因而未触发同用户限制。
解决建议
| 措施 |
操作说明 |
| 1. 显式设置会话限制 |
执行命令:
BMCSet_WebMaxConcurrentSessions 4 |
| 2. 设置共享会话模式 |
执行命令:
BMCSet_WebSessionMode share |
| 3. 重启 BMCWEB 服务 |
使配置生效:
systemctl restart bmcweb |
| 4. 升级到修复版本 |
建议升级至 OpenUBMC25.12 或 26.3.0,已知这些版本对会话管理进行了优化。 |
| 5. 加强登出机制 |
配置浏览器关闭时弹出确认框,或启用自动登出定时器。 |
总结
当前问题的本质是:尽管系统支持 Web 会话数量限制,但在多终端环境下未正确实施该策略。
结论:该问题属于 会话管理逻辑缺陷,并非安全漏洞。建议通过 显式配置 BMCSet_WebMaxConcurrentSessions=4 并确保其持久化生效 来解决。
若配置后仍无效,建议提交 issue 至 OpenUBMC 社区,并附上 app.log 中关于 NewSession 和 Operation Logger 的日志片段,以便进一步诊断。
Larry_Li
(LiJiang)
3
参考AI助手的回答, WebUI 并发会话数默认是4,但可以定制到4~20。
通过/redfish/v1/SessionService接口查询下环境里WebUI的SessionMaxCount。
anxiety
(Anxiety)
4
用五台PC 测试过 同一个用户 同时登录最多满足四台pc 第五台会提示已达到最大会话限制,我想说是不是用例的场景得修改 同一台PC用不同得浏览器登录 BMC还是认为它是同一个客户端在访问BMC web
Larry_Li
(LiJiang)
5
不太明白。 你的意思,在同一台PC上,最大会话限制不生效么? 我测试了, 在登录的时候会提示 已达最大会话数。,登录失败。 。
anxiety
(Anxiety)
6
你具体得操作时怎么样的有截图吗 比如 你只用两台pc(统一默认管理员)登录BMC web,一台是 火狐 谷歌 edge,另一台 是 火狐 谷歌,你看第五次能否登录成功
Larry_Li
(LiJiang)
7
我用1台PC测的, 在Edge里左上角新增5个profile用户, 分别打开5个窗口,分别用同一个用户登录。在在线用户可以看到会话。
Larry_Li
(LiJiang)
9
你这个是一个浏览器开了2个Tab页签, 是浏览器的tab共享的同一个会话。
如果是不同的会话,操作日志里有登录日志的。
在这里新建Edge用户。
Larry_Li
(LiJiang)
11
点击任意一个Edge用户,就会以这个用户打开一个窗口。
Larry_Li
(LiJiang)
12
或者 你直接使用Postman工具发POST接口 /UI/Rest/Login 登录5次,也会达到会话上限。