gpt4 book ai didi

android - 使用 oAuth 的 RESTful Web 服务用于移动应用程序

转载 作者:太空狗 更新时间:2023-10-29 13:30:58 25 4
gpt4 key购买 nike

我正在构建一个由两个主要部分组成的应用程序:

  1. 带有 rest API 的 Web 应用程序。
  2. 移动应用程序(安卓、iPhone)。

Web 应用程序有一个数据库,用于存储有关用户的数据(如帖子、事件等)。
移动应用程序使用 Web 应用程序的 REST api 来访问该数据,但为此我需要某种身份验证(用户必须对自己进行身份验证才能访问/修改他的数据)。

我知道这可以通过以下方式轻松完成:移动应用程序在每个对 Web API 的请求中提供用户名和密码,并且 Web 应用程序在处理请求之前根据数据库验证该用户名和密码。
但是,我想使用 oAuth(以便用户可以使用 Google、Facebook 等登录),这就是事情变得复杂的地方,我不确定什么是最好的方法。

我的第一个想法:移动应用程序将 oAuth 提供商(例如 Facebook)凭据(用户名和密码)发送到 Web 应用程序,然后 Web 应用程序根据 oAuth 提供商对其进行身份验证。我很快意识到这是不对的,因为这意味着用户必须相信您的网站不会滥用给定的凭据,所以这不是完成的方式。 不好

我的第二个想法:移动应用程序使用网络应用程序 api 告诉网络应用程序它想要针对 oAuth 提供商 P 进行身份验证。网络应用程序重定向到用户输入其凭据的提供商 P。然后,提供商 P 重定向回用户登录的 Web 应用程序,并将有关成功登录的 JSON 发送到移动应用程序。如果不是用户必须手动输入其凭据的部分,这会很棒。我实现了这个解决方案,问题是,在移动应用程序访问 Web 应用程序 API 后,JSON 不会立即返回,但首先会完成重定向,这会把一切搞砸。我正在考虑在移动应用程序中使用 webView,但我不知道在发送 JSON 时如何从 webView 返回。我不确定我是否应该进一步追求这个想法,或者这是错误的做法? 如果解决了一些问题可能会很好

我的第三个想法:移动应用程序直接针对 oAuth 提供者 P 进行身份验证。如果验证成功,则移动应用程序会向包含用户信息(例如用户 ID 或用户密码)的网络应用程序发送请求,因此网络应用程序知道它是哪个用户。然而,这意味着网络应用程序必须信任给定用户真正经过身份验证的移动应用程序。这意味着网络应用程序需要确保从移动应用程序访问 api。我可以通过在移动应用程序中硬编码一个特殊密码( secret )来做到这一点,该密码随每个请求一起发送,以证明该请求是由移动应用程序发送的。
这种方法不好的一面是,我必须针对(移动操作系统、oAuth 提供商)的每个组合针对 oAuth 提供商实现移动应用程序身份验证。我也不确定它有多安全。你认为这是一个好方法吗,我可以改进/改变什么?我有一种感觉,我错过了什么。 这可能很好,但需要做很多工作

请告诉我什么想法是最好的,如果有任何改进的方法,谢谢

最佳答案

在进一步研究并与我的一些同事交谈后,我决定最好的选择是第二个想法。我决定使用 WebView(在 iPhone 和 Android 上都存在)处理重定向。 WebView 我将配置为当用户被重定向回返回 JSON 的 Web 应用程序上的特定 URL 时自动退出。
我认为这是最好的主意,因为这样我只需要在移动应用程序上实现/配置 WebView,而所有 oAuth 逻辑都在 Web 应用程序上完成,这意味着移动应用程序(android、iPhone)之间的代码重复更少,而且更多可扩展(我必须修改一个网络应用程序,而不是 2 或 3 个移动应用程序)。

关于android - 使用 oAuth 的 RESTful Web 服务用于移动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com