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

时间:2017-03-08 22:25:32

标签: php react-native jwt auth0 react-native-ios

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

我的理解是如何运作的:

  1. 用户注册应用程序,服务器与auth0服务器通信,然后auth0服务器将JWT令牌返回给php服务器,将令牌保存到数据库,然后将令牌发送回客户端设备,然后存储它在设备上。
  2. 每当与服务器通信时,用户必须将JWT令牌作为标头发送。
  3. 每当用户注销时,该令牌都会被删除,并且在登录时,必须接收新的JWT。
  4. 用户可以使用与数据库中的内容匹配的凭据或使用Google或Facebook登录来登录。

    或者Auth0仅用于与Google等企业签约,还是我可以使用它登录我的应用程序,该应用程序还有数据库上的登录凭据?

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

    总之,我应该如何解决这个问题并且我上面解释的是正确的?

1 个答案:

答案 0 :(得分:2)

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

  1. 您的用户将选择众多identity providers supported by Auth0中的一个(例如Facebook,Twitter,LinkedIn,SAML,WS Federate等)。
  2. 您的本机应用将通过Auth0 API直接与react native lock进行通信。
  3. Auth0将与所选提供商进行交互,并将用户重定向到此提供商的授权页面(如果需要,则是用户首次登录)。
  4. Auth0将生成一个JWT并发送回您的本机应用程序。
  5. 您的react本机应用程序会在向您的终端发出请求时将此JWT发送到服务器(通常在Authorization HTTP标头上)。
  6. 您的PHP后端将检查此JWT是否真的有效。这可以通过Auth0 PHP SDK完成。
  7. 如果发送的JWT未被篡改(不定期更改),您的后端将接受它作为用户标识符并按照您的本机应用程序的预期响应请求。
  8. 正如您所看到的,您认为您将遵循的方法中的最大问题是登录过程不会通过您的后端服务器。它发生在您与Auth0和所选身份提供商进行通信的前端应用程序(本机反应)上。

    JWT是包含有关某个主题的信息(声明)的令牌。这些令牌可以由拥有密钥(public or private)的任何人验证。也就是说,使用此密钥,您可以验证令牌,并可以放心,它没有被不正确地更改。

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

    快乐学习。