openBMC web会话管理

📅 2026/7/18 4:19:25 👁️ 阅读次数 📝 编程学习
openBMC web会话管理

session

在openBMC中,web会话显示会话session列表= 所有通过bmcweb服务(HTTP/HTTPS)建立的会话:包括:

  • Redfish 标准接口(/redfish/v1/SessionService/Sessions

  • 传统 REST 接口(/login

不包括SSH 会话和IPMI 会话。

session创建

redfish

Redfish协议规定的标准登录方式,核心操作就是创建一个Session资源。

  • 请求方法POST

  • 请求URLhttps://<BMC_IP>/redfish/v1/SessionService/Sessions

  • 请求头Content-Type: application/json

  • 请求体:一个JSON对象,包含用户名和密码。

    json

    { "UserName": "root", "Password": "0penBmc" }

一个成功的请求会返回一个201 Created状态码,并在响应头中包含一个名为X-Auth-Token的字段。后续的所有API请求都需要在请求头中携带这个Token来进行身份认证

响应如下:

{
"@odata.id": "/redfish/v1/SessionService/Sessions/pwFE8aMLDO",
"@odata.type": "#Session.v1_7_0.Session",
"ClientOriginIPAddress": "192.168.20.101",
"Description": "Manager User Session",
"Id": "pwFE8aMLDO",
"Name": "User Session",
"Roles": [
"Administrator"
],
"UserName": "root"
}

上图是给webui使用的,即通过浏览器的方式去访问

X-Auth-Token是通过API的方式去访问的,常用于postman curl以及自动化测试

Basic Auth

需要注意的是,Openbmc的bmcweb实现中,使用Basic Auth(即在请求头中直接携带Authorization: Basic <credentials>)时,也可能会隐式地创建或复用一个Session。

但这并非Redfish规范的要求。规范明确指出,Basic Auth与Session是两种完全独立的认证机制,Basic Auth本身不应该创建Session。因此,OpenBMC的这种行为是一个具体实现细节,并非标准做法。

session get

有两种:获取所有session信息和单个session。可以直接使用之前创建时保留的token访问:

session安全性和持久性

理论上,如果普通用户能登录到BMC的操作系统(Shell),并读取bmcweb_persistent_data.json文件,就可能拿到所有Token。但OpenBMC已经通过文件系统权限(如将文件权限设为640)来防范这一点,确保只有特定用户(如rootbmcweb组)能读取该文件。