Проблемы с веб-клиентом Firebase и поставщиком OIDC

Я настроил поставщика OIDC (связанный с поставщиком OIDC Keycloak) в консоли Google Identity Platform. Это код в моем одностраничном приложении:

provider = new firebase.auth.OAuthProvider('oidc.keycloak');
firebaseAuth.auth.signInWithPopup(provider)
      .then(value => {
        log.info(`It worked!`, value);
      })
      .catch(err => {
        log.info('Something went wrong:', err);
      });

Появляется всплывающее окно, и я могу войти в Keycloak, но после того, как всплывающее окно исчезнет, ​​в браузере выдается следующая ошибка:

{code: "auth/admin-restricted-operation", message: "This operation is restricted to administrators only."}

Я использую последние версии Firebase Client SDK и AngularFire2, и я успешно настроил аутентификацию по электронной почте / паролю. В Google Identity Platform у меня есть:

Эмитент (URL):

https://auth.example.com/auth/realms/myrealm

и URL-адрес обратного вызова:

https://myapp-12345.firebaseapp.com/__/auth/handler

Есть ли дополнительная конфигурация на стороне клиента, которую мне нужно сделать? Может быть проблема связана с поставщиком OIDC (Keycloak) и его конфигурацией?


person Thomas    schedule 01.09.2019    source источник


Ответы (1)


Похоже, вы отключили регистрацию пользователей из клиентского SDK в настройках Google Cloud Identity Platform (в Google Cloud Console). Это находится в разделе Settings под User actions. Установите флажок Enable create (sign-up).

person bojeil    schedule 03.09.2019
comment
Спасибо за вашу помощь. Правильно ли я считаю, что это позволяет публике регистрироваться в моем приложении, и нет способа ограничить регистрацию только пользователями определенного провайдера? - person Thomas; 05.09.2019
comment
Этот параметр полезен в том случае, если вы не хотите, чтобы пользователи создавали свою учетную запись, а хотите, чтобы пользователь был создан администратором (через облачную консоль или административный SDK). Это типично для предприятия. Вы же не хотите, чтобы сотрудники создавали свою учетную запись. - person bojeil; 06.09.2019
comment
Понял. У меня есть два типа пользователей: те, кто регистрируется через свою организацию (OIDC и SAML), и те, кто входит в систему со своим адресом электронной почты / паролем. Я не хочу разрешать регистрацию для последнего, но регистрация должна быть разрешена для всех, иначе первая группа не сможет войти в систему. - person Thomas; 06.09.2019
comment
Понятно. В этом есть смысл. В настоящее время я думаю, что вы не можете сочетать и то, и другое. Попробуйте отправить запрос функции для этого: cloud.google.com/support-hub или через поддержку firebase. - person bojeil; 06.09.2019
comment
Другой вариант - заблаговременно загрузить пользователей SAML и OIDC в ​​проект Auth. Возможен ли это вариант? - person bojeil; 06.09.2019
comment
К сожалению нет. Я подумал, может быть, я мог бы попросить пользователей SAML зарегистрироваться по другой ссылке, которая впервые поддерживается Admin SDK, а затем подписку на Client SDK можно отключить, но это слишком много работы для чего-то, что предполагается, что это будет аутсорсинг. - person Thomas; 06.09.2019
comment
Кстати, я отправил запрос функции через службу поддержки Firebase. - person Thomas; 06.09.2019
comment
я просто включаю вход для анонимного пользователя. это сработало для меня - person shammi; 31.12.2019