我已经找到了很多关于这个问题的学术答案,但我想从该领域的从业者那里得到一个答案。
背景
我想创建一个基于 Java 的 RESTful API,使用 Grails 框架为各种移动客户端(iOS 和 Android)通过我的服务访问受保护的资源。我需要对某些请求进行身份验证,并且我已经通过网络设置了 SSL(因此所有请求都通过 https 进行)。我的 Web API 最终将作为服务公开给其他 Web 应用程序。
问题
对于将由移动设备以及最终其他 Web 应用程序使用的 Web 服务,人们推荐哪种身份验证方法?
这些是我认为我的选择。你能告诉我什么时候适合每个用例吗?
- 我可以进行 HTTP 基本身份验证
- 我可以做 HTTP Digest 认证
- 我可以实现 OAuth 身份验证(1.0 或 2.0)吗?
- 我可以在我的请求中将凭据作为参数传递
- 我可以使用上面的身份验证方法,然后传递一个委托/令牌进行身份验证
- 我可以实现自己的自定义 HTTP 身份验证标头
- 我可以使用 cookie 并在每个请求上将它们传递给服务器
- 其他...?
需要
如果你有一种或另一种倾向,我想知道你为什么会选择那种方法。更好的是,如果您在 Grails 中执行此操作,我会非常感兴趣。
我已经知道...
我已经阅读了这里的优秀答案以及 Richardson 和 Ruby 的书Restful Web Services。