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

Integrating Auth0 authentication with existing user database

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

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

我缺少一份说明如何使用 Auth0 并且仍然能够在我的数据库中检查用户拥有的项目的文档。

我对它应该如何运作的想法(我可能是错的):

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

这是它应该的工作方式吗?

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

  1. 继续use your existing store
  2. 逐步 migrate your users from your custom store 到 Auth0 商店

您没有明确提及,但从您的预期流程来看,您似乎想要实施第一个选项。 您可以遵循特定的文档来解释如何设置自定义数据库连接,请参阅 Authenticate Users with Username and Password using a Custom Database。它提到 MySQL,但支持其他数据库服务器,并且有许多模板可让您快速设置。

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

  1. 使用 Auth0 身份验证库(锁定)或您的自定义 UI 您将要求用户提供其凭据
  2. Lock 或您的自定义 UI 将凭据提交给 Auth0 身份验证 API
  3. Auth0 身份验证 API 通过调用针对您的自定义数据库执行的脚本来验证凭据(这些脚本是您在配置数据库连接时提供的)
  4. 如果凭据有效,身份验证 API 将 return 向调用应用程序发送一个令牌,其中包含用户信息并证明用户是他所说的人。

您需要提供的脚本如下,但只有一个是必填的:

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

仅当您想通过 Auth0 库提供相关功能时才需要可选脚本,如果只需要登录即可工作,则可以跳过它们。在有效用户的情况下,登录脚本也是您 return 用户个人资料信息的地方,例如,理论上您可以在用户个人资料中包含他们拥有的项目。