我正在创建一个移动应用程序,它需要在每个用户的基础上与 API 进行交互。作为第三方 API 的客户,我参与了多个项目,最初的想法是使用 OAuth。但是,我一直在考虑,并且我不打算向其他消费者公开开放 API - 唯一的消费者永远只是我的移动应用程序,所以考虑 OAuth 是否真的是最合适的?还是矫枉过正?
然后,我阅读了这篇文章,就 Google 的一个流程提供建议,其中针对这种情况建议了以下方法:
- 使用基于 Web 的普通登录表单在您的应用中嵌入 Web 视图
- 成功登录后,将安全 cookie 传递给具有安全令牌的移动应用程序
- 在未来的 API 请求中使用令牌
(假设遍布https等)
这似乎比任何 OAuth 实现都简单得多,并且可以很容易地使用 Spring Security Filter/authentication 链来完成(我的服务器端代码是 Java & Spring MVC/Secutiry 等)。谷歌推荐的方法似乎很有趣,在我看来这增加了解决方案的可信度。
假设使用上述解决方案,我还包括了一个移动应用程序密钥等(只是为了阻止任何移动设备点击表单/API),它似乎与 OAuth 存在相同的问题,因为我必须包含我嵌入的应用程序密钥移动代码(可以反编译等)。
我还阅读了这篇关于 Amazon 方法的文章(显然类似于 OAuth 1 实现),这似乎是对上述 google 提出的解决方案的合理扩展,而不是将令牌发送到服务器,而是将其用作哈希请求数据。
除了普通的基于 Web 的用户/密码安全性之外,我对在安全性方面实施任何东西都很陌生 - 因此,我希望了解何时将 OAuth 用于移动应用程序以及上述两种解决方案(亚马逊和谷歌)是否适合它们的目的被 OAuth 2 取代。