文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何设计安全的 API 调用?

2024-11-30 04:39

关注

我们在设计一个网站或平台的时候,经常需要向用户开放 API 访问。这样用户就可以程序化地调用一些功能,举几个例子:

  1. 交易所开放 API 让用户可以进行低时延的程序化交易,
  2. 微信公众号平台开放 API 让三方工具进行运营管理工作,
  3. Stripe 开放 API 让商家和其他平台能很好地集成支付功能。

当我们向用户开放 API 访问时,我们需要确保每次 API 调用都经过鉴权。这意味着我们需要确认用户是他们所声称的身份。

我们一般使用两种常见的方法来进行鉴权:

  1. 基于令牌的身份验证
  2. HMAC(基于哈希的消息验证码)验证

下图说明了它们的工作原理。

01 基于令牌

第 1 步

用户在客户端输入密码,然后客户端将密码发送到鉴权服务器。

第 2 步

鉴权服务器验证密码并生成一个有有效期的令牌。

第 3 步和第 4 步

现在,客户端可以发送请求,使用 HTTP 头中带有的令牌访问服务器资源。这种访问在令牌过期前一直有效。

02 基于 HMAC

这种机制通过使用哈希函数(SHA256 或 MD5)生成消息验证码(签名)。

第 1 步和第 2 步

服务器生成两个密钥,一个是公共 APP ID(公钥),另一个是 API Key(私钥)。

第 3 步

现在我们在客户端生成一个 HMAC 签名(hmac A)。该签名是根据图中列出的一组字段生成的。注意这里会加入请求的时间戳,这样一个 HMAC 签名是有有效期的,不会一直有效。

第 4 步

客户端发送请求来访问服务器资源,HTTP 头中包含 hmac A。

第 5 步

服务器收到包含请求数据和鉴权标头的请求。它从请求中提取必要的字段,并使用存储在服务器端的 API Key 生成签名(hmac B)。

第 6 步和第 7 步

服务器会比较 hmac A(在客户端生成)和 hmac B(在服务器端生成)。如果两者匹配,请求的资源将返回给客户端。

来源:ByteByteGo内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