【问题标题】:iOS app & user authentication. oAuth?iOS 应用程序和用户身份验证。 o认证?
【发布时间】:2015-02-24 13:31:58
【问题描述】:

我正在创建我的第一个 iOS 应用程序,它本质上会调用我在 PHP / MySQL (Laravel) 中构建的 RESTful API,并向用户显示返回的数据。

首先,我需要创建一个系统供用户从 iOS 应用注册/登录。

我一直在阅读有关 oAuth 和 oAuth2 的信息,但有点困惑,因为我不确定它是否适用于我的情况。

我想要的是:

1) 用户在其 iOS 设备上打开应用程序

2) 并且应用程序调用我的 API 时需要登录,然后 API 会根据服务器上的 MySQL 数据库检查用户的凭据

我不想要的是:

1) 用户通过第 3 方应用程序(google、facebook、twitter 等)登录

2) 将用户从应用引导至必须提供凭据的网页,然后重新引导回应用。

oAuth 在这种情况下是否合适?我的印象是它仅用于通过 3rd 方服务验证用户。

编辑:一个例子可能是 ios 上的 ebay 应用程序。它有自己的用户数据库,并允许从应用程序登录和注册,而不是使用任何 3rd 方 API 来这样做

【问题讨论】:

    标签: php ios laravel oauth oauth-2.0


    【解决方案1】:

    我打算做同样的事情并解决同样的问题:使用 OAuth 或仅使用凭据登录。但我想我可以给你一些建议。

    据我了解,您认为 OAuth2 是使用 Facebook、Twitter 等登录的提供商。这是错误的。但 Facebook 和 Twitter 也使用 OAuth2。

    OAuth2 的用途是什么(非常非常基础!):

    如果您拥有像 Facebook 这样的(Web)服务,并且希望用户从第三方应用程序(如 9gag、soundcloud)登录,您可以使用 OAuth2 授予他们访问权限(而不让他们存储您的凭据)。它是如何工作的?用户被重定向到 Facebook 的 API。当他输入他的凭据时,他会被重定向回一个访问令牌。然后第三方应用程序就可以使用此令牌登录 facebook 以访问用户数据(例如朋友或发布内容)。

    但正如您已经解释过的,您的 iOS 应用是第一方应用(它来自同一个开发者:您!)。所以我认为您不需要构建 OAuth2 API。只需使用用户凭据登录即可。

    这不是专业的解释,它只是我迄今为止根据 ym 研究所理解的。不过希望对你有帮助^^

    【讨论】:

    • 谢谢,这确实解决了一些问题。不过我只是好奇:在我的情况下,oAuth 有位置吗?或者就登录和注册而言,只有当我有兴趣允许用户使用 Facebook、Gmail 等登录时,oAuth 才会有用吗?
    • 是的,但是你不会在你的 API 中构建 OAuth2。如果您想使用 Facebook/Gmail 等方式登录用户,请使用他们的 API。如果您想要第三方应用程序,请提供 OAuth2 API 登录到您的应用程序。但我看到有人回答了比我的菜鸟帖子更好的答案^^ 看看 Eugenios 的答案。
    【解决方案2】:

    OAuth(2) 是一种授权协议。它旨在将您的 API 访问权限授予其他应用。换句话说,我是 Eugenio 的超级应用程序 的开发人员,我想代表(普通)用户调用您的 API。

    在您的示例中,您的 iOS 应用是您 API 的唯一使用者。也许在未来你打算扩大这个。也许不是。

    无论如何,我建议将用户身份验证与 API 本身分开。您永远不知道您的用户群将如何发展。也许您打算将您的应用程序出售给消费者。即使您不想使用 FB、Twitter 等登录,用户也可能更愿意这样做。 (除非你和 eBay 一样大)。

    顺便说一句,使用 FB/Twitter 登录不再需要在外部导航到他们的网站。您可以简单地使用(非常方便的)本机应用程序。见here for an example

    或者,您可能正计划将此应用出售给企业用户。在这种情况下,他们肯定不想使用您的凭据登录,因为他们已经拥有自己的凭据(例如 AD、LDAP 等)

    保持该流程独立可以让您的 API 随着时间的推移而发展。谁知道呢,也许您的应用可以使用 TouchID 对用户进行身份验证。 Another example here.

    我建议在任何情况下都使用基于令牌的方法。您的 API 需要一个令牌。 JWT 是轻量级的,易于创建/验证和解析。

    这是对如何为 API 构建 JWT 的一个很好的总结:https://auth0.com/blog/2014/12/02/using-json-web-tokens-as-api-keys/

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      相关资源
      最近更新 更多