将Auth0身份验证与现有用户数据库

时间:2016-10-18 07:51:48

标签: javascript mysql reactjs auth0

我需要在我们的项目中集成Auth0(Reactjs / Hapijs / MySQL)。我检查了文档,他们有很多例子,这很好,但是,我找不到任何与我如何使用现有用户数据库相关的信息。

在我的应用程序中,我有用户,这些用户可以拥有一个或多个项目。通过我们当前使用的授权,用户登录,我检查他拥有哪些项目并将其发送到React应用程序。

我错过了一个文档,它解释了我如何使用Auth0,并且仍然能够在我的数据库中检查用户拥有的项目。

我对这应该如何运作的看法(我可能错了):

  1. 用户向我们的服务器发送用户名和密码
  2. 我们的服务器向Auth0发出请求(提供凭据)
  3. Auth0使用一些令牌
  4. 回复我们的服务器
  5. 我们查看数据库中的users表并尝试验证该用户是否存在
  6. 如果匹配,那么我们只需查看(就像我们已经做的那样)用户项目。
  7. 它应该如何运作?

1 个答案:

答案 0 :(得分:4)

对于要将Auth0与已有用户数据库的应用程序集成的方案,有几个选项可用。你可以:

  1. 继续use your existing store
  2. 逐步migrate your users from your custom store到Auth0商店
  3. 你没有明确提到它,但从你预期的流量判断,你似乎想要实现第一个选项。 您可以按照特定文档说明如何设置自定义数据库连接,请参阅Authenticate Users with Username and Password using a Custom Database 。它提到了MySQL,但是支持其他数据库服务器,并且有许多模板可以让你快速设置。

    完成此操作后,最终的流程如下:

    1. 使用Auth0身份验证库(锁定)或自定义用户界面,您将要求用户提供凭据
    2. Lock或您的自定义UI将凭据提交给Auth0身份验证API
    3. Auth0身份验证API通过调用针对您的自定义数据库执行的脚本来验证凭据(这些脚本是您在配置数据库连接时提供的)
    4. 如果凭据有效,则身份验证API会将一个令牌返回给具有用户信息的调用应用程序,并证明用户是他所说的人。
    5. 您需要提供的脚本如下,但只有一个是必需的:

      • 登录脚本(每次用户尝试登录时执行)(强制
      • 创建用户脚本
      • 验证电子邮件脚本
      • 更改密码脚本
      • 删除用户脚本

      只有当您想通过Auth0库提供相关功能时才需要可选脚本,如果只需要登录工作,那么您可以跳过它们。对于有效用户,登录脚本也是您返回用户的配置文件信息的位置,例如,理论上您可以在用户配置文件中包含其拥有的项目。