使用Redfish API在iDRAC 9创建用户账户失败求助
iDRAC 9(固件5.10.30.00)Redfish API创建用户返回405 Method Not Allowed
问题描述
我在固件版本为5.10.30.00的iDRAC 9上尝试通过Redfish API创建用户账户,使用的Python代码如下:
payload = { "UserName": new_user_name, "Password": new_user_password, "RoleId": "Administrator", "Enabled": True } url = f"https://{idrac_ip}/redfish/v1/AccountService/Accounts" headers = {'Content-Type': 'application/json'} response = requests.post(url, auth=HTTPBasicAuth(admin_username, admin_password), headers=headers, data=json.dumps(payload), verify=False)
但收到405错误响应:
{ "statusCode": 405, "body": "\"Failed to create user. Response: {\\\"error\\\":{\\\"@Message.ExtendedInfo\\\":[{\\\"Message\\\":\\\"Unable to run the method because the requested HTTP method is not allowed.\\\",\\\"MessageArgs\\\":[],\\\"MessageArgs@odata.count\\\":0,\\\"MessageId\\\":\\\"IDRAC.2.5.SYS402\\\",\\\"RelatedProperties\\\":[],\\\"RelatedProperties@odata.count\\\":0,\\\"Resolution\\\":\\\"Enter a valid HTTP method and retry the operation. For information about valid methods, see the Redfish Users Guide available on the support site.\\\",\\\"Severity\\\":\\\"Informational\\\"}],\\\"code\\\":\\\"Base.1.8.GeneralError\\\",\\\"message\\\":\\\"A general error has occurred. See ExtendedInfo for more information\\\"}}\"" }
查询确认该接口允许的HTTP方法包括GET、HEAD、POST、OPTIONS,且已完成以下排查:
- Redfish功能已启用
- 使用具有管理员权限的root账户操作,日志显示root账户通过Redfish正常访问iDRAC
- 新账户密码策略已设为0(无限制)
- 尝试了即将弃用的旧接口
https://{idrac_ip}/redfish/v1/Managers/iDRAC.Embedded.1/Accounts,得到相同错误 - 已查阅Redfish官方Schema文档
目前仍未找到问题根源,寻求技术解决方案。
可能的原因及解决方案
1. 检查用户账户数量是否达上限
iDRAC 9本地用户账户存在数量上限(通常最多16个),若当前已创建用户数达上限,POST请求会被拒绝,可能返回405这类误导性错误。
- 验证方式:发送GET请求到
/redfish/v1/AccountService/Accounts,统计返回的用户列表数量。 - 解决方法:删除闲置用户后重新尝试创建。
2. 确认RoleId的正确性
部分iDRAC固件版本对角色ID的标识符有要求,比如需使用iDRAC.Administrator而非Administrator,且区分大小写。
- 验证方式:发送GET请求到
/redfish/v1/AccountService/Roles,获取所有可用角色的Id值,确保payload中的RoleId与返回值完全匹配。 - 解决方法:替换payload中的
RoleId为实际存在的角色ID。
3. 检查请求payload的完整性
部分iDRAC固件版本可能要求额外必填字段,比如OEM扩展属性(若启用了特定功能)。
- 验证方式:对照iDRAC官方Redfish文档中
AccountService/Accounts的POST请求要求,检查payload是否缺失必填字段。 - 解决方法:补充必填字段,或简化payload只保留官方明确要求的核心字段(如
UserName、Password、Enabled)。
4. 尝试固件版本适配的特殊请求方式
iDRAC 9 5.10.30.00版本可能存在Redfish API的POST请求处理BUG,可尝试以下两种方案:
- 先发送POST请求创建空用户(仅包含
UserName和Enabled: True),再发送PATCH请求更新密码和角色; - 使用PUT请求直接指定未被占用的用户ID创建,示例路径:
/redfish/v1/AccountService/Accounts/10(10为未使用的用户ID)。
5. 检查Redfish细粒度权限配置
即使使用root账户,也可能存在Redfish API的细粒度权限限制,需确认是否允许通过Redfish创建用户。
- 验证方式:登录iDRAC Web控制台,进入
iDRAC 设置 > 用户 > 用户组,检查root所在组的Redfish权限是否包含"配置用户"项。 - 解决方法:启用对应权限后重新尝试。
内容的提问来源于stack exchange,提问作者Tym Trzaskalski
相关产品推荐
相关产品推荐

