Url包含身份验证机密和应用ID

时间:2012-08-26 15:41:46

标签: rest uri

我们收到了创建REST api的请求。在我们的客户提供的例子中,我有点困惑。如下所示,他们在@之前的URL中识别了app_id和secret。 URI的其余部分看起来就像我期望的那样。

这有效吗?我想也许这是我之前从未见过的一些奇怪的cURL格式。

https://{application_id}:{api_secret}@api.example.com/entity/{entity_id}/ 
https://{application_id}:{api_secret}@api.example.com/entity/{entity_id}/entity_locations/{locations_id}/

看看有没有人以前见过这种格式?

1 个答案:

答案 0 :(得分:1)

URI由various parts组成,其中一个是权限部分,可以使用可选的username:password元素。

完整的方案是:

scheme://username:password@domain:port/path?query_string#fragment_id

这样你的REST api仍然是无状态 [不依赖于先前的应用状态,比如在会话中存储内容]。但我建议你不要明确地使用username:password@stuff路由,而是要依赖Basic HTTP Auth,因此至少会在Base64中对编码进行编码。


编辑:关于BasicAuth的简短说明现在你问 - 事情是这样的:

  • 您向http://johndoe:12345@service/api/foo/bar;
  • 提出请求
  • 凭据好吗?好的,你得到了200 OK回复,并且身体正确;
  • 他们不是吗?您收到401 Unauthorized回复。

在后一种情况下,浏览器 [或执行请求的任何其他程序/脚本]应该提示用户使用登录弹出窗口。

通常浏览器要求您缓存凭据,不要每次都询问它们,但这并不意味着它们不会被发送 - 只是每个对受保护资源的请求都有这样的标题:

Authorization Basic base64encode(username:password)

base64encode是您对username:password字符串进行编码的自定义方式。