Amazon Cognito
Amazon Cognito
Autentykacja i autoryzacja uzytkownikow w chmurze AWS. Logowanie, rejestracja, social login (Google, Apple, Facebook), MFA i federacja tozsamosci - bez budowania wlasnego systemu auth.
Amazon Cognito to w pelni zarzadzana usluga autentykacji i autoryzacji, ktora pozwala dodac logowanie, rejestracje i kontrole dostepu do Twoich aplikacji webowych i mobilnych. Zamiast budowac wlasny system uwierzytelniania od zera, dostajesz gotowe rozwiazanie z User Pools (baza uzytkownikow) i Identity Pools (federacja tozsamosci).
Cognito obsluguje social login (Google, Apple, Facebook), standardy SAML 2.0 i OpenID Connect (OIDC), wieloskladnikowe uwierzytelnianie (MFA) oraz gotowy Hosted UI z formularzami logowania. Skaluje sie do milionow uzytkownikow i integruje z API Gateway, Lambda i innymi serwisami AWS.
Cognito obsluguje do 40 mln MAU na jeden User Pool. Amazon.com, Disney+ i wiele firm z listy Fortune 500 korzysta z Cognito. Funkcja Advanced Security wykrywa skompromitowane hasla, sprawdzajac je w czasie rzeczywistym z bazami danych wyciekow.
Uzyj Cognito User Pools + Identity Pools razem: User Pools uwierzytelnia (JWT), Identity Pools wymienia JWT na tymczasowe credentials AWS. Dzieki temu Twoj frontend moze bezposrednio uploadowac do S3 lub odpytywac DynamoDB bez posrednictwa backendu. Zawsze wlaczaj Advanced Security ($0.050/MAU) dla produkcyjnych aplikacji - wykrywa credential stuffing i brute force.
Cognito Hosted UI jest funkcjonalne, ale ograniczone w kastomizacji. Jesli Twoja marka wymaga pixel-perfect strony logowania, uzyj Cognito API z wlasnym frontendem. Pamietaj tez: Cognito ma twardy limit 40 atrybutow niestandardowych na uzytkownika - zaplanuj schemat z wyprzedzeniem.
Amazon Cognito zapewnia uwierzytelnianie, autoryzacje i zarzadzanie uzytkownikami dla aplikacji webowych i mobilnych. User Pool przechowuje uzytkownikow, a Identity Pool nadaje tymczasowe poswiadczenia AWS.
Tworzenie User Pool
Definiujesz atrybuty uzytkownika (email, telefon, custom attributes), polityki hasel (min. 8 znakow, wielkie litery, cyfry, znaki specjalne) i metody weryfikacji (email/SMS). User Pool obsluguje do 40 milionow uzytkownikow.
Konfiguracja sign-up i sign-in
Okreslasz flow logowania - email+haslo, telefon+haslo, username+haslo lub federacja z Google/Facebook/SAML. Konfigurujesz MFA (TOTP, SMS), password recovery i account verification.
Dodanie App Client
App Client to identyfikator aplikacji (client ID) z konfiguracja OAuth 2.0 - grant types (authorization code, implicit), scopes, callback URLs. Mozesz miec wiele App Clients dla roznych platform (web, iOS, Android).
Integracja SDK w aplikacji
Uzywasz AWS Amplify, amazon-cognito-identity-js lub dowolnego klienta OIDC. SDK obsluguje rejestracje, logowanie, odswiezanie tokenow i wylogowanie. Hosted UI zapewnia gotowy interfejs bez pisania frontendu.
Walidacja tokenow JWT
Po zalogowaniu Cognito zwraca 3 tokeny JWT - ID token (dane uzytkownika), Access token (uprawnienia) i Refresh token (odswiezanie, wazny do 10 lat). Backend weryfikuje podpis JWT uzywajac publicznych kluczy JWKS endpoint.
Identity Pool (opcjonalnie)
Identity Pool wymienia tokeny Cognito (lub Google/Facebook) na tymczasowe poswiadczenia AWS (STS). Uzytkownik moze bezposrednio korzystac z S3, DynamoDB i innych serwisow AWS z uprawnieniami przypisanymi do IAM Role.
Cognito to potezny serwis auth, ale ma specyficzne zachowania, ktore moga zaskoczyc. Te wskazowki pomoga Ci zbudowac bezpieczny i przyjazny system logowania.
Hosted UI vs custom UI
Hosted UI to gotowy interfejs logowania/rejestracji hostowany przez AWS. Szybki start, ale ograniczona personalizacja (CSS). Custom UI z Amplify daje pelna kontrole nad wyglarem, ale wymaga wiecej kodu. Zacznij od Hosted UI, migruj pozniej.
PoczatkujacyFederacja z social IdP
Integracja z Google, Facebook, Apple i SAML/OIDC providerami. Cognito automatycznie mapuje atrybuty (email, name) i laczy konta. Uwaga - user pool attribute mapping musi byc skonfigurowany przed pierwszym logowaniem federowanym.
PoczatkujacyLambda Triggers - customizacja flow
Lambda triggers pozwalaja wstrzyknac logike w kazdy etap - Pre Sign-up (walidacja), Post Confirmation (welcome email), Pre Token Generation (custom claims), Pre Authentication (dodatkowe sprawdzenia). Max timeout 5 sekund per trigger.
ZaawansowanyAdvanced Security Features
Wlacz Advanced Security ($0.050/MAU) dla adaptive authentication - Cognito analizuje ryzyko logowania (nowe urzadzenie, lokalizacja, IP) i wymusza MFA lub blokuje podejrzane proby. Wykrywa credential stuffing i brute force.
ZaawansowanyCustomizacja tokenow JWT
Pre Token Generation Lambda trigger pozwala dodac custom claims do ID i Access tokenow (np. role, permissions, tenant_id). Unikaj duzych payloadow - tokeny sa przesylane w kazdym requeiscie. Limit to 11000 znakow w custom claims.
ZaawansowanyMigracja z istniejacego systemu auth
User Migration Lambda trigger pozwala na bezszwowa migracje - przy pierwszym logowaniu Cognito wywoluje Twoja Lambda, ktora weryfikuje credentials w starym systemie i tworzy uzytkownika w User Pool. Uzytkownicy nie zauwaza zmiany.
PoczatkujacyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon Cognito bezposrednio w konsoli AWS.
Do czego sluzy Amazon Cognito?
Autentykacja aplikacji webowej
Dodaj rejestracje, logowanie, reset hasla i MFA do swojej aplikacji. Cognito Hosted UI daje gotowe formularze, a JWT tokeny autoryzuja zapytania do API.
Social login
Pozwol uzytkownikom logowac sie przez Google, Apple, Facebook lub dowolnego dostawce OIDC/SAML. Bez pisania wlasnej integracji OAuth.
Autoryzacja dostepu do AWS
Identity Pools zamieniaja token Cognito na tymczasowe credentials AWS. Uzytkownik mobilny moze np. wrzucac pliki bezposrednio do S3.
Aplikacje korporacyjne (SSO)
Integracja z firmowym Active Directory lub Okta przez SAML 2.0. Pracownicy loguja sie jednym kontem do wszystkich aplikacji.
Co musisz wiedziec?
User Pool
Katalog uzytkownikow w Cognito. Obsluguje rejestracje, logowanie, MFA, weryfikacje email/telefonu. Wydaje tokeny JWT (ID, Access, Refresh).
Identity Pool
Zamienia tokeny z User Pool (lub zewnetrznego dostawcy) na tymczasowe credentials AWS (STS). Pozwala uzytkownikowi aplikacji na bezposredni dostep do serwisow AWS.
Hosted UI
Gotowy interfejs logowania hostowany przez Cognito. Obsluguje rejestracje, logowanie, reset hasla i social login. Mozesz go dostosowac (logo, kolory) lub uzyc wlasnego UI.
JWT Token
JSON Web Token wydawany po udanym logowaniu. ID Token zawiera dane uzytkownika, Access Token autoryzuje dostep do API, Refresh Token odnawia sesje.
MFA (Multi-Factor Authentication)
Wieloskladnikowe uwierzytelnianie - dodatkowy krok bezpieczenstwa. Cognito obsluguje SMS, TOTP (aplikacje typu Google Authenticator) oraz klucze FIDO2.
User Groups
Grupy uzytkownikow w User Pool (np. admin, editor, viewer). Kazda grupa moze miec przypisana role IAM - ulatwia zarzadzanie uprawnieniami.
Uwierzytelnianie aplikacji webowej z Cognito
Architektura uwierzytelniania i autoryzacji z Cognito User Pool, walidacja JWT w API Gateway i opcjonalna federacja z external identity providerami.
Porownanie User Pools vs Identity Pools
| Cecha | User Pools | Identity Pools |
|---|---|---|
| Glowna funkcja | Autentykacja (kto to jest?) | Autoryzacja (co moze robic w AWS?) |
| Wynik | JWT tokeny (ID + Access) | Tymczasowe AWS credentials |
| Social login | Google, Apple, Facebook, SAML | Przez User Pools lub bezposrednio |
| Custom UI | Hosted UI lub wlasna | N/A (nie ma UI) |
| MFA | Tak (SMS, TOTP, e-mail) | N/A |
| Pricing | Per MAU | Darmowe (placisz za STS) |
| Najlepszy dla | Logowanie uzytkownikow do aplikacji | Dostep do S3, DynamoDB z frontend |
Ile kosztuje Amazon Cognito?
User Pool - MAU
Placisz za Monthly Active Users (MAU) - uzytkownikow, ktorzy sie loguja w danym miesiacu.
Essentials (domyslny tier): $0.015/MAU po przekroczeniu 10 000 darmowych MAU (Lite: od $0.0055/MAU)
Social/SAML login
Logowanie przez dostawcow zewnetrznych (Google, Facebook, SAML) ma inna cene.
SAML/OIDC: $0.015/MAU
Zaawansowane bezpieczenstwo
Opcjonalne funkcje: adaptive authentication, wykrywanie skompromitowanych hasel.
$0.050/MAU za Advanced Security Features
Free Tier
Cognito User Pool: 10 000 MAU za darmo miesiecznie (tier Essentials, logowanie bezposrednie). Identity Pool: zawsze darmowy.
50 000 aktywnych uzytkownikow/mies. za darmo!
Przyklady AWS CLI
Utworz User Pool
Tworzy nowy User Pool z weryfikacja email i polityka hasel
aws cognito-idp create-user-pool \
--pool-name MojaAplikacjaUsers \
--auto-verified-attributes email \
--username-attributes email \
--mfa-configuration OPTIONAL \
--policies '{"PasswordPolicy":{"MinimumLength":8,"RequireUppercase":true,"RequireLowercase":true,"RequireNumbers":true,"RequireSymbols":false}}'
Utworz App Client
Tworzy klienta aplikacji do integracji z User Pool
aws cognito-idp create-user-pool-client \
--user-pool-id eu-central-1_AbCdEfGh \
--client-name MojaAplikacjaWeb \
--explicit-auth-flows ALLOW_USER_PASSWORD_AUTH ALLOW_REFRESH_TOKEN_AUTH \
--supported-identity-providers COGNITO
Zarejestruj uzytkownika
Rejestruje nowego uzytkownika w User Pool
aws cognito-idp sign-up \
--client-id 1abc2defgh3ijklmno4pqrs \
--username [email protected] \
--password MojeHaslo123! \
--user-attributes Name=email,[email protected] Name=name,Value="Jan Kowalski"
Lista uzytkownikow
Wyswietla liste uzytkownikow w User Pool
aws cognito-idp list-users \
--user-pool-id eu-central-1_AbCdEfGh \
--query "Users[].{Email:Attributes[?Name=='email'].Value|[0],Status:UserStatus,Utworzony:UserCreateDate}" \
--output table
Quiz: Amazon Cognito
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Jaka jest roznica miedzy User Pool a Identity Pool w Cognito?
2. Ile MAU (Monthly Active Users) obejmuje Free Tier Cognito User Pool?
3. Jakie typy tokenow JWT wydaje Cognito po udanym logowaniu?
4. Ktory standard Cognito obsluguje do integracji z firmowym Active Directory?
Czesto uzywane razem z Amazon Cognito
Czytaj więcej o Amazon Cognito
Chcesz poznac Amazon Cognito w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon Cognito krok po kroku. Teoria + praktyka od zera.