写点什么

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:3525392
用户头像

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

关注

评论

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

【终极教程】cocos2dx-js 分批次混淆压缩js文件

Geek_66e2f3

玩转Spring状态机

不在线第一只蜗牛

spring 状态机

广告精准投放人群的实现:千万用户过滤指定人群

xfgg

Java

降人工简流程,人工智能助力企业打赢人力成本战

用友BIP

降本增效

重磅发布|2023年度中国可观测性现状调研报告发布

博睿数据

不黑不吹,低代码开发真的好用吗?

伤感汤姆布利柏

低代码 JNPF

软件测试/测试开发丨常见测试框架类型TDD、DDT、BDD、ATDD

测试人

软件测试 自动化测试 测试开发

Vellum for Mac(电子书生成工具)v3.6.3激活版

iMac小白

致敬中国数据库的黄金时代-记录阿里云数据库从落选到登顶魔力象限的全过程

小猿姐

数据库 阿里云 Gartner 魔力象限

融云数智办公获 IT168「2023 年度信创卓越贡献奖」

融云 RongCloud

产品 IT 信创 信息技术 数智办公

软件测试/测试开发丨分层测试体系、单元、UI 、接口、白盒测试

测试人

软件测试 测试开发

商业&技术双轮驱动,企业数智化运营新力量

用友BIP

数智营销

lazada商品列表数据接口方法(lazada.item_search)

tbapi

lazada商品详情数据接口 lazada商品数据接口 lazada商品API接口 lazada API接口

EndNote 21 for Mac(文献管理软件) v21.2永久激活版

mac

苹果mac Windows软件 EndNoter 参考文献管理软件

保姆级·从零搭建开发一个现代化体育赛事直播系统平台

软件开发-梦幻运营部

直播预告|国产化软硬件升级替换之路:可观测性建设之路

博睿数据

蓝戟英特尔锐炫A770评测:多款热门游戏性能提升,XeSS取得丰硕成果

E科讯

研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库

冰河

程序员 DevOps 研发效能 系统架构 架构师

软件测试/测试开发丨深入了解软件测试:原则、对象、作用与缺陷

测试人

Python 人工智能 软件测试 测试开发

将Abp默认事件总线改造为分布式事件总线

EquatorCoco

分布式 WPF Abp loc

11项指标!企业应用软件国产替代的选型标准与创新之路

用友BIP

国产替代

用友BIP资产云,盘活数据,助力国有资产保值增值

用友BIP

资产管理

PAM:完善的第三方应用

尚思卓越

网络安全

探索光伏单晶行业成本管理之业务场景分析

用友BIP

成本管理 光伏单晶行业

Sync Folders Pro for Mac(文件夹数据同步工具)v4.6.9中文激活版

iMac小白

开放原子开发者大会——操作系统大会2023成功举办

开放原子开源基金会

开源

缓存:系统设计中至关重要的一环

互联网工科生

数据库 缓存 缓存技术

云技术分享 | EC2 之 Windows 忘记密码(一)

亚马逊云科技 (Amazon Web Services)

ssm Amazon EC2 launch

倒计时1天|2023开放原子开发者大会,明天见!

开放原子开源基金会

开源

从身份治理出发,助力教育行业回归教育本质

Authing

低代码 教育 Authing 身份管理平台 身份管理

前端开发新趋势:Web3 与虚拟现实的技术融合

EquatorCoco

前端 Web 虚拟现实 web前端开发

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