在HTTP基础

时间:2016-11-08 00:17:30

标签: authentication http-headers socrata soda

我正在尝试使用授权的应用编写脚本来更新各种数据集的元数据。使用OAuth似乎是错误的方法(它不是一个面向Web的应用程序供其他用户自己使用),并且传递我自己的用户名和密码似乎...... icky。

SODA API authentication documentation令人困惑:

  

所有经HTTP身份验证的请求必须通过安全(https)连接执行,并且应包含应用程序令牌,该令牌是在注册应用程序时获得的。但是,在对请求进行身份验证时,并不严格要求身份验证[sic,应该是“application”?]令牌。通过不安全连接进行的身份验证请求将被拒绝。

     

以下是使用HTTP基本身份验证的示例HTTP会话:

POST /resource/4tka-6guv.json HTTP/1.1
Host: soda.demo.socrata.com
Accept: */*
Authorization: Basic [REDACTED]
Content-Length: 253
Content-Type: application/json
X-App-Token: [REDACTED]

所以:

  1. 您甚至可以使用app token + secret token通过HTTP basic进行身份验证吗?
  2. 两个“[删除]”中的哪一个是应用令牌,哪个是秘密令牌?
  3. 我的猜测(基于一些测试)是答案是:

    1. 没有
    2. 第一个“[删除]”是用户名+密码的Base64版本,第二个是应用程序令牌,与身份验证无关。

1 个答案:

答案 0 :(得分:0)

应用程序令牌和秘密令牌实际上并不与任何类型的预先烘焙用户身份验证相关联。它们与您的应用程序绑定,然后在OAuth中使用,以确保您的应用程序符合用户通过OAuth工作流程时声称的内容。用户进行身份验证后,应用程序可以检索用于实际验证其请求的身份验证令牌。

您真正想要的是一种检索"持票人令牌的方法,一些API提供商允许您生成。这将允许您基本上" pre-OAuth"并获得身份验证令牌,而无需完成整个工作流程。不幸的是,我们还不是其中之一(还),因此您需要使用普通的旧版HTTP Basic以及您的用户名和密码进行身份验证。

如果你想要一种稍微不那么狡猾的方式,我建议注册一个" bot"您仅授予必要数据集所需权限的帐户。然后,至少您不会将常规用户凭据烘焙到您的配置中。但请记住,即使我们有持有人令牌,您也可以将其放入您的配置中。

回答更具体的问题:

  1. 不,因为其中一个必须是持有人令牌,而他们不是。
  2. Authorization标头是Base64编码的username:password,而X-App-Token是您的应用令牌。在这种情况下,后者只是一个额外的标题,可以将该请求标识为来自您的应用程序。
  3. 感谢您对文档的反馈 - 我会对其进行清理并尝试更加直截了当,并且我绝对会解决这个问题。