Uwierzytelnianie użytkowników za pomocą Amazon Cognito

Wdrażanie aplikacji na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Budować własne logowanie?

  • Nowa aplikacja wymaga rejestracji i logowania
  • Zespół zaczyna budować uwierzytelnianie od zera
  • Cognito robi to już bezpiecznie

Wybór zarządzanego uwierzytelniania Amazon Cognito zamiast budowania własnego logowania

Wdrażanie aplikacji na AWS

Pule użytkowników a pule tożsamości

Cognito User Pool jako katalog użytkowników wystawiający tokeny po lewej, Identity Pool wymieniający zweryfikowany token na tymczasowe poświadczenia AWS pośrodku, usługi AWS po prawej

  • Pula użytkowników: zarządzany katalog użytkowników
  • Obsługuje rejestracje, logowania i wystawia tokeny
  • Pula tożsamości: wymienia token na poświadczenia AWS
  • Używaj obu razem: najpierw uwierzytelnienie, potem autoryzacja dostępu do AWS
Wdrażanie aplikacji na AWS

Trzy tokeny Cognito

  • Token ID: kim jest użytkownik (dane tożsamości)
  • Token dostępu: do jakich zasobów ma dostęp
  • Token odświeżania: pozwala uzyskać nowe tokeny bez ponownego logowania
  • Wszystkie trzy to JWT-y, które można dekodować i weryfikować

Trzy tokeny JWT Cognito obok siebie: token ID z danymi tożsamości, token dostępu z zakresami uprawnień API, token odświeżania oznaczony jako długowieczny do cichego odnawiania

Wdrażanie aplikacji na AWS

Tożsamość federacyjna

  • Federacja: logowanie przez zewnętrznego dostawcę tożsamości
  • Społecznościowi: Google, Facebook, Apple
  • Korporacyjni: dostawcy SAML i OIDC
  • Cognito pośredniczy w zaufaniu i wystawia własne tokeny

Federacja Cognito: użytkownik wybiera dostawcę społecznościowego (Google, Facebook) lub korporacyjnego SAML/OIDC, Cognito weryfikuje zewnętrzne logowanie i wystawia własne tokeny standardowe

Wdrażanie aplikacji na AWS

Cognito jako autoryzator API Gateway

Autoryzator Cognito w API Gateway: klient wysyła nagłówek Authorization z tokenem dostępu, bramka weryfikuje token w puli użytkowników przed uruchomieniem Lambdy, nieprawidłowe tokeny odrzucane z kodem 401

  • API Gateway może korzystać z autoryzatora Cognito
  • Klient wysyła token w nagłówku Authorization
  • API Gateway weryfikuje token przed uruchomieniem backendu
  • Nieprawidłowe lub wygasłe tokeny są odrzucane na brzegu sieci
Wdrażanie aplikacji na AWS

Typowy przepływ: od logowania do wywołania API

  • Użytkownik loguje się do puli użytkowników
  • Otrzymuje tokeny ID, dostępu i odświeżania
  • Klient wywołuje API Gateway z tokenem dostępu
  • Autoryzator Cognito weryfikuje token, a następnie uruchamia backend

Przepływ od logowania do wywołania API: użytkownik loguje się do puli użytkowników i otrzymuje tokeny, klient wysyła token dostępu do API Gateway, autoryzator Cognito weryfikuje go, backend Lambda wykonuje żądanie

Wdrażanie aplikacji na AWS

Częste błędy w Cognito

  • Wysyłanie tokenu ID tam, gdzie powinien być token dostępu
  • Mylenie puli użytkowników z pulą tożsamości
  • Próba autoryzacji dostępu do AWS za pomocą samej puli użytkowników
  • Niezabezpieczone przechowywanie tokenów po stronie klienta

Częste błędy w Cognito: wysyłanie tokenu ID do API zamiast tokenu dostępu, mylenie puli użytkowników z pulą tożsamości oraz niezabezpieczone przechowywanie tokenów po stronie klienta

Wdrażanie aplikacji na AWS

Czas na praktykę!

Wdrażanie aplikacji na AWS

Preparing Video For Download...