【问题标题】:Using GET method in RESTful API where authentication is required在需要身份验证的 RESTful API 中使用 GET 方法
【发布时间】:2014-01-31 02:55:37
【问题描述】:

我正在构建一个尽可能遵循 RESTful 原则的 API。讨论中的请求是允许用户检查他/她在系统中可用的信用。在请求点,系统通过比较系统中已经提供的用户名和密码来验证用户。请注意,目前无法更改身份验证方法(更改为 OAuth 等)。

由于这是一个“读取”请求,因此使用了 GET 方法。所以,我会有以下内容:

GET http://mydomain.com/credit?username=XYZ&password=123

通过遵循 RESTful 原则并正确使用动词,我担心用户名和密码易于阅读/访问。在非 API 场景中,我只会使用带有 SSL 的普通表单 POST...

我承担上述风险有错吗?

【问题讨论】:

  • 在阅读了答案以及建议的文章和机制之后,我相信使用 SSL 将是最好的方法。重要的是要明白,在坚持 REST 原则的同时,我不应该把它极端化到教条化的地步。

标签: api http rest get


【解决方案1】:

您非常正确,在查询字符串中以纯文本形式公开用户名和密码是一个坏主意。比前三部星球大战电影还要糟糕。

如果通过 SSL 发出相同的请求(假设是受信任的证书),您应该没问题。

REST 还具有许多其他安全机制,例如 DOSETA 数字签名规范、JSON Web 签名和加密等。但你似乎暗示这些事情不是一种选择。

【讨论】:

  • 感谢您的确认。它确实让我在我们客户的应用程序中编码用户名和密码时起鸡皮疙瘩,尤其是当他们不精通时。事实上,我正在尝试解决当前的身份验证方法,看看是否可以实现上述建议的机制。 App ID 和 App Key 对实用吗?
  • REST 没有指定任何类型的安全机制。但是,HTTP 确实允许您在 authorization 标头中指定授权信息。
【解决方案2】:

Http Authentication 标头旨在存储用户名和密码等信息。你应该使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 2015-04-23
    • 2016-02-19
    • 2013-08-21
    • 2014-03-17
    • 1970-01-01
    • 2022-07-05
    • 2011-10-02
    相关资源
    最近更新 更多