写点什么

RESTful API 认证模式

  • 2010-01-22
  • 本文字数:1071 字

    阅读完需:约 4 分钟

所有人都觉得编写客户化认证协议是有必要的”, George Reese 说,这也是他在使用云提供者和 SaaS 提供商们提供的 API 进行编程的过程中的领悟之一。在一篇博文中他提出了一组旨在适用于任何 REST 的认证需求的标准。

George 曾开发过各种各样的 Web 服务 API,他发现每一种 API 都需要一种特定的认证机制。

我已经疲于在这种事情上上浪费脑细胞了,比如某提供商 A 的要求是在 URL 编码之前或之后为查询字符串进行签名。我也早已厌倦了提供商们诸如要求使用用交互用户的凭证进行 API 调用的这样的认证要求了。

他勾勒了 REST API 的认证机制的设计规则。他说,“让我们变得简单些:如果你不加密 API 调用,你甚至连假装安全都做不到”。

1。 所有的 REST API 调用必须运行在使用可信的 CA 签名过的证书的 HTTPS 之上。所有客户端与服务端交互之间必须要验证服务端证书。

通过使用由可信机构签名的证书,SSL 可以保护你免受“中间人”攻击。中间人攻击的手段是在客户端和服务端之间插入一个代理进而窃听“加密的”通信。

如果你不验证服务端的 SSL 证书,你就无法知道谁在接收你的 REST 查询请求。

2。所有的 REST API 调用应该通过专门的 API 密钥完成,该密钥由标识成分和共享密钥两部分组成。系统必须允许一个指定客户端拥有多个活动的 API 密钥并能方便地让个别密钥失效。

前半部分的重点是发起 REST 请求的系统不应是某个交互用户……REST 认证的的是程序而不是人,它支持比人使用的用户名 / 密码更强大的认证手段。

后半部分的意思是,每个 REST 服务器应该支持每个客户端拥有多个 API 密钥。该需求使得孤立潜在危害和当危害发生时解决问题更为简单。[…] 当应用被破坏时,你也需要一种完善的方式铺开替换的 API 密钥。

3. 所有的 REST 查询必须通过签名令牌签名的方式进行认证,该过程通过对按小写的字母顺序排序的查询参数使用私钥进行签名。签名应在查询字符串的 URL 编码前完成。

换言之,你不能将共享密钥作为查询串的一部分进行传递,而应使用它进行签名。签名后的查询串看起来应该是这样的:

GET /object?timestamp=1261496500&apiKey=Qwerty2010&signature=abcdef0123456789

被签名的串是“ “/object?apikey=Qwerty2010&timestamp=1261496500” ”,而签名是应用 API 密钥的私钥所得到的 HMAC-SHA256 哈希值。

他承认在大部分类 REST 的 RESTFul API 方案中,认证几乎肯定被看作是次要的问题。然而,在文章的结论中他建议读者“最好参照别人的例子,而不应自创认证模式”。

InfoQ 的读者们,请别吝惜你的意见。最初的博文地址是: O’Rielly 社区博客.


查看英文原文: RESTful API Authentication Schemes

2010-01-22 10:3525788
用户头像

发布了 184 篇内容, 共 86.8 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

YashanDB数据库的常见问题与解决办法

数据库砖家

数据库‘’

YashanDB数据库功能与应用场景全面介绍

数据库砖家

数据库‘’

征程 6E/M|如何解决量化部署时 mul 与 bool 类型数据交互的问题

地平线开发者

自动驾驶; 算法工具链 地平线征程6

YashanDB数据库实时备份技术及恢复操作指南

数据库砖家

数据库‘’

YashanDB数据库数据迁移的步骤与注意事项

数据库砖家

YashanDB数据库性能调优实用技巧分享

数据库砖家

不是做大模型,而是落在执行闭环,酷开智能体思路浮出水面

业界

ArkUI-X平台差异化

龙儿筝

YashanDB索引优化详解,加速查询效率的实用方法

数据库砖家

YashanDB数据库与人工智能结合的应用前景

数据库砖家

TortoiseSVN使用-权限配置

刘大猫

人工智能 svn 权限控制 tortoiseSVN 权限配置

ArkUI-x跨平台Bridge最佳实践

龙儿筝

YashanDB数据库多语言支持及国际化方案介绍

数据库砖家

数据库‘’

YashanDB数据库实时监控系统设计与实现

数据库砖家

数据库‘’

YashanDB数据库实现高可用负载均衡配置说明

数据库砖家

数据库‘’

YashanDB数据库索引优化技术详解

数据库砖家

2025年Java面试行情变了?技术不达标,如何快速逆袭拿高薪?

程序员高级码农

Java Java 面试 Java 面试题

YashanDB如何支持企业的数据分析与决策支持?

数据库砖家

数据库‘’

YashanDB数据库事务管理详解,保证数据一致性

数据库砖家

数据库‘’

难哭了的高考数学题,4家国产大模型表现如何?

极客天地

YashanDB数据库的维护成本与效益分析

数据库砖家

数据库‘’

YashanDB数据库的最佳实践及实施方案总结

数据库砖家

数据库‘’

BOE(京东方)“照亮成长路”公益项目新十年启幕 科技无界照亮美好未来

爱极客侠

YashanDB面向云计算平台的数据库优化方案

数据库砖家

数据库‘’

YashanDB数据库安全机制详解及企业应用建议

数据库砖家

数据库‘’

YashanDB数据库多版本控制功能介绍与应用

数据库砖家

数据库‘’

YashanDB数据库与数据可视化的完美结合

数据库砖家

YashanDB与大数据分析平台集成方案详解

数据库砖家

iOS 26 新增实时翻译:基于端侧并向第三方开放接口;Neuralink 和 Grok 使渐冻症患者重新「发声」丨日报

声网

51Talk发布2025年Q1财报:第一季度营业收入同比增长93.1%

财见

YashanDB数据库索引优化:提升查询性能的核心技术

数据库砖家

RESTful API认证模式_SOA_Dilip Krishnan_InfoQ精选文章