Welcome to Firefly
切换语言
Firefly文档中心
最近更新: 2026-08-26 17:51:06

基本资源

基本资源用于发现 Redfish 服务版本和设备公开的资源集合。客户端可以先查询版本资源,再访问对应版本的根资源,并根据响应中的 @odata.id 继续访问系统、管理、用户等资源。

认证要求

本页接口支持 HTTP Basic Auth 和会话 Token。Token 不放在请求体中,而是通过请求头 X-Xsrf-Token 携带。请勿将真实密码或 Token 写入脚本、日志或版本库。

访问协议

Redfish 服务可在 HTTP 与 HTTPS 之间切换。示例中的 <protocol> 根据服务配置填写 httphttps<port> 填写实际监听端口。端口号不能单独决定协议,例如服务也可以在 443 端口提供 HTTP。

获取会话 Token

向登录接口提交用户名和密码。只有登录时需要在请求体中携带认证信息。

登录并获取 Token
curl --request POST \
  --header 'Content-Type: application/json' \
  --data '{
    "username": "<username>",
    "password": "<password>"
  }' \
  '<protocol>://<device-ip>:<port>/redfish/v1/login'

登录成功后,从响应的 data.token 获取 Token:

200 OK
{
  "code": 200,
  "data": {
    "name": "<username>",
    "token": "<token>"
  },
  "msg": "login success"
}

后续请求将返回的 Token 放入 X-Xsrf-Token 请求头:

Token 请求头
X-Xsrf-Token: <token>

1 版本资源

查询服务支持的 Redfish 主版本及其入口路径。客户端可使用返回的路径继续发现对应版本的 Service Root。

请求

项目内容
方法GET
路径/redfish
认证HTTP Basic Auth 或 X-Xsrf-Token
请求体
成功状态码200 OK
查询 Redfish 版本入口
curl --user '<username>:<password>' \
  --header 'Accept: application/json' \
  '<protocol>://<device-ip>:<port>/redfish'

响应示例

以下内容是测试设备返回的真实响应,HTTP 状态码为 200 OK

200 OK
{
  "v1": "/redfish/v1/"
}

响应字段

字段类型说明
v1stringRedfish v1 Service Root 的访问路径。

版本字段的区别

/redfish 返回主版本入口,例如 v1/redfish/v1 响应中的 RedfishVersion 返回实现所遵循的详细协议版本,例如 1.9.0。两者含义不同。

错误响应

未提供有效认证信息时,服务返回 401 Unauthorized,响应格式与根资源接口一致。

2 根资源合集

查询 Redfish Service Root。响应包含服务自身的标识、协议版本、设备 UUID,以及当前设备提供的其他资源入口。

请求

项目内容
方法GET
路径/redfish/v1
认证HTTP Basic Auth 或 X-Xsrf-Token
请求体
成功状态码200 OK
查询根资源合集
curl --user '<username>:<password>' \
  --header 'Accept: application/json' \
  '<protocol>://<device-ip>:<port>/redfish/v1'

使用规范路径

建议使用不带尾斜杠的 /redfish/v1。当前服务访问 /redfish/v1/ 时会返回 301 Moved Permanently,并重定向到 /redfish/v1

响应示例

以下内容是使用有效账号请求当前测试环境 http://172.16.100.172:443 后得到的真实响应,HTTP 状态码为 200 OK。切换到 HTTPS 不会改变响应结构;UUID 等设备相关字段在其他设备上会不同。

200 OK
{
  "@odata.id": "/redfish/v1/",
  "@odata.type": "#ServiceRoot.v1.15.0.ServiceRoot",
  "AccountService": {
    "@odata.id": "/redfish/v1/AccountService"
  },
  "BmcVersion": "1.0.1",
  "Id": "RootService",
  "Managers": {
    "@odata.id": "/redfish/v1/Managers"
  },
  "Name": "Root Service",
  "Oem": {
    "@odata.id": "/redfish/v1/Oem"
  },
  "RedfishVersion": "1.9.0",
  "Switch": {
    "@odata.id": "/redfish/v1/Switch"
  },
  "Systems": {
    "@odata.id": "/redfish/v1/Systems"
  },
  "UUID": "138D3DBD-B2C1-4BD7-8D9A-112B2789E284",
  "UpdateFwService": {
    "@odata.id": "/redfish/v1/UpdateFwService"
  },
  "UpdateFwService_V2": {
    "@odata.id": "/redfish/v1/UpdateFwService_V2"
  }
}

响应字段

字段类型说明
@odata.idstring根资源的唯一访问路径,当前实现返回 /redfish/v1/
@odata.typestringService Root 的 OData 类型,当前实现为 #ServiceRoot.v1.15.0.ServiceRoot
Idstring根资源标识,当前实现为 RootService
Namestring根资源名称,当前实现为 Root Service
RedfishVersionstring当前实现支持的 Redfish 协议版本。
BmcVersionstring当前 BMC 服务版本。
UUIDstring当前设备的全局唯一标识符。
AccountServiceobject用户服务资源入口。
ManagersobjectBMC 管理资源入口。
OemobjectFirefly OEM 扩展资源入口。
Switchobject交换机管理资源入口。
Systemsobject系统资源入口。
UpdateFwServiceobject固件升级服务入口。
UpdateFwService_V2object第二版固件升级服务入口。

资源入口以实际响应为准

Service Root 中的资源入口由后端运行时注册。当前测试设备的响应中没有 Chassis 字段,因此客户端不应假定所有文档分类都会出现在根资源响应中,应以实际返回的字段为准。

错误响应

未提供有效认证信息时,服务返回:

401 Unauthorized
{
  "code": 401,
  "msg": "unauthorized"
}

及时注销

Token 使用结束后,应携带该 Token 请求 POST /redfish/v1/logout。注销成功后,原 Token 立即失效。

注销当前会话
curl --request POST \
  --header 'X-Xsrf-Token: <token>' \
  '<protocol>://<device-ip>:<port>/redfish/v1/logout'

本页目录