Firebase Auth:如何预先创建身份验证用户以通过 Microsoft 提供商登录?

2024-04-05

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

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

我已经考虑过实现一个自定义令牌来转换活动目录登录令牌和新生成的 firebase 用户以匹配现有用户。

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


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

  1. (尝试)创建用户 - 如果您想防止这种情况,可能会处理用户已经使用其 Microsoft 帐户或与其 Microsoft 帐户共享相同电子邮件地址的其他提供商在您的应用程序中创建帐户的情况。
const user = await admin.auth().createUser({ email: userName }).catch(() => {/* TODO */})
  1. 链接 microsoft.com 提供程序,传入 objectId 作为“microsoft.com”providerToLink 的 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上面使用了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase Auth:如何预先创建身份验证用户以通过 Microsoft 提供商登录? 的相关文章

随机推荐