×

【atrust】API接口调用验证测试
  

新手794182 72754人觉得有帮助

{{ttag.title}}
一、需要了解的参数
(一)涉及的工具
以下是需要用到的在线网站和文档链接:
获取时间戳网站:https://tool.lu/timestamp/
API接口调试工具-Postmanhttps://www.Postman.com/downloads/
(二)基础参数
API ID零信任新建API设备后,会生成一个ID,此IDAPI ID
API密钥:生成API设备后,会生成一个用于校验的密钥,需要管理员密码才可以查看;
时间戳:时间戳为Unix时间戳格式,单位为秒,10位长度的正整数;为了防范重放攻        击,需要在请求头中携带客户端的当前时间戳,服务端在校验签名前会先校验该时间戳,        当该时间戳与服务端当前时间之差大于5分钟时,请求会被认为是一个已经过期的请求。
Noncenonce是个随机字母+数字组成的字符串,优先建议使用uuidv4的方法计算。
        若在测试过程中使用uuidv4计算有难度,也可直接使用举例的字符串进行测试。
签名串:组成要素:请求路径、query参数、body参数
签名串 = 请求路径 + ? + query参数 + & + body参数
body参数不存在时: 签名串 = 请求路径 + ? + query参数
query参数不存在时: 签名串 = 请求路径 + ? + body参数
body参数和query参数都不存在时: 签名串 = 请求路径
签名密钥:组成要素:API IDAPI密钥、时间戳、nonce
签名密钥 = 'appId=' + API ID + '&' + 'appSecret=' + API密钥 + '&' + 'timestamp=' + 时间戳 + '&' + 'nonce=' + nonce
签名:利用签名密钥将签名串以hmacSHA256的加密算法生成的一串加密代码;
Query参数:
签名串中使用的query参数需要对key进行ascii排序
例如:因为p的字母序小于u,所以password=123&username=sf是正确的,而
username=sf&password=123是错误的
BODAY参数:
POST请求中的json,为了跨语言兼容,这里必须是紧凑格式的json,逗号和分号后不能有空格和换行,
如:{"key1":"value1"}
(三)调试接口必填参数
请求头部需要包含有:
签名:x-ca-sign  
API IDx-ca-key
时间戳:x-ca-timestamp
noncex-ca-nonce
Postman示例:
二、接口调用(一)调用流程1.获取API IDAPI密钥
管理员登录控制中心控制台,进入[系统管理/开放平台点击<添加>新建设备联动列表;
进入设备联动配置页面,完成基本信息和API设置,并点击<保存>
可在Open API页面查看到创建的设备。
创建好可以看到API ID,点击显示密钥,输入atrust管理员密码获取API密钥;
API ID2524242
API密钥:9d38d9b1c5dc4db3b72e3e49b101012c
2.Postman需要的参数
使用postman基本流程:
1.新建项目
2.对应项目右键新增request
3.需要填写的参数
根据接口文档,选择需要填入的参数;
下图为示例:

(二)调用举例1.查询在线用户
1)查看接口文档
从接口文档中能够得出:
A.接口路径为/api/v1/monitor/getUserStatus,请求方式为GET
B.确认请求参数为query;则不需要在body中输入请求内容;
C.必须要填的参数是pageSizepageIndex=1

2)获取签名
A.API IDAPI 密钥已获取;
B.时间戳前往https://tool.lu/timestamp/进行获取
C.获取nonce
可以自己写代码获取,也可以直接拿测试样例;
这里使用测试样例:
f5f0fe63-5b3e-4e44-908c-b95758b6d7e4
D.获取签名串
签名串由接口路径+参数
/api/v1/monitor/getUserStatus?pageSize=20&pageIndex=1
注意:
这里如果这么生成会提示签名校验错误
所以需要将签名串修改为:
/api/v1/monitor/getUserStatus?pageIndex=1&pageSize=20
按字母顺序,IS前面;所以要修改下顺序;
E.获取签名
根据已有的信息:
API ID2524242
API密钥:9d38d9b1c5dc4db3b72e3e49b101012c
时间戳:1668419395
随机数:f5f0fe63-5b3e-4e44-908c-b95758b6d7e4
签名密钥 = 'appId=' + API ID + '&' + 'appSecret=' + API密钥 + '&' + 'timestamp=' + 时间戳 + '&' + 'nonce=' + nonce
签名秘钥:
appId=2524242&appSecret=9d38d9b1c5dc4db3b72e3e49b101012c×tamp=1668419395&nonce=f5f0fe63-5b3e-4e44-908c-b95758b6d7e4
签名串:/api/v1/monitor/getUserStatus?pageIndex=1&pageSize=20
使用签名秘钥和签名串使用HMAC-SHA256算法计算出签名
签名结果:59345f494a006297e8e081e998b7b58145b7e976d1ae2ff5db497df65f87fc30
(如需根据该示例进行测试,需要改成自己的API ID和密钥,修改时间戳,重新生成签名)
3)填入postman
正常获取到在线用户信息
Ps
这里的查询参数是只传了页数和每页的数量;
可以继续传过滤和搜索名称的参数;
2.踢出在线用户
1)查看接口文档

