1

我通过检查 Authorization 标头中的令牌来授权所有 REST API 请求:

POST /rest/resource HTTP/1.1
Host: domain.com
Authorization: Bearer AbCdEf123456

令牌是纯文本,使用 HTTPS。但是,令牌在数据库中被加盐和散列。

我如何验证请求?

  • 还将用户 ID 发送到服务器,从数据库中为该用户选择令牌哈希,检查令牌是否正确(发送用户 ID 的问题 - 放置位置)
  • 检查数据库中的某些哈希是否对应于从用户收到的令牌(性能问题)

必须有一些优雅的方式,因为例如对于谷歌地图,“API 密钥”(令牌)就足够了。

4

1 回答 1

0

使用 JWT(JSON Web Token)作为授权承载。JWT 可以在有效负载中包含用户 ID。您还可以轻松验证 JWT 是否由受信任方(可能是您)发布。好处是您可以在不读取数据库值的情况下验证 JWT。它是完全无国籍的。

这是 JWT 如何工作的简单解释:http: //www.intridea.com/blog/2013/11/7/json-web-token-the-useful-little-standard-you-haven-t-heard-about

您可以找到几乎任何语言的 JWT 库(只需 google 即可)

于 2014-10-15T21:44:59.957 回答