参考H3C 安全产品 RESTful二次开发指南(V7)-6W100-整本手册 报404 请问这个手册对接API 需要防火墙后台如何配置API权限,/api/v1/login 不行 一直返回401
通过终端登录防火墙配置
restful https enable //HTTPS方式
local-user apiuser class manage
password simple xxx
service-type web
authorization-attribute user-role network-admin
quit
但是命令 display restful status 没这个命令 不知为何
另外测试接口
curl -k -X GET "https://192.168.1.1/api/v1/Device/DeviceInfo" \ -H "Authorization: Basic YWRtaW46MTIzNDU2" \ -H "Content-Type: application/json"
和
curl -k -X GET "https://192.168.1.1/api/aaa/login -H "Content-Type: application/json" -d '{"username":"admin","password":"123456"}' 均返回401 unauthorized
老师 构建了api账户 api_anguan 查看 2. 账号 **api_anguan**(API 对接账号,问题账号) - Device management user api_anguan - State:Active - **Service type:HTTPS** - User group:system - Work directory:flash: - User role list:`network‑admin, network‑operator` display current-configuration | include restful,可以看到 restful https enable 但是 接口依旧 401
根据你提供的信息和返回的 401 Unauthorized 错误,问题主要出在 RESTful API 的配置和调用方式上。display restful status 命令不存在也是正常的,因为 Comware V7 系统中查看 RESTful 服务状态通常使用 display current-configuration | include restful。
请按照以下步骤重新配置和调用。
通过 Console 或 SSH 登录防火墙,执行以下命令:
restful https enable 命令用于开启 HTTPS 方式的 RESTful API 服务。如需修改端口,可使用 restful https port <端口号>。
关键在于 service-type http,这会使该用户获得通过 HTTP/HTTPS 进行 API 访问的权限。角色 network-admin 赋予了最高管理权限。
执行 display current-configuration | include restful,如果看到 restful https enable 等输出,说明服务已开启。
老师 构建了api账户 api_anguan 查看 2. 账号 **api_anguan**(API 对接账号,问题账号) - Device management user api_anguan - State:Active - **Service type:HTTPS** - User group:system - Work directory:flash: - User role list:`network‑admin, network‑operator` display current-configuration | include restful,可以看到 restful https enable 但是 接口依旧 401
老师 构建了api账户 api_anguan 查看 2. 账号 **api_anguan**(API 对接账号,问题账号) - Device management user api_anguan - State:Active - **Service type:HTTPS** - User group:system - Work directory:flash: - User role list:`network‑admin, network‑operator` display current-configuration | include restful,可以看到 restful https enable 但是 接口依旧 401
display restful status命令不存在问题现象:
restful https enable,该命令在新版本防火墙已经改名,旧文档 6W100 手册接口路径、命令和当前版本不匹配;display restful status命令不存在;/api/v1/login、/api/aaa/login返回 401 Unauthorized;Basic Auth 直接调用设备信息接口同样 401。1)命令变更:新版本 SecPath 防火墙,不再使用restful https enable;RESTful 能力是跟随ip https enable HTTPS 服务一起启用,没有独立 restful 视图,因此display restful status这条命令被移除,旧手册是老版本设备文档。
只要 HTTPS Web 管理服务正常能浏览器登录防火墙,RESTful API 服务就已经开启,不需要额外单独 restful 命令。
2)接口路径版本大坑(高频踩坑)
POST /api/v1/login 返回 token/api/rest/login,不是 /api/v1/login、不是 /api/aaa/login,错误路径返回 404/401。你 curl 写
/api/aaa/login是错误路径。
3)账号配置缺陷:local-user 必须配置 service-type https,只配 web 不够;API 复用 HTTPS Web 账号体系。 4)接口所属 zone 必须放通 service-manage https permit,接口没有放通 https 管理会直接 401/403。 5)防火墙 RESTful 不支持 HTTP Basic Auth 直接访问业务接口,必须先 POST 登录获取 token,后续请求携带 token 头部,直接 Basic 调用 DeviceInfo 接口一定 401。
system‑view
#1、开启HTTPS服务(API依附HTTPS,没有独立restful开关)
ip https enable
#2、接口放通https管理权限,接口加入安全域
interface GigabitEthernet1/0/0 #你的管理接口
service‑manage enable
service‑manage https permit
quit
firewall zone trust
add interface GigabitEthernet1/0/0
quit
#3、API管理账号配置,必须带service‑type https
local‑user apiuser class manage
password irreversible‑cipher Test@123456
service‑type ssh terminal https #必须有https!!
authorization‑attribute user‑role network‑admin
quit
#4、可选:HTTPS限制访问源IP(如果配置ACL,需要放行测试主机IP)
ip https acl 3000
acl advanced 3000
rule permit ip source 192.168.1.0 0.0.0.255
验证:浏览器可以正常使用 apiuser 账号登录防火墙 Web 页面,代表账号、HTTPS 服务全部正常。浏览器能登录,API 才有可能调通。
curl -k -X POST "https://192.168.1.1/api/rest/login" \
-H "Content-Type:application/json" \
-d '{"username":"apiuser","password":"Test@123456"}'
成功返回 {"token":"xxxxxxxxxxxx"}。
curl -k -X GET "https://192.168.1.1/api/rest/Device/DeviceInfo" \
-H "Authorization:Bearer xxxxxxxxxxxxx(上面拿到的token)"
service‑manage https permit,接口加入对应安全域。service‑type https必须配置,只写 web 不行。/api/rest/login,抛弃旧手册 /api/v1/login、/api/aaa/login。ip https acl,确认你的 curl 客户端 IP 被 ACL 允许。display restful status命令找不到 → 新版本防火墙无该命令,API 由 ip https enable 统一控制。/api/v1/login返回 404 → 接口路径过时,改用/api/rest/login。
旧手册《H3C 安全产品 RESTful 二次开发指南 (V7)-6W100》是早期版本文档,接口 URI、命令已经和当前新版防火墙固件不兼容,以设备 Web 页面帮助文档内的 RESTful 在线 API 文档为准;访问 https://防火墙IP/api/rest/doc 打开在线 swagger 接口文档,直接复制示例。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
老师 构建了api账户 api_anguan 查看 2. 账号 **api_anguan**(API 对接账号,问题账号) - Device management user api_anguan - State:Active - **Service type:HTTPS** - User group:system - Work directory:flash: - User role list:`network‑admin, network‑operator` display current-configuration | include restful,可以看到 restful https enable 但是 接口依旧 401