session在openBMC中web会话显示会话session列表 所有通过bmcweb服务HTTP/HTTPS建立的会话包括Redfish 标准接口/redfish/v1/SessionService/Sessions传统 REST 接口/login不包括SSH 会话和IPMI 会话。session创建redfishRedfish协议规定的标准登录方式核心操作就是创建一个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来防范这一点确保只有特定用户如root或bmcweb组能读取该文件。