从接口文档中能够得出:
A.接口路径为/api/v1/monitor/kickoutUsers,请求方式为POST
B.确认请求参数为body;则不需要在query栏中输入参数,仅需要在body中填写紧凑型json语句;请求头多了一个Content-Type
C.必须要填的参数是userListuserList底下的├─name以及├─userDirectoryName
2)获取签名
A.API IDAPI 密钥已获取;
B.时间戳前往https://tool.lu/timestamp/进行获取
C.获取nonce
可以自己写代码获取,也可以直接拿测试样例;
这里使用测试样例:
f5f0fe63-5b3e-4e44-908c-b95758b6d7e4
D.body中参数需要修改成紧凑型josn
nameuserDirectoryName具体的value根据查询在线用户中的value填写;
E.获取签名串
签名串由接口路径+参数
/api/v1/monitor/kickoutUsers?{"userList":[{"name":"18812312312","userDirectoryName":"LDAP"}]}
F.获取签名
根据已有的信息:
API ID2524242
API密钥:9d38d9b1c5dc4db3b72e3e49b101012c
时间戳:1668420886
随机数:f5f0fe63-5b3e-4e44-908c-b95758b6d7e4
签名密钥 = 'appId=' + API ID + '&' + 'appSecret=' + API密钥 + '&' + 'timestamp=' + 时间戳 + '&' + 'nonce=' + nonce
签名秘钥:
appId=2524242&appSecret=9d38d9b1c5dc4db3b72e3e49b101012c×tamp=1668420886&nonce=f5f0fe63-5b3e-4e44-908c-b95758b6d7e4
签名串:
/api/v1/monitor/kickoutUsers?{"userList":[{"name":"18830650910","userDirectoryName":"LDAP"}]}
使用签名秘钥和签名串使用HMAC-SHA256算法计算出签名
签名结果:97c016d63884e5e4d1bc817b3c226cb962ad6485b85a3bcbe5d401082c126a93
(如需根据该示例进行测试,需要改成自己的API ID和密钥,修改时间戳,重新生成签名)
3)填入postman
请求成功,成功踢出用户

ps:简单测试了两个接口; 其他接口按照测试文档测试即可(测试指导链接https://bbs.sangfor.com.cn/plugin.php?id=sangfor_databases:index&mod=viewdatabase&tid=256629

打赏鼓励作者,期待更多好文!

打赏
31人已打赏

高挑且气度不凡的向日葵 发表于 2023-8-11 09:06
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
Alex233 发表于 2023-8-11 10:18
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
王蒙召 发表于 2023-8-11 17:44
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
技术小白 发表于 2023-8-11 19:34
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
wshellym 发表于 2023-8-12 08:42
  
感谢分享,有助于工作和学习。
zjwshenxian 发表于 2023-8-13 13:12
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
王蒙召 发表于 2023-8-14 11:52
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
新手276056 发表于 2023-8-16 09:41
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
思贤 发表于 2023-8-19 09:12
  
感谢分享,有助于工作和学习。
发表新帖
热门标签
全部标签>
西北区每日一问
技术盲盒
安全效果
【 社区to talk】
技术笔记
干货满满
每日一问
信服课堂视频
新版本体验
GIF动图学习
技术咨询
功能体验
2023技术争霸赛专题
产品连连看
安装部署配置
通用技术
秒懂零信任
技术晨报
自助服务平台操作指引
原创分享
标准化排查
排障笔记本
玩转零信任
排障那些事
SDP百科
深信服技术支持平台
POC测试案例
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
升级&主动服务
高频问题集锦
社区新周刊
全能先锋系列
云化安全能力

本版版主

0
2
1

发帖

粉丝

关注

38
7
5

发帖

粉丝

关注

5
3
4

发帖

粉丝

关注

47
4
1

发帖

粉丝

关注

1
4
0

发帖

粉丝

关注

0
0
0

发帖

粉丝

关注

本版达人