Firebase Auth сохраняет пользователей без идентификатора с помощью OIDC

В настоящее время я могу регистрировать новых пользователей с помощью Firebase Auth и поставщика OIDC (с этого момента OP). Это означает, что пользователь видит всплывающее окно для входа в систему, и после успешного входа в систему аутентификации Firebase появляется новый пользователь.

Однако новым пользователям не хватает идентификатора (который, как я ожидаю, будет адресом электронной почты):

При использовании области email OP предоставляет утверждения email и email_verified как часть ответа на информацию о пользователе, но я предполагаю, что Firebase пытается прочитать адрес электронной почты другим способом.

Есть ли способ узнать, какие поля/области Firebase использует/ожидает прочитать, чтобы установить электронное письмо в качестве идентификатора нового пользователя с помощью OIDC? Так что:

  • Я могу попросить ОП соответствующим образом обновить свою конфигурацию/ответ и разрешить Firebase хранить адрес электронной почты в качестве идентификатора.
  • Или обновите некоторую конфигурацию на стороне клиента, чтобы сообщить Firebase использовать доступные утверждения с использованием конечной точки userinfo.
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я связался со службой поддержки Firebase, и они пояснили, что Firebase нужны обе эти претензии:

  • В конечной точке userinfo.
  • В идентификационном токене.

По сути, недостаточно включить их в ответ с информацией о пользователе. OP необходимо добавить утверждения в токен идентификатора, чтобы Firebase использовала адрес электронной почты в качестве идентификатора в списке пользователей аутентификации.

Пример токена идентификатора, который будет правильно работать с Firebase:

{
  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, они должны совпадать с токеном идентификатора):

{
  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
}

Я не уверен, является ли это частью стандарта OIDC или это просто требования, которые Firebase решила реализовать самостоятельно, поэтому я добавил stackoverflow.com/questions/78696443/…

Peque 02.07.2024 12:41

Другие вопросы по теме