跳到主要内容

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

Redfish API 鉴权方式

Redfish API 支持以下两种鉴权方式:

  • Basic Auth:每次请求都携带用户名和密码,适合快速验证接口。
  • Token:先登录获取会话 Token,后续请求通过 X-Xsrf-Token 请求头鉴权,适合连续调用多个接口。

1 准备连接信息

Redfish API 的基础地址格式如下:

<protocol>://<device-ip>:<port>

默认值如下,如需连接其他设备,再根据实际环境修改:

参数默认值说明
protocolhttps默认使用 HTTPS。
device-ip127.0.0.1BMC 默认示例地址。
port443默认 Redfish 服务端口。

1.1 默认账号密码

默认账号为 admin,默认密码为 admin

项目默认值
用户名admin
密码admin

首次登录后应立即修改默认密码。生产环境建议使用 HTTPS,避免账号密码在传输过程中泄露。

2 鉴权方式

以下 Tabs 分别展示两种完整的鉴权流程。默认显示 Basic Auth。

<Tabs defaultValue="basic-auth" values={[{"label": "Basic Auth", "value": "basic-auth"}, {"label": "Token", "value": "token"}]}>

Basic Auth 使用 HTTP Authorization 请求头发送用户名和密码。使用 curl --user 时,curl 会自动生成该请求头。

使用默认账号密码查询 Redfish 入口:

Basic Auth
curl --user 'admin:admin' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish'

查询 Redfish 根资源:

查询根资源
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1'

后续资源路径应以接口响应中的 @odata.id 为准,例如:

查询 Systems 资源
curl --user '<username>:<password>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1/Systems'

Token 鉴权需要先登录获取 Token,后续请求通过 X-Xsrf-Token 请求头携带 Token。Token 不要放入 URL 或 JSON 请求体。

获取 Token:

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

如果已经修改过默认密码,请将请求中的 password 替换为实际密码。登录成功后,从 data.token 中读取 Token:

登录成功响应
{
"code": 200,
"data": {
"name": "admin",
"token": "<token>"
},
"msg": "login success"
}

使用 Token 查询 Redfish 资源:

使用 Token 查询根资源
curl --header 'X-Xsrf-Token: <token>' \
--header 'Accept: application/json' \
'<protocol>://<device-ip>:<port>/redfish/v1'

使用 Token 提交 JSON 请求:

使用 Token 执行操作
curl --request POST \
--header 'X-Xsrf-Token: <token>' \
--header 'Content-Type: application/json' \
--data '{
"<parameter>": "<value>"
}' \
'<protocol>://<device-ip>:<port><action-target>'

使用结束后注销 Token:

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

成功查询响应示例:

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

同一个请求只选择一种鉴权方式即可,不要同时发送 Basic Auth 和 Token。生产环境建议使用 HTTPS,避免账号密码在传输过程中泄露。测试设备使用自签名证书时,可以临时在 curl 命令中加入 --insecure,生产环境不应长期关闭证书校验。

3 常见问题

返回 401 Unauthorized

  • Basic Auth:确认用户名、密码正确,并检查账号是否具备目标资源权限。
  • Token:确认请求头名称为 X-Xsrf-Token,并检查 Token 是否过期或已经注销。
  • 检查请求使用的协议、地址和端口是否正确。

登录返回 HTTP 200,但登录失败

部分登录失败场景仍可能返回 HTTP 200,需要同时检查响应体中的 code。凭据无效时,code 可能为 422