NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

PrismNET棱镜协议,发展路径!

PrismNET

区块链 dapp PrismNET棱镜协议 PrismNET

链上挖矿模式开发全攻略:数字货币的挖矿新篇章!

西安链酷科技

区块链开发

一文带你了解什么是国际短信

Finovy Cloud

云计算 国际短信

vivo蓝河破浪前行,国产操作系统掀起创新风暴

脑极体

AI

DApp软件开发全解析:智能合约定制,引领未来数字生态!

西安链酷科技

dapp合约开发

公链技术开发公司:打造安全、高效的区块链基础设施

西安链酷科技

交易所开发 公链钱包开发

公链技术开发公司:引领区块链技术的商业化进程

西安链酷科技

区块链技术公司

从故障演练到运维工具产品力评测的探索 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 系统运维 龙蜥社区

鸿蒙HarmonyOS实战-ArkUI组件(Grid/GridItem)

蜀道山

鸿蒙 HarmonyOS 鸿蒙开发 arkui ArkTS

欢迎「北辰使者」!首发队伍已集结,Milvus 社区力量持续壮大!

Zilliz

开源社区 Milvus Zilliz 北极星计划

公链技术开发公司:构建去中心化应用的新引擎

西安链酷科技

公链团队

明天!龙蜥在 2024 OceanBase 开发者大会上等你

OpenAnolis小助手

操作系统 oceanbase 龙蜥社区

新特性、新平台、新功能!Anolis OS 8.9 版本正式发布

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥操作系统

学习 XQuery:XML数据查询的关键

小万哥

xml 程序人生 编程语言 软件工程 前端开发

Vue 3 进阶用法:异步组件

快乐非自愿限量之名

Vue 异步

Valkey开源社区再添新成员!阿里云与Redis核心贡献者再聚首

阿里云瑶池数据库

数据库 redis 阿里云 开源社区

探索去中心化应用程序(DApps)开发:重塑数字世界的无限可能!

西安链酷科技

dapp去中心化系统开发

交易所开发费用揭秘:找对搭建交易所的公司,成本透明不再迷茫!

西安链酷科技

区块链交易所开发 数字货币交易所 期权交易所开发

ETLCloud中数据源使用和管理的技巧

RestCloud

MySQL 数据库 ETL 数据源 数据源管理

九章云极DataCanvas AIDC OS智算操作系统正式发布,开启AI智算新纪元

九章云极DataCanvas

四大战略合作重磅签署,九章云极DataCanvas公司为全球智算生态注能

九章云极DataCanvas

APM 应用诊断系列(二):定位资源池问题

腾讯云可观测平台

defi交易挖矿系统开发 dapp智能合约开发技术

西安链酷科技

DAPP系统开发 defi金融开发

ClkLog自定义事件分析登场

ClkLog

数据分析 埋点 开源软件

什么是费曼学习法,具体使用方法?一文讲清费曼学法!

彭宏豪95

效率工具 高效学习 在线白板 办公软件 费曼学习法

智慧供应链新时代,顺丰科技助力企业实现系统性价值提升

新消费日报

Application Loader不错的打包App,上架App工具使用

雪奈椰子

面向 AI 软件栈的优先设计 龙蜥社区 AI 生态建设介绍

OpenAnolis小助手

开源 AI 操作系统 龙蜥社区 龙蜥操作系统

龙之谷链游再现辉煌!西安区块链游戏开发公司引领新潮流,开启虚拟冒险之旅!

西安链酷科技

区块链游戏开发 nft卡牌开发

盘点 | 2024 年最值得关注的十大 ETL 数据集成工具

tapdata

Tapdata 数据集成平台 etl工具都有哪些 数据etl工具

引领区块链创新:公链技术开发公司的先驱之路

西安链酷科技

合约量化 合约开发 公链钱包开发

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