Firebase 身份验证 : How can I pre-create Auth Users for signin with the microsoft provider?

标签 firebase firebase-authentication

我想将角色分配给事先已知的用户,以便他们在注册时拥有适当的权限。我认为我可以通过管理 API 预先创建身份验证用户,而无需链接提供商,并且如果用户存在,他们将在登录时自动链接,因为电子邮件匹配。

这不起作用,要么 Firebase 使用相同的电子邮件地址和另一个 UID 创建另一个用户,要么提示提供程序已链接,即使没有提供程序。

我已经考虑过实现一个自定义 token 来转换 Active Directory 登录 token 和新生成的 Firebase 用户以匹配现有用户。

我在 firestore 中有用户的 claim 数据。如果可能的话,我希望保留用户 ID,这使得仅更新新身份验证对象上的声明变得困难。

最佳答案

Firebase Auth 将根据 匹配通过 Microsoft 登录您的应用程序的用户的 objectId 属性(例如 8066569b-7203-4894-8552-4be01e28d2a2)附加到 Firebase Auth 用户的 providerData 中的 microsoft.com 提供商的 uid 值。只要您在首次登录之前知道 Microsoft 用户的 objectId,您就可以通过 Admin SDK 分两步创建 Firebase Auth 帐户(Node JS 示例):

  1. (尝试)创建用户 - 如果您想阻止这种情况,可能会处理用户已使用其 Microsoft 帐户或与其 Microsoft 帐户共享相同电子邮件地址的其他提供商在您的应用程序中创建帐户的情况。
const user = await admin.auth().createUser({ email: userName }).catch(() => {/* TODO */})
  • 链接 microsoft.com 提供商,传入 objectId 作为“microsoft.com”提供商ToLink 的 uid,并添加其余用户信息
  • let updatedUser = await admin.auth().updateUser(user.uid, {
        displayName,
        emailVerified: true,
        disabled: active === false,
        providerToLink: {
            providerId: 'microsoft.com',
            displayName,
            email: userName,
            uid: externalId // e.g. 8066569b-7203-4894-8552-4be01e28d2a2
        }
    })
    

    此设置可用于创建 POST/Users SCIM 端点,该端点支持从 Azure AD 配置到 firebase Auth。创建新的企业应用程序后,只需确保在用户配置配置内的属性映射配置中,objectId 属性映射到您的端点将收到的内容,例如上面使用了 externalId

    关于Firebase 身份验证 : How can I pre-create Auth Users for signin with the microsoft provider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69925604/

    相关文章:

    security - Firebase 数据库安全规则

    javascript - Firebase 函数 onCreate() onDelete() 路径特异性

    ios - Firebase 深层链接 Web URL 查询为空 - iOS

    javascript - 如何使用 Firestore 在 Cloud Functions for Firebase 中获取服务器时间戳?

    ios - 使用自定义后端进行 Firebase 身份验证

    android - Firebase 身份验证 android.view.View$OnClickListener 错误消息

    android - 如何在没有 Gradle 的情况下在 Eclipse 中的 Android 项目上启用 multidex

    javascript - 注销后出现缺少或权限不足的错误

    javascript - 尝试使用 firebase 支持的 Web 登录页面登录,然后重定向到主页

    javascript - 无法链接另一个身份验证方法 - firebase auth