写点什么

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

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

关注

评论

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

链路追踪可视化利器之火焰图

观测云

链路追踪

电脑越用越慢,有什么好的解决方案?

上海锐起科技

nodejs中路径相关api

秃头小帅oi

京东技术专家的修炼之道——成为一名“六边形战士”

京东科技开发者

简化登录流程,助力应用建立用户体系

HarmonyOS SDK

HarmonyOS NEXT

Rust 助力无服务器构筑云计算新引擎

亚马逊云科技 (Amazon Web Services)

云计算 Serverless rust

国际网络互联,帮助跨国企业全球协同办公

Ogcloud

SD-WAN 企业组网 SD-WAN组网 跨国组网 跨国网络

对标世界一流!望繁信科技受邀参加2023企业财务数智化转型论坛

望繁信科技

数字化转型 流程挖掘 财务管理 流程资产 流程智能

什么是APT攻击,如何处理

德迅云安全杨德俊

KaiwuDB X 临沂大数据局 | 重点车辆一体化监管,助力你我的安全出行 🤝

KaiwuDB

KaiwuDB 分布式多模数据库 重车辆监管平台

文献解读-The trans-omics landscape of COVID-19

INSVAST

基因数据分析 生信服务

剖析 Redis List 消息队列的三种消费线程模型

不在线第一只蜗牛

数据库 redis

软件测试学习笔记丨Docker 安装、管理、搭建服务

测试人

软件测试

爽了!直接口诉让豆包MarsCode 开发文章评论区BOT!

Trae

人工智能 编程 AI 开发

告别性能瓶颈!四大关系型数据库向 TDengine 迁移的最佳解决方案

TDengine

数据库 tdengine

Java 中堆内存和栈内存上的数据分布和特点

emanjusaka

Java stack heap

亚信安慧AntDB-M 只读事务提交优化

亚信AntDB数据库

AntDB

Meme“淘金”热潮下:Meme发射平台的安全风险分析

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

JMeter 介绍与安装

霍格沃兹测试开发学社

《黑神话:悟空》——高科技点亮西游神话璀璨之路

GPU算力

马斯克 节点搭建 AIPC 黑神话悟空 PC集群

mac电脑植物大战僵尸版下载

你的猪会飞吗

mac游戏 Mac游戏下载 mac单机游戏

曝字节 AI 硬件团队首款自研产品为智能耳机,与豆包联动;OpenAI 神秘新模型或将在两周内发布丨 RTE 开发者日报

声网

PoS 和 PoW 矿机系统区块链公链开发成本分析

区块链软件开发推广运营

dapp开发 链游开发 NFT开发 公链开发 代币开发

KaiwuDB 受邀亮相 2024 数博会

KaiwuDB

数博会 KaiwuDB

公开课 | 金九银十,测试开发面试秘籍大公开!

测试人

软件测试

AutoBots在ToB订单履约场景的落地应用

京东科技开发者

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