我目前可以通过 Firebase Auth 和 OIDC 提供商(从现在开始为 OP)注册新用户。这意味着用户会看到登录弹出窗口,成功登录后,Firebase 身份验证中会出现一个新用户。
但是,新用户缺少标识符(我希望是电子邮件地址):
当使用
email
范围时,OP 提供 email
和 email_verified
声明作为用户信息响应的一部分,但我猜测 Firebase 正在尝试以不同的方式读取电子邮件地址。
有没有办法知道 Firebase 使用/期望读取哪些字段/范围,以便使用 OIDC 将电子邮件设置为新用户的标识符?这样:
我联系了 Firebase 支持人员,他们澄清 Firebase 需要这些声明:
所以基本上,将它们包含在用户信息响应中是不够的。 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
}