偶现web端登录时报错500

// 此模板仅供参考,如果不适用可以修改

问题描述

密码保证正确的情况下,ipmi鉴权正常,ssh也可以登录。但是web端登录失败,F12后查看发现返回错误码500

使用ssh收集文件后发现,安全日志显示登录成功:

2025-04-01T07:33:33.327397+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:33:48.307093+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:34:42.678204+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:34:46.864378+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:34:50.756477+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:34:54.090787+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:35:00.274113+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:35:05.044180+00:00 H30176702764 security: User test(10.66.87.88) login successfully

2025-04-01T07:35:45.299294+00:00 H30176702764 security: User admin(10.66.87.88) login successfully

2025-04-01T07:35:48.571067+00:00 H30176702764 security: User admin(10.66.87.88) login successfully

2025-04-01T07:35:51.769991+00:00 H30176702764 security: User admin(10.66.87.88) login successfully

2025-04-01T07:35:54.987138+00:00 H30176702764 security: User admin(10.66.87.88) login successfully

操作日志显示用户被挤,又打印登录成功:

2025-04-01 07:32:45 IPMI,admin@10.66.87.88,account,Add user8’s username (test) successfully

2025-04-01 07:33:01 IPMI,admin@10.66.87.88,account,Modify user(test|user8) password successfully

2025-04-01 07:33:14 IPMI,admin@10.66.87.88,account,Modify user(test|user8) channel(1) privilege(administrator), session_limit(0) successfully

2025-04-01 07:33:22 IPMI,admin@10.66.87.88,account,Enable user(test|user8) successfully

2025-04-01 07:33:33 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:33:48 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:33:48 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:34:42 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:34:42 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:34:46 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:34:46 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:34:50 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:34:50 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:34:54 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:34:54 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:35:00 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:35:00 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:35:05 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:35:05 WEB,test@10.66.87.88,iam,User test(10.66.87.88) login successfully

2025-04-01 07:35:45 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:35:45 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) login successfully

2025-04-01 07:35:48 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:35:48 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) login successfully

2025-04-01 07:35:51 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:35:51 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) login successfully

2025-04-01 07:35:54 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) is forced to log out because the same user log in from another device

2025-04-01 07:35:54 WEB,admin@10.66.87.88,iam,User admin(10.66.87.88) login successfully

2025-04-01 07:36:07 CLI,admin@10.66.87.88:50057,oms,Collect diagnose file start successfully

app.log下没有什么特别的日志打印:

有人遇到过么

环境信息

account/1.90.43@openubmc

webui/1.90.58@openubmc

rackmount/1.90.215

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

总结

项目 分析结论
SSH/IPMI 正常,Web 失败 认证后端可用,问题出在 Web 会话层
Security.log 显示登录成功 密码校验通过,权限有效
Operation.log 显示频繁挤号 多会话冲突加剧问题暴露
App.log 出现 account 错误 account 组件状态异常或依赖缺失
返回 HTTP 500 Web 服务端内部异常,非认证失败(401)

结论:此问题并非密码或网络问题,而是 Web 会话管理流程在 account 组件异常的情况下,未能妥善处理用户登录请求,导致服务端抛出 500 错误。核心应聚焦于修复 bmc.kepler.account 服务状态与数据一致性

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

Web端登录返回500错误问题分析与解决方案

问题描述

在确保用户名和密码正确的前提下,通过 IPMISSH 均可正常登录目标系统,但通过 Web 浏览器登录时失败。F12 开发者工具显示登录接口 /UI/Rest/Login 返回 HTTP 500 内部服务器错误

尽管 Web 登录失败,security.log 显示用户登录操作已被记录为成功:

2025-04-01T07:33:33.327397+00:00 H30176702764 security: User test(10.66.87.88) login successfully

同时,操作日志(Operation Log) 显示用户频繁被“强制登出”,原因是“同一用户从其他设备登录”:

2025-04-01 07:33:48 WEB,test@10.66.87.88,iam,User test(10.66.87.88) is forced to log out because the same user log in from another device

app.log 中存在与 account 组件相关的错误:

account ERROR: account_service_ipmi.lua(102): account id(1) is illegal
account ERROR: init.lua(79): register to bus for account, error name: kepler.account.InvalidDataField

Web 访问日志显示:

  • 静态资源如 /image/login.jpg/UI/Rest/Login 接口(GET)均返回 200。
  • 提交登录表单(POST /UI/Rest/Login)时返回 500 错误。

根本原因分析

根据上下文信息及日志分析,该问题是由 Web 登录认证流程异常 导致的服务端内部错误(500),尽管底层安全模块(security)认为登录成功,但前端或会话管理组件未能正确处理登录流程。

