Auth0 数据库和社交联系,唯一的电子邮件地址

标签 auth0

也许我在这里遗漏了一些东西,或者这是 Auth0 中的一个缺陷?我将举例说明我的问题:

假设我有我的 Default App ( 客户端 ),连接到我有 Username-Password-Authentication ( 数据库连接 ) 和 google-oauth2 ( 社交关系 )。

一位用户来到我的网站,通过 google-oauth2 注册( 社交联系 ) 使用 joe@gmail.com .完成后,他会在 Auth0 中添加到我的用户中,一切都很棒。

几个月后,Joe 回到我的网站,作为一个忙碌的人,他忘记了他以前注册过我的网站。这一次,他决定使用我的自定义电子邮件和密码表单进行注册,这会将用户添加到 Username-Password-Authentication。 ( 数据库连接 )。所以他在那里注册使用 joe@gmail.com 再次,一切顺利,他现在列在我的 Auth0 仪表板的用户部分中。

这就是问题所在,我现在有两个 joe@gmail.com 帐户,与 google-outh2 之一和一个 Username-Password-Authentication .我真的不能拥有这个,我需要一个唯一的电子邮件地址,无论 ID Auth0 提供什么。

有谁知道如何使我的用户部分中的电子邮件地址 100% 唯一?我认为规则可以做到这一点,但似乎规则仅在用户注册后才适用,所以我不能在添加之前运行规则?

我现在可以看到这样做的唯一方法是通过管理 API 进行我自己的检查和删除,但我觉得这是一种非常漫长而困惑的方法。

任何帮助将不胜感激!

谢谢!

最佳答案

Auth0 的默认行为是在数据库中为每个唯一条目创建一个新帐户。由于使用 Google 创建的用户具有唯一 ID(基于 google-oauth2),而使用注册表单创建的用户具有唯一 ID - 从技术上讲,它们将被视为两个单独的帐户。为了解决这种差异,您可以建立一种可以合并帐户数据的方法。在上面提供的链接文档中,有执行此操作的三种可能方法的示例:

  • Automatic Linking - 这涉及创建一个特定的 rule根据匹配的电子邮件合并用户
  • User-Initiated Linking - 这涉及为用户提供 UI 以选择合并用户与匹配的电子邮件
  • Suggested Account Linking - 这涉及设置链接到 UI
  • 的规则

    需要考虑的一件重要事情是,从不同社交身份提供者返回的数据可能不会像数据标准化到 Username-Password-Database 那样标准化。 .例如,虽然 auth0 对电子邮件的默认设置是小写信息,但 google-oauth2可能会以大写形式返回电子邮件 - 当使用严格相等进行检查时,可能会产生不匹配的电子邮件

    关于Auth0 数据库和社交联系,唯一的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391300/

    相关文章:

    python - 未经授权的客户端 : Grant type 'authorization_code' not allowed for the client. Django -auth0 -login

    angular - 使用 Auth0 在 JWT 中包含 user_metadata 和 app_metadata

    rule - 如何调用 Management API v2 从规则内发送验证邮件?

    使用自定义 token 的 Firebase 身份验证给出 null uid

    amazon-web-services - 如何将 AWS SSO 设置为 Auth0 Enterprise SAML 连接

    angular - 找不到模块 "@auth0/angular-jwt/"

    angular - auth0 授权 api 调用返回 200 状态但仍然得到错误响应

    auth0 - 在 Auth0 中使用 'localhost' 作为回调 URL 是否不安全?

    authentication - KeyCloak 应该用作我的用户的身份验证服务器吗?

    auth0 - oidc-client-js 针对 Auth0 的 SignoutRedirect 返回无结束 session 端点