写点什么

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

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

关注

评论

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

SpringBoot 中操作 Redis 及工具类的封装

Java redis spring Spring Boot

统一门户为什么能让企业数字化高效办公?

BeeWorks

2023全栈开发人员职业路线图

码语者

全栈开发

共创,共建,共赢,共荣!国云向新,翼起创未来!

天翼云开发者社区

玩转云端| 解密!业内首款存储资源盘活系统如何炼成?

天翼云开发者社区

SpringBoot集成ElasticSearch

Java elasticsearch Spring Boot

如何计算真实的数据库成本

天翼云开发者社区

IP 地址是如何被创建和管理的?

海拥(haiyong.site)

三周年连更

安全第一,私有化部署IM让组织沟通更放心

BeeWorks

加快推进数智化转型,引领盐行业高质量发展

用友BIP

PostgreSQL JDBC 开发指导

攻城狮

postgresql JDBC 驱动程序

什么是人工智能领域模型的 temperature 参数?

汪子熙

人工智能 机器学习 深度学习 三周年连更

数智化转型再加速,低代码开发助力企业转型

加入高科技仿生人

低代码 数智化 数字转型 数智转型

Tapdata 的 ∞ 实践:中小企业如何轻量、高效地搭建起一个灵活易用的数字化平台

tapdata

数据库

iOS MachineLearning 系列(11)—— 自然语言之词句相似性分析

珲少

面对“失业焦虑”我们可以做些什么| 社区征文

峥岳

三周年征文

九科信息参加长三角智慧港口论坛,分享港口企业超级自动化实践

九科Ninetech

IPP SWAP孵化器LP算力系统开发技术

薇電13242772558

区块链

聊点技术 | 全新功能,让Bonree ONE变得更强

博睿数据

可观测性 智能运维 博睿数据 Bonree ONE ONE有引力

顶象uni-app版设备指纹上线,满足企业多平台服务需求

极客天地

SQL 解析在 CloudQuery 中的应用

BinTools图尔兹

数据库 SQL解析

聚能量赢未来,OpenHarmony开发者大会开发工具分论坛圆满落幕

最新动态

CNBPA 新成员展示 | 启明信息技术股份有限公司

云原生技术社区

云原生 云原生技术实践联盟 CNBPA

喜讯!天翼云斩获NLP国际顶会比赛两项荣誉

天翼云开发者社区

ChatGPT+私有数据=智能知识库+个性化AI

BeeWorks

大企业必读!五大纳税申报难题解析

用友BIP

看华为云Serverless 4大特性如何让软件架构更丝滑

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

数据库中的 Schema 变更实现

KaiwuDB

线上直播 KaiwuDB Schema 锁表

Kubernetes Gateway API 深入解读和落地指南

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业号 5 月 PK 榜 Gateway API

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