API介绍4:认证(1)

第四章:认证(1)

随着对API的理解,我们已经学到了一些东西。我们知道什么是客户端和服务器,知道它们使用HTTP进行交谈,知道它们使用特定的数据格式交谈以理解彼此的话。虽然我们知道它们如何交谈,但是还有一个非常重要的问题:服务器如何知道客户端就是它所宣称的那个呢?本章,我们浏览客户端向服务器证明自己身份的两种方式。

虚拟世界的身份

以前你可能已经在网站上注册过帐号。在这个过程中,网站会询问你一些私人信息,尤其是用户名和密码。这两部分信息成为你的身份标志。我们称之为凭证。当你再次访问这个网站的时候,你可以通过提供这些凭证来登录。

使用用户名和密码来登录是身份认证这一技术过程的例子。当你和服务器进行认证的时候,你通过向服务器提供只有你自己知道(起码我们希望只有你知道)的信息来证明自己的身份。一旦服务器知道你是谁,它会信任你,并且向你暴露账户的隐私数据。

API使用多种方式对客户端进行认证。这些方式称为认证方案。现在我们来看两种方案。

基础认证

上面的登录的例子就是最基础的认证方式。实际上,它的正式名称就是基础认证。虽然这个名字毫无新意,但是这个方案在API对客户端进行认证的时候是完全可以接受的。

基础认证只要求提供用户名和密码。客户端使用这两个凭证,组合成一个值,放置在HTTP的Authorization首部中和请求一起发送到服务器。


图 1. HTTP Authorization首部

服务器收到请求后,查看Authorization首部,和自己存储的凭证进行比较。如果用户名和密码可以和服务器上的用户列表中的某一个匹配,服务器把它当成那个用户,完成请求。如果没有匹配的用户,服务器返回一个特定的状态码(401),告诉客户端认证失败,请求被拒绝。

虽然基础认证是一个有效的认证方案,但是它使用相同的用户名、密码来使用API和管理账户,这不是理想的方案。这相当于一个旅馆给了客人一把整栋建筑的钥匙而不是某个房间的钥匙。

和API类似,有些时候客户端的许可应该和账户所有者不同。比如,一个企业主雇佣了一个承包商,让他写一个使用收益API的程序。如果所有者轻易相信承包商的凭证就会有风险,因为不道德的承包商可能会修改密码,使得企业主不能使用自己的账户。很显然,如果能有一个替代方案就好了。

API密钥认证

API密钥认证技术可以克服共享凭证的缺陷,它要求使用唯一的密钥来访问API。本方案中,密钥通常是一长串的字母和数字,和账户所有者的登录密码是不同的。所有者将密钥给予客户端,类似于旅馆将一个房间的钥匙给予客人。

当客户端使用API密钥认证时,服务器知道应该允许客户端访问数据,但是现在可以有选择的限制管理功能,比如修改密码或者删除账户。有时候,密钥使用起来如此简单,用户都不需要给出密码。API密钥认证的灵活性就是,既可以限制控制权限,又可以保护用户的密码。

那么,API密钥在哪儿呢?也有一个专门的首部,是吗?很不幸,没有。和基础认证不同,API密钥认证不是一个由严格的规则构建的标准,它来自于web早期几个公司的构想。结果就是,API认证有点类似蛮荒的西部,不同的人有不同的实现方式。

随着时间的流逝,出现了一些常见的方案。其中之一是让客户端将密钥放在Authorization首部中,取代用户名和密码的位置。另一个是将密钥加到URL中(http://example.com?api_key=my_secret_key )。不太常见的方法是将密钥放到请求主体中紧挨着数据。不管放在哪里,效果是一样的——它允许服务器对客户端进行认证。

译自

Chapter 4: Authentication, Part 1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,333评论 6 152
  • 伤心了 难过了 落魄了 委屈了 生病了 无助了 厌倦了 盼着盼着哭了 跑着跑着累了 看着看着困了 睡着睡着怕了 写...
    谭玖玖丶阅读 248评论 0 3
  • 罗胖有一个非常漂亮的女性朋友,从事销售工作,销售的不是牙膏之类的小件日用品,而是那种做成一笔就够吃一年的大单...
    荟生活ENJOYLIFE阅读 667评论 0 0
  • 未央的银杏叶 是半绿带黄的。 xig总喜欢 小心翼翼的抬拾起 想怕扰碎了它的梦一样 然后眼睛眯成一条线 笑着对我说...
    路上的姗姗来迟阅读 141评论 0 0