使用 REST 的用户身份验证

Posted

技术标签:

【中文标题】使用 REST 的用户身份验证【英文标题】:User Authentication using REST 【发布时间】:2011-07-31 18:54:53 【问题描述】:

如果我的问题似乎是重复的,但我还没有找到答案,我深表歉意。

我正在使用 Spring 3.0 构建一个基于 REST 的应用程序,并计划最终部署到 Google App Engine。现在我的客户端可以是原生 android、iPhone 或基于 Web 的客户端。

我的用户需要使用存储在持久层内的服务器中的用户名和密码登录。现在说我的 Android 客户端打开应用程序并显示登录屏幕是用户。现在用户输入用户名和密码。

我知道这将是一个帖子,并说我的服务端点是注册。所以它会像

发布 /注册

现在我打算将用户名和密码放在 Json 或 XML 格式的消息正文中。我的问题是“这是正确的做法吗?”我打算使它成为 SSL 但我应该如何在 body 中真正发送这样的敏感信息。我计划在成功的身份验证时返回一个 OAUth 令牌,并使用它在未来的所有服务调用中验证用户。

提前致谢。

【问题讨论】:

【参考方案1】:

听起来你的想法是对的。 SSL 应确保您选择的任何发送方法都是安全的。

记住在存储密码之前对密码进行加盐 + 哈希处理: web cryptography - salted hash and other tasty dishes

【讨论】:

非常感谢您的回答。我是否需要担心任何其他安全威胁....【参考方案2】:

使用授权标头发送用户名和密码信息。这就是它的用途。

【讨论】:

非常感谢您的意见。 Authorization Header - 使用授权标头有什么好处? @SaKet 那是 HTTP 打算放置授权信息的地方。见tools.ietf.org/html/draft-ietf-httpbis-p7-auth-13

以上是关于使用 REST 的用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

检测用户首次使用 Django Rest Framework 进行身份验证

通过我的 REST API 和 Facebook 进行用户身份验证

使用 ServiceStack 使用 REST Web 服务时的用户身份验证

Jersey REST 服务上的用户身份验证

Grails REST 用户身份验证

与 Django Rest Framework 的非用户连接的自定义身份验证