Pool-uri de utilizatori, pool-uri de identitate și JWT-uri

Securitatea AWS pentru dezvoltatori

Rahul Singh

Technical Product Manager

Cognito este două servicii într-un singur nume

Amazon Cognito

  • Identitate gestionată pentru utilizatorii aplicației tale
  • Un singur nume, două servicii distincte

Două întrebări deasupra unei granițe punctate etichetate Amazon Cognito. În interiorul graniței sunt două panouri albastre alăturate: un pool de utilizatori descris ca registrul tău de utilizatori și un pool de identitate descris ca broker de credențiale. Liniile din ambele panouri converg către o casetă portocalie punctată dedesubt, care notează că multe aplicații folosesc ambele.

Securitatea AWS pentru dezvoltatori

Cognito este două servicii într-un singur nume

Amazon Cognito

  • Identitate gestionată pentru utilizatorii aplicației tale
  • Un singur nume, două servicii distincte

De care ai nevoie?

  • Autentificare și profiluri de utilizator: pool de utilizatori
  • Browser sau mobil care apelează direct AWS: pool de identitate

Două întrebări deasupra unei granițe punctate etichetate Amazon Cognito. În interiorul graniței sunt două panouri albastre alăturate: un pool de utilizatori descris ca registrul tău de utilizatori și un pool de identitate descris ca broker de credențiale. Liniile din ambele panouri converg către o casetă portocalie punctată dedesubt, care notează că multe aplicații folosesc ambele.

Securitatea AWS pentru dezvoltatori

Un pool de utilizatori autentifică utilizatorii

Un registru gestionat de utilizatori

  • Înregistrare și autentificare
  • Resetarea parolei
  • Autentificare multi-factor

Flux vertical: un utilizator al aplicației se autentifică într-un pool de utilizatori care deține parolele, iar pool-ul returnează o casetă ce conține un ID token, un access token și un refresh token

Securitatea AWS pentru dezvoltatori

Un pool de utilizatori autentifică utilizatorii

Un registru gestionat de utilizatori

  • Înregistrare și autentificare
  • Resetarea parolei
  • Autentificare multi-factor

 

La succes, trei tokenuri

Flux vertical: un utilizator al aplicației se autentifică într-un pool de utilizatori care deține parolele, iar pool-ul returnează o casetă ce conține un ID token, un access token și un refresh token

Securitatea AWS pentru dezvoltatori

Un pool de utilizatori autentifică utilizatorii

Un registru gestionat de utilizatori

  • Înregistrare și autentificare
  • Resetarea parolei
  • Autentificare multi-factor

 

La succes, trei tokenuri

  • ID token: cine este utilizatorul
  • Access token: ce poate apela
  • Refresh token: obții altele noi mai târziu

Flux vertical: un utilizator al aplicației se autentifică într-un pool de utilizatori care deține parolele, iar pool-ul returnează o casetă ce conține un ID token, un access token și un refresh token

Securitatea AWS pentru dezvoltatori

Un pool de identitate emite credențiale AWS

Tokenurile nu sunt credențiale

  • Dovadă de identitate pentru aplicația ta
  • Nu sunt credențiale pentru accesul la serviciile AWS

 

Pool-urile de identitate: token de încredere la intrare, credențiale la ieșire

Flux vertical cu aceeași geometrie ca diagrama pool-ului de utilizatori: un token de încredere este prezentat unui pool de identitate, care verifică cine l-a emis și returnează credențiale AWS limitate la un rol, cu termen de expirare

Securitatea AWS pentru dezvoltatori

Un pool de identitate emite credențiale AWS

Tokenurile nu sunt credențiale

  • Dovadă de identitate pentru aplicația ta
  • Nu sunt credențiale pentru accesul la serviciile AWS

 

Pool-urile de identitate: token de încredere la intrare, credențiale la ieșire

  • Un job de build a schimbat un OIDC token
  • O dovadă pe care o deții, schimbată pentru un card de acces

Flux vertical cu aceeași geometrie ca diagrama pool-ului de utilizatori: un token de încredere este prezentat unui pool de identitate, care verifică cine l-a emis și returnează credențiale AWS limitate la un rol, cu termen de expirare

Securitatea AWS pentru dezvoltatori

O aplicație, ambele părți

Un browser care folosește ambele

  1. Autentificare, primire token
  2. Trimiterea tokenului către API-ul tău

Bearer token: cine îl deține, îl folosește

Un flux vertical. Un browser se autentifică la un pool de utilizatori, care returnează un token. Acel token unic se ramifică apoi în două direcții, la stânga către API-ul tău și la dreapta către un pool de identitate. Pool-ul de identitate returnează credențiale, iar acele credențiale ajung la S3.

Securitatea AWS pentru dezvoltatori

O aplicație, ambele părți

