Могу ли я использовать Firestore и платформу идентификации GCP с несколькими доменами?

Некоторое время мы занимались разработкой SaaS.

Мы решили использовать Google Cloud Identity Platform для обработки многопользовательская аутентификация и firestore в качестве нашей основной базы данных, но у меня есть некоторые сомнения.

Могу ли я использовать Identity Platform с несколькими доменами и поддоменами?

Этот вопрос приходит в голову, потому что в приложении я разрешаю своим клиентам подключать свой собственный домен в дополнение к бесплатному поддомену, например:

Client1 будет иметь client1.com и client1.myapp.com

Client2 будет иметь client2.com и client2.myapp.com

Однако я хотел бы знать, могу ли я использовать платформу идентификации таким образом и возможно ли это.

Я также хотел бы знать, можно ли выполнить ту же задачу, но с firestore, чтобы мои клиенты могли получать данные из одной базы данных firestore из нескольких доменов и поддоменов.

Следует отметить, что у нас уже есть механизм, настроенный для размещения нескольких доменов на наших настраиваемых серверах, мы просто хотим интегрировать firestore и платформу идентификации.




Ответы (1)


Вы можете настроить авторизованный домен для каждого клиента в GCIP. Есть несколько способов управлять несколькими арендаторами / доменами в Cloud Firestore.

Добавить коллекцию доменов корневого уровня

Разделите ваши данные на корневом уровне. Это будет означать, что у вас будет несколько версий ваших вложенных коллекций, что не проблема, если вы запрашиваете полностью внутри домена / клиента. Однако вы можете использовать запросы collectionGroup, чтобы обойти это.

domains / client1 / users  / user123
                  / mydata / mydata1
domains / client2 / users  / user456
                  / mydata / mydata2

Укажите домен в каждом документе

Вы можете придерживаться стандартной структуры коллекции и добавлять домен в каждый документ. При использовании этой опции имейте в виду, что для каждого запроса потребуется индекс, чтобы учесть ваше поле domainId.

/ users  / user123
/ users  / user456
/ mydata / mydata1
/ mydata / mydata1

Для каждого документа потребуется domainId поле для фильтрации.

{
  displayName: 'Bob Smaith',
  domainId: 'client1'
}
person Jason Berryman    schedule 10.05.2021