我应该将哪个OAuth流用于我的原生应用?

时间:2017-10-08 08:01:19

标签: android authentication react-native oauth

我正在使用React Native开发一个应用程序,我找不到任何教程来根据我自己的服务验证我的用户(我认为这称为第一方应用程序)。用户需要能够使用用户/密码以及他们的Facebook帐户进行身份验证。

我一直在研究它并发现我应该使用授权代码授权流程,它应该以这种方式工作:

  1. 使用应用的客户端ID,重定向网址和状态参数创建登录链接
  2. 用户看到授权提示并批准请求
  3. 用户使用身份验证码
  4. 将用户重定向回应用服务器
  5. 应用程序交换访问令牌的身份验证码
  6. 据我所知,我的所有重定向链接都应以 myapp:// uri 开头,在本机浏览器中打开它。但我真的不需要第二步,或者我呢?为什么我要求用户获得同一服务的权限?

    我还不明白的另一件事是,要为访问令牌交换auth代码,我需要传递我的客户端ID和客户端密钥。但我已经读过,我不必在本机应用程序中存储客户端机密,因为它可能会受到损害。

2 个答案:

答案 0 :(得分:0)

你是如何发起反应原生应用的?通过template<int nDim> void foo () { Eigen::Matrix<double, nDim, nDim> bar; bar = generate_a_special_Matrix<nDim>(); // ... further math here } create-react-native-appExpo XDE?如果前两个选项中的任何一个,Facebook Auth变得非常直接。这是Expo's Facebook Auth Docs的链接。这是一个复制/粘贴示例,看起来像......

react-native init

这将(默认情况下)尝试通过&#39; web&#39;进行身份验证,这意味着它会尝试通过模式UIWebView弹出登录。还有其他方法,但它们仅对独立应用程序有效(请参阅行为选项)。

我知道您说您想使用自己的服务进行身份验证,但我认为至少可以通过Auth0 React Native SDK Tutorial来了解如何保护客户端ID和机密信息对您有用。以及如何了解良好的auth流程是什么样的。然后决定是否将自己重建为自己的服务或是否使用他们的服务。

答案 1 :(得分:0)

OAuth 2.0不是身份验证协议,而是授权协议。这就是您遇到第2步问题的原因。This可能会让您感兴趣。

对于你的流程,我认为你有两个选择。

  1. 隐含流动,没有客户秘密。 (这将是我的第一选择)
  2. 使用授权码授予流程,不关心秘密。如果redirecturl正确,请确保检查服务器。