具体原因如下:

  1. 账户组件(account service)功能异常

    • app.log 中出现多次 account_service_ipmi.luainit.lua 的错误,提示 account id(1) is illegalInvalidDataField
    • 这表明 account 服务 在处理用户认证或会话创建时,无法正确解析用户数据,可能是配置损坏、数据库不一致或组件状态异常。
  2. 多设备登录冲突导致会话管理紊乱

    • 操作日志频繁出现 “User is forced to log out because the same user log in from another device”。
    • 虽然这是设计行为(限制单账户单会话),但结合 500 错误,说明 IAM(身份与访问管理)模块在处理会话挤占逻辑时触发了未捕获的异常,导致返回 500。
  3. Web认证流程中断,但底层鉴权通过

    • Security 模块记录 “login successfully”,说明密码校验和基本权限检查通过。
    • 然而,Web 的 REST 接口 /UI/Rest/Login 在生成会话、设置 Cookie 或返回 Token 时失败,导致 HTTP 500
    • 参考文档指出,Web 登录需返回 X-CSRF-Token 并维护 Cookie 会话,若此过程出错,即返回 500。
  4. 组件依赖缺失或 DBus 服务未注册

    • 日志中出现 invalid interface:bmc.kepler.Managers.Multihost,说明 account 服务尝试访问依赖组件失败。
    • bmc.kepler.account 服务未成功注册到 D-Bus(如 framework.log 中曾报告 The name bmc.kepler.account was not provided by any .service files),则 Web 认证流程将无法调用关键接口,引发 500 错误。

解决方案建议

:white_check_mark: 1. 检查并恢复 account 组件状态

执行以下命令检查 account 服务是否正常运行:

busctl --user list | grep bmc.kepler.account

若无输出或报错,说明服务未启动。尝试重启或重新加载组件:

# 查看组件状态
mdbctl get "component_status/account"

# 若异常,尝试重新加载(视具体系统支持)
systemctl restart bmc-account.service
:white_check_mark: 2. 清理用户会话冲突

手动清除当前用户的活动会话,避免“被挤下线”循环:

# 使用 ipmcget 查询当前会话
ipmcget -d session

# 使用 ipmcset 注销特定会话(ID见上条命令输出)
ipmcset -d session -v <session_id> clear
:white_check_mark: 3. 验证 Web 登录接口行为

使用 curl 直接测试登录接口,确认返回内容:

curl -k -X POST 'https://<BMC_IP>:10443/UI/Rest/Login' \
  -H 'Content-Type: application/json' \
  -d '{"UserName": "test", "Password": "your_password"}'
  • 若返回 500,检查 /dev/shm/log/web/error_log(参考搜索结果)是否有详细堆栈。
  • 日志路径也可能为:3rdDump/error_log/var/log/web/error.log
:white_check_mark: 4. 修复用户数据与权限配置

由于日志中 account id(1) is illegal 可能指向默认账户异常,可尝试:

  • 使用 SSH 登录后,通过 CLI 删除并重建测试用户:
    ipmcset -d user -v test delete
    ipmcset -d user -v test create
    ipmcset -d user -v test set password=your_password
    ipmcset -d user -v test set privilege=ADMINISTRATOR
    ipmcset -d user -v test enable
    
:white_check_mark: 5. 升级或回滚软件版本

当前环境信息:

  • account/1.90.43@openubmc
  • webui/1.90.58@openubmc

若此问题为偶现或特定版本引入,建议:

  • 升级 accountwebui 组件至已知稳定版本。
  • 或参考类似问题(如文档中提到的 Qemu 仿真环境登录失败),删除 manifest/output/data 后重新构建镜像,以排除数据持久化污染。

总结

项目 分析结论
SSH/IPMI 正常,Web 失败 认证后端可用,问题出在 Web 会话层
Security.log 显示登录成功 密码校验通过,权限有效
Operation.log 显示频繁挤号 多会话冲突加剧问题暴露
App.log 出现 account 错误 account 组件状态异常或依赖缺失
返回 HTTP 500 Web 服务端内部异常,非认证失败(401)

结论:此问题并非密码或网络问题,而是 Web 会话管理流程在 account 组件异常的情况下,未能妥善处理用户登录请求,导致服务端抛出 500 错误。核心应聚焦于修复 bmc.kepler.account 服务状态与数据一致性


附:推荐排查流程图

1. 检查 account 服务是否注册 → busctl list | grep account
   ↓ 是
2. 检查 account 日志 → tail -f /dev/shm/log/account/*.log
   ↓
3. 尝试创建新用户并测试 Web 登录
   ↓ 成功?
   → 是 → 原用户数据损坏 → 删除重建
   → 否 → 清理 output/data,重新构建系统镜像

能否贴一下一键收集日志呢?

你需要看一键收集日志的哪些文件内容呢?或者如果需要整个文件的话我可以发邮件给你

密码正确web登录报错500.doc (1.6 MB)

修改一下文件后缀为rar解压就是收集文件压缩包了,麻烦一起看看呢

日志确认没有什么有效定位的内容。这里返回的136个字节能贴一下吗?
另外观察到nginx访问日志中 /UI/Rest/Login 的 POST 接口均返回了500,所以可以考虑调低相关组件的日志级别再次发送请求看看是否有相关错误内容。

另外希望提供一下bmc包的来源,这边可以尝试复现。

包来源:社区0930的基础上加了几个定制化组件(比如baidu)和vpd仓库有修改,其他无修改。我理解这些修改不会影响帖子里这个问题。

这个问题是客户现场发现的,我们已经通过重启bmc规避了问题,暂时还没有复现,等复现了我再给你回复136个字节的内容吧

另外,我这里分析唯一的线索是,操作日志为什么会同时打印登录成功和登录后被挤下线,这也可能是个切入点,但是会话创建在闭源组件iam里,我没办法加打印日志做调试

好的,再次出现了,联系我们

这个问题解决了,定位到最后发现是定制组件里的代码引入的,此问题关闭