Wprowadzenie do interfejsu Admin Auth API

Pakiet Firebase Admin SDK umożliwia integrację własnych serwerów z Uwierzytelnianiem Firebase. Za pomocą pakietu SDK Firebase Admin możesz zarządzać użytkownikami i tokenami uwierzytelniania. Jest kilka powodów, dla których warto to zrobić:

Zarządzanie użytkownikami

Nie zawsze trzeba używać konsoli Firebase, by zarządzać użytkownikami Firebase. Interfejs Admin User Management API zapewnia tym samym użytkownikom dostęp automatyczny. Umożliwia też wykonywanie czynności, których nie ma konsola Firebase, takich jak pobieranie pełnych danych użytkownika oraz zmienianie jego hasła, adresu e-mail lub numeru telefonu.

Uwierzytelnianie niestandardowe

Możesz zintegrować z Firebase zewnętrzny system użytkowników. Możesz na przykład mieć już bazę danych użytkowników albo zdecydować się na integrację z zewnętrznym dostawcą tożsamości, którego Uwierzytelnianie Firebase nie obsługuje natywnie.

W tym celu możesz utworzyć tokeny niestandardowe z dowolnymi deklaracjami identyfikującymi użytkownika. Tych tokenów niestandardowych można później używać do logowania się w usłudze Uwierzytelnianie Firebase w aplikacji klienckiej i przyjmowania tożsamości opisywanej w deklaracjach tokena. Ta tożsamość będzie później używana do uzyskiwania dostępu do innych usług Firebase, takich jak Cloud Storage.

Weryfikacja tożsamości

Uwierzytelnianie Firebase służy przede wszystkim do identyfikowania użytkowników aplikacji w celu ograniczenia dostępu do innych usług, takich jak Cloud Storage. Możesz też użyć tej usługi do identyfikowania tych użytkowników na własnym serwerze. Pozwala to bezpiecznie wykonywać logikę po stronie serwera w imieniu użytkowników, którzy zalogowali się za pomocą Uwierzytelniania Firebase.

Aby to zrobić, możesz pobrać token identyfikatora z aplikacji klienckiej zalogowanej przy użyciu uwierzytelniania Firebase i umieścić go w żądaniu wysyłanym do Twojego serwera. Następnie serwer weryfikuje token identyfikatora i wyodrębnia deklaracje, które identyfikują użytkownika (w tym jego uid, dostawcę tożsamości, u którego się zalogował itp.). Informacje o tożsamości mogą następnie zostać użyte przez serwer do wykonywania działań w imieniu użytkownika.

Pakiet SDK Firebase Admin udostępnia metody wykonywania powyższych zadań uwierzytelniania, które umożliwiają zarządzanie użytkownikami, generowanie tokenów niestandardowych i weryfikowanie tokenów tożsamości.

Niestandardowe deklaracje użytkowników

W niektórych przypadkach możesz chcieć wdrożyć szczegółową kontrolę dostępu dla użytkowników zalogowanych już przy użyciu jednego z obsługiwanych dostawców uwierzytelniania Firebase, np. E-mail/hasło, Google, Facebook, telefon itp. Zapewnia to połączenie niestandardowych deklaracji użytkowników i reguł zabezpieczeń aplikacji. Na przykład użytkownik zalogowany przy użyciu adresu e-mail i hasła do uwierzytelniania Firebase może mieć kontrolę dostępu definiowaną za pomocą niestandardowych deklaracji.

Zarządzanie użytkownikami

Pakiet SDK Firebase Admin udostępnia interfejs API do zarządzania użytkownikami Firebase z podwyższonymi uprawnieniami. Interfejs Admin User Management API umożliwia programowe pobieranie, tworzenie, aktualizowanie i usuwanie użytkowników bez konieczności używania istniejących danych logowania i bez obaw o ograniczanie liczby żądań po stronie klienta.

Zarządzanie użytkownikami

Tworzenie tokena niestandardowego

Podstawowym zastosowaniem tokenów niestandardowych jest umożliwienie użytkownikom uwierzytelniania za pomocą zewnętrznego lub starszego mechanizmu uwierzytelniania. Może to być serwer LDAP lub zewnętrzny dostawca OAuth, którego Firebase nie obsługuje natywnie, taki jak Instagram czy LinkedIn.

Pakiet SDK Firebase Admin ma wbudowaną metodę tworzenia tokenów niestandardowych. Możesz też programowo tworzyć tokeny niestandardowe w dowolnym języku przy użyciu zewnętrznych bibliotek JWT.

Twój serwer powinien utworzyć token niestandardowy z unikalnym identyfikatorem (uid) i przekazać go do aplikacji klienckiej, która będzie go używać do logowania się do Firebase. Przykładowy kod i więcej informacji o procesie tworzenia tokenów niestandardowych znajdziesz w sekcji Tworzenie tokenów niestandardowych.

Tworzenie tokenów niestandardowych

Weryfikacja tokena tożsamości

Jeśli aplikacja kliencka Firebase komunikuje się z serwerem backendu, może być konieczne zidentyfikowanie aktualnie zalogowanego użytkownika na serwerze, co pozwoli wykonać logikę po stronie serwera w jego imieniu. Możesz to bezpiecznie zrobić, korzystając z tokenów identyfikatorów, które są tworzone przez Firebase, gdy użytkownik loguje się w aplikacji Firebase. Tokeny tożsamości są zgodne ze specyfikacją OpenID Connect i zawierają dane umożliwiające identyfikację użytkownika, a także inne informacje związane z profilem i uwierzytelnianiem. Możesz wysyłać, weryfikować i sprawdzać tokeny z własnych backendów. Dzięki temu możesz bezpiecznie zidentyfikować aktualnie zalogowanego użytkownika i autoryzować go we własnych zasobach backendu.

Pakiet SDK Firebase Admin ma wbudowaną metodę weryfikacji tokenów tożsamości. Możesz też programowo weryfikować tokeny tożsamości w dowolnym języku przy użyciu zewnętrznych bibliotek JWT. Więcej informacji i przykładowe fragmenty kodu związane z procesem weryfikacji tokena tożsamości znajdziesz w artykule Weryfikowanie tokenów tożsamości.

Weryfikowanie tokenów tożsamości

Niestandardowe roszczenia użytkowników

Pakiet SDK Firebase Admin umożliwia ustawianie atrybutów niestandardowych na kontach użytkowników. Niestandardowe deklaracje użytkowników pozwalają przyznać użytkownikom różne poziomy dostępu (role), które są następnie egzekwowane w regułach zabezpieczeń aplikacji.

Gdy żądania niestandardowe zostaną zmodyfikowane w odniesieniu do użytkownika za pomocą pakietu SDK Firebase Admin, są one przekazywane do uwierzytelnionych użytkowników po stronie klienta za pomocą ich tokenów tożsamości. Token identyfikatora to zaufany mechanizm dostarczania tych niestandardowych żądań, a przed przetworzeniem powiązanego żądania cały uwierzytelniony dostęp musi zweryfikować token tożsamości.

Kontrola dostępu za pomocą roszczeń niestandardowych