Firebase Auth 使用 OIDC 保存没有标识符的用户

问题描述 投票:0回答:1

我目前可以通过 Firebase Auth 和 OIDC 提供商(从现在开始为 OP)注册新用户。这意味着用户会看到登录弹出窗口,成功登录后,Firebase 身份验证中会出现一个新用户。

但是,新用户缺少标识符(我希望是电子邮件地址):

enter image description here

当使用

email
范围时,OP 提供
email
email_verified
声明作为用户信息响应的一部分,但我猜测 Firebase 正在尝试以不同的方式读取电子邮件地址。

有没有办法知道 Firebase 使用/期望读取哪些字段/范围,以便使用 OIDC 将电子邮件设置为新用户的标识符?这样:

  • 我可以要求 OP 相应地更新其配置/响应,并允许 Firebase 将电子邮件地址存储为标识符。
  • 或者更新一些配置客户端,告诉 Firebase 使用 userinfo 端点使用可用的声明。
firebase firebase-authentication openid-connect
1个回答
0
投票

我联系了 Firebase 支持人员,他们澄清 Firebase 需要这些声明:

  • 在用户信息端点中。
  • 在 ID 令牌中。

所以基本上,将它们包含在用户信息响应中是不够的。 OP 需要在 ID 令牌中添加声明,以便 Firebase 使用电子邮件地址作为身份验证用户列表中的标识符。

可与 Firebase 正常配合使用的 ID 令牌示例:

{
  iss: 'https://www.provider.com',
  aud: 'audience',
  iat: 12345,
  exp: 123456,
  sub: 'UserID0001',
  name: 'Jane Doe',
  given_name: 'Jane',
  family_name: 'Doe',
  preferred_username: 'j.doe',
  picture: 'http://example.com/janedoe/me.jpg'
  email: '[email protected]',  // This claim is expected
  email_verified: 'true'  // This claim is expected
}

userinfo 端点还需要返回相同的声明(根据 Firebase 支持,它们需要与 ID 令牌匹配):

{
  name: 'Jane Doe',
  given_name: 'Jane',
  family_name: 'Doe',
  preferred_username: 'j.doe',
  picture: 'http://example.com/janedoe/me.jpg'
  email: '[email protected]',  // This claim is expected
  email_verified: 'true'  // This claim is expected
}
© www.soinside.com 2019 - 2024. All rights reserved.