与 php 服务器通信的 react-native-ios 的 auth0 身份验证

auth0 authentication for react-native-ios that communicates with php server

我正在创建一个 react-native-ios 应用程序,它与托管在 azure 上的 php 网络应用程序进行通信。

我的理解是:

  1. 用户注册应用程序,服务器与 auth0 服务器通信,然后 returns 一个 JWT 令牌到 php 服务器,将令牌保存到数据库,然后将令牌发回到 client-device 然后存储在设备上。
  2. 每当与服务器通信时,用户必须将 JWT 令牌作为 header 发送。
  3. 每当用户注销时,令牌都会被删除,并且在登录时,必须接收新的 JWT。

用户可以使用与数据库中的内容匹配的凭据或 sign-in 使用 Google 或 facebook 登录。

或者 Auth0 仅适用于 signing-in 与 Google 等企业,还是我可以使用它来登录我的应用程序,该应用程序在数据库中也有登录凭据?

我找到了 npm react-native-lock-ios 但它并不像我上面描述的那样工作。

总而言之,我应该怎么做,我上面解释的是否正确?

这里的主要问题是您不了解如何使用 JWT。我建议您深入了解 how this technology works and how Auth0 can help you。但是,总而言之,这是您必须瞄准的身份验证工作流程:

  1. 您的用户将选择众多 identity providers supported by Auth0(例如 Facebook、Twitter、LinkedIn、SAML、WS Federate 等)之一。
  2. 您的 React 本机应用程序将直接与 Auth0 API through the react native lock 通信。
  3. Auth0 将与所选提供程序交互并将用户重定向到该提供程序中的授权页面(如果需要并且这是用户首次登录)。
  4. Auth0 将生成一个 JWT 并发送回您的 React Native 应用程序。
  5. 当向您的端点发出请求时,您的 React 本机应用程序会将此 JWT 发送到服务器(通常在 Authorization HTTP header 上)。
  6. 您的 PHP 后端将检查此 JWT 是否真的有效。这可以通过 Auth0 PHP SDK.
  7. 来完成
  8. 如果发送的 JWT 没有被篡改(不定期更改),您的后端将接受它作为用户标识符,并按照您的 React Native 应用程序的预期响应请求。

正如您所看到的,您认为您会遵循的方法中最大的问题是登录过程不通过您的后端服务器。它发生在您的 front-end 应用程序(本机反应)与 Auth0 和所选身份提供者通信时。

JWT 是保存有关主题的信息(声明)的令牌。拥有密钥 (public or private) 的任何人都可以验证这些令牌。也就是说,有了这个密钥,您就可以验证令牌,并且可以放心它没有被不当更改。

此外,要回答有关在您的数据库上使用 Auth0 和凭据的问题,您可以打赌您可以使用它。 Auth0 提供了与您自己的数据库集成以检查用户是否存在的方法。这叫做 customer user store.

学习愉快