Un browser care folosește ambele

  1. Autentificare, primire token
  2. Trimiterea tokenului către API-ul tău
  3. Schimbarea aceluiași token cu credențiale

Un flux vertical. Un browser se autentifică la un pool de utilizatori, care returnează un token. Acel token unic se ramifică apoi în două direcții, la stânga către API-ul tău și la dreapta către un pool de identitate. Pool-ul de identitate returnează credențiale, iar acele credențiale ajung la S3.

Securitatea AWS pentru dezvoltatori

O aplicație, ambele părți

Un browser care folosește ambele

  1. Autentificare, primire token
  2. Trimiterea tokenului către API-ul tău
  3. Schimbarea aceluiași token cu credențiale
  4. Accesarea S3 cu acele credențiale

Tokenuri pentru codul tău, credențiale pentru AWS

Un flux vertical. Un browser se autentifică la un pool de utilizatori, care returnează un token. Acel token unic se ramifică apoi în două direcții, la stânga către API-ul tău și la dreapta către un pool de identitate. Pool-ul de identitate returnează credențiale, iar acele credențiale ajung la S3.

Securitatea AWS pentru dezvoltatori

Un token este text cu o semnătură

Trei segmente unite prin puncte și etichetate Header, Payload și Signature. Un lacăt deschis se află pe payload, iar o paranteză sub primele două segmente arată până unde ajunge semnătura.

JWT: JSON Web Token

  • Claims: afirmații etichetate despre utilizator
Securitatea AWS pentru dezvoltatori

Un token este text cu o semnătură

Trei segmente unite prin puncte și etichetate Header, Payload și Signature. Un lacăt deschis se află pe payload, iar o paranteză sub primele două segmente arată până unde ajunge semnătura.

JWT: JSON Web Token

  • Claims: afirmații etichetate despre utilizator
  • Codificat, nu criptat
  • Oricine îl poate citi și oricine îl poate modifica
Securitatea AWS pentru dezvoltatori

Verifică înainte să citești

Verificarea vine întâi

  • JWKS: JSON Web Key Set, cheile publice de semnare ale emitentului
  • Semnătura este verificată cu aceste chei

O diagramă verticală de tip poartă. Un token sosește și trece prin patru verificări bifate, în ordine: semnătură, emitent, audiență și expirare. Cheile publice ale emitentului alimentează verificarea semnăturii din lateral, iar abia după a patra verificare traseul ajunge la o casetă verde pentru citirea claim-urilor.

Securitatea AWS pentru dezvoltatori

Verifică înainte să citești

Verificarea vine întâi

  • JWKS: JSON Web Key Set, cheile publice de semnare ale emitentului
  • Semnătura este verificată cu aceste chei

 

Apoi trei claim-uri

  • iss: pool-ul tău de utilizatori
  • aud pe un ID token, client_id pe un access token
  • exp: încă valabil

O diagramă verticală de tip poartă. Un token sosește și trece prin patru verificări bifate, în ordine: semnătură, emitent, audiență și expirare. Cheile publice ale emitentului alimentează verificarea semnăturii din lateral, iar abia după a patra verificare traseul ajunge la o casetă verde pentru citirea claim-urilor.

Securitatea AWS pentru dezvoltatori

Un token verificat poate fi totuși greșit

Două carduri potrivite, alăturate. Cardul ID token este marcat ca token de identitate, arată ID-ul clientului reținut în claim-ul audience și notează că nu conține scope, deasupra unei casete gri pentru cine este utilizatorul. Cardul access token este marcat ca access token, arată ID-ul clientului reținut în propriul claim de identificator de client și notează că acesta conține un scope, deasupra unei casete portocalii pentru ce poate apela. O bandă punctată sub ambele carduri notează că claim-ul Cognito groups apare în ambele tokenuri.

Verificat, dar tot tokenul greșit

Securitatea AWS pentru dezvoltatori

Un token verificat poate fi totuși greșit

Două carduri potrivite, alăturate. Cardul ID token este marcat ca token de identitate, arată ID-ul clientului reținut în claim-ul audience și notează că nu conține scope, deasupra unei casete gri pentru cine este utilizatorul. Cardul access token este marcat ca access token, arată ID-ul clientului reținut în propriul claim de identificator de client și notează că acesta conține un scope, deasupra unei casete portocalii pentru ce poate apela. O bandă punctată sub ambele carduri notează că claim-ul Cognito groups apare în ambele tokenuri.

Verificat, dar tot tokenul greșit

token_use spune ce tip este

  • cognito:groups apare la ambele tipuri și nu este un scope

  • scope: ce poate apela tokenul

  • sub: ce utilizator, și nu se schimbă niciodată
  • Identitatea nu înseamnă permisiune
Securitatea AWS pentru dezvoltatori

Hai să exersăm!

Securitatea AWS pentru dezvoltatori

Preparing Video For Download...