3

我正在创建一个 Web 服务以向我的移动应用程序公开。我目前正在实施基于令牌的身份验证解决方案(因为我过去所做的);但是,我在这种情况下很难理解为什么我不只是每次都简单地传递用户名和密码?我可以在运行移动应用程序时将密码保存在 RAM 中(如果我们想变得过于复杂,则在两次使用之间进行加密),然后在每次连接到服务器时传递它并每次都重复哈希验证。当然,一切都是 SSL,所以在网络传输方面,每次都做而不是一次做就没有更多的风险?我看到的唯一缺点是哈希验证过程可能比令牌验证更昂贵 - 也许。我在这里还缺少其他缺点吗?

4

1 回答 1

2

不这样做有几个原因:

  1. 每次传输信息时,都会面临被拦截的风险。(即使通过使用诸如 SSL 之类的加密系统可以大大减轻这种风险)。
  2. 在每个请求上传递用户名/密码组合意味着您将在每个请求的服务器端检查它们的组合。这通常需要额外的数据库命中和一些不必要的逻辑。
  3. 如果您在每个请求上都传递这样的证书,您将需要为每个请求使用 SSL - 这是昂贵的开销。以纯文本来回发送加密的身份验证令牌要便宜得多 - 只有服务器端可以读取。

这似乎是最近几天在 SO 上的一个热门话题,因为我已经回答了几个关于 RESTful auth 等的问题。我在下面提供了一些指向这些答案的链接——这些链接更深入。也许如果您看一下我提出的身份验证方案 - 您会看到它如何保护您,而不仅仅是在每个请求上发送用户名/密码。

RESTful Web 服务中的身份验证

面向公众的 REST 身份验证机制

于 2012-11-02T16:51:40.437 回答