User pools, identity pools och JWT:er

Använda AWS-säkerhet för utvecklare

Rahul Singh

Technical Product Manager

Cognito är två tjänster i ett namn

Amazon Cognito

  • Hanterad identitet för dina applikationsanvändare
  • Ett namn, två separata tjänster

Två frågor ovanför en streckad ram märkt Amazon Cognito. Inuti ramen finns två blå paneler sida vid sida: en user pool beskriven som din användarkatalog och en identity pool beskriven som en autentiseringsförmedlare. Linjer från båda panelerna möts i en streckad orange ruta nedanför, som anger att många applikationer använder båda.

Använda AWS-säkerhet för utvecklare

Cognito är två tjänster i ett namn

Amazon Cognito

  • Hanterad identitet för dina applikationsanvändare
  • Ett namn, två separata tjänster

Vilken behöver du?

  • Inloggning och användarprofiler: user pool
  • Webbläsare eller mobil som anropar AWS direkt: identity pool

Två frågor ovanför en streckad ram märkt Amazon Cognito. Inuti ramen finns två blå paneler sida vid sida: en user pool beskriven som din användarkatalog och en identity pool beskriven som en autentiseringsförmedlare. Linjer från båda panelerna möts i en streckad orange ruta nedanför, som anger att många applikationer använder båda.

Använda AWS-säkerhet för utvecklare

En user pool loggar in användare

En hanterad användarkatalog

  • Registrering och inloggning
  • Återställning av lösenord
  • Multifaktorautentisering

Vertikalt flöde: en appanvändare loggar in i en user pool som lagrar lösenorden, och poolen returnerar en ruta med en ID-token, en access-token och en refresh-token

Använda AWS-säkerhet för utvecklare

En user pool loggar in användare

En hanterad användarkatalog

  • Registrering och inloggning
  • Återställning av lösenord
  • Multifaktorautentisering

 

Vid lyckad inloggning, tre tokens

Vertikalt flöde: en appanvändare loggar in i en user pool som lagrar lösenorden, och poolen returnerar en ruta med en ID-token, en access-token och en refresh-token

Använda AWS-säkerhet för utvecklare

En user pool loggar in användare

En hanterad användarkatalog

  • Registrering och inloggning
  • Återställning av lösenord
  • Multifaktorautentisering

 

Vid lyckad inloggning, tre tokens

  • ID-token: vem användaren är
  • Access-token: vad de får anropa
  • Refresh-token: hämta nya senare

Vertikalt flöde: en appanvändare loggar in i en user pool som lagrar lösenorden, och poolen returnerar en ruta med en ID-token, en access-token och en refresh-token

Använda AWS-säkerhet för utvecklare

En identity pool utfärdar AWS-autentiseringsuppgifter

Tokens är inga autentiseringsuppgifter

  • Identitetsbevis för din app
  • Inga autentiseringsuppgifter för att nå AWS-tjänster

 

Identity pools: betrodd token in, autentiseringsuppgifter ut

Vertikalt flöde med samma struktur som user pool-diagrammet: en betrodd token presenteras för en identity pool, som kontrollerar vem som utfärdat den och returnerar AWS-autentiseringsuppgifter kopplade till en roll som löper ut

Använda AWS-säkerhet för utvecklare

En identity pool utfärdar AWS-autentiseringsuppgifter

Tokens är inga autentiseringsuppgifter

  • Identitetsbevis för din app
  • Inga autentiseringsuppgifter för att nå AWS-tjänster

 

Identity pools: betrodd token in, autentiseringsuppgifter ut

  • Ett byggjobb bytte in en OIDC-token
  • Ett bevis du har, bytt mot ett passerkort

Vertikalt flöde med samma struktur som user pool-diagrammet: en betrodd token presenteras för en identity pool, som kontrollerar vem som utfärdat den och returnerar AWS-autentiseringsuppgifter kopplade till en roll som löper ut

Använda AWS-säkerhet för utvecklare

En app, båda delarna

En webbläsare som använder båda

  1. Logga in, få en token
  2. Skicka token till ditt API

Bearer-token: den som har den, kan använda den

Ett vertikalt flöde. En webbläsare loggar in i en user pool, som returnerar en token. Den enda token förgrenas sedan åt två håll, till vänster till ditt API och till höger till en identity pool. Identity pool returnerar autentiseringsuppgifter, och det är dessa som når S3.

Använda AWS-säkerhet för utvecklare

En app, båda delarna

En webbläsare som använder båda

  1. Logga in, få en token
  2. Skicka token till ditt API
  3. Byt samma token mot autentiseringsuppgifter

Ett vertikalt flöde. En webbläsare loggar in i en user pool, som returnerar en token. Den enda token förgrenas sedan åt två håll, till vänster till ditt API och till höger till en identity pool. Identity pool returnerar autentiseringsuppgifter, och det är dessa som når S3.

Använda AWS-säkerhet för utvecklare

En app, båda delarna

En webbläsare som använder båda

  1. Logga in, få en token
  2. Skicka token till ditt API
  3. Byt samma token mot autentiseringsuppgifter
  4. Nå S3 med dessa autentiseringsuppgifter

Tokens till din kod, autentiseringsuppgifter till AWS

Ett vertikalt flöde. En webbläsare loggar in i en user pool, som returnerar en token. Den enda token förgrenas sedan åt två håll, till vänster till ditt API och till höger till en identity pool. Identity pool returnerar autentiseringsuppgifter, och det är dessa som når S3.

Använda AWS-säkerhet för utvecklare

En token är text med en signatur

Tre segment sammanfogade med punkter och märkta Header, Payload och Signature. Ett öppet hänglås sitter på payload-delen, och en klammer under de första två segmenten visar hur långt signaturen sträcker sig.

JWT: JSON Web Token

  • Claims: märkta påståenden om användaren
Använda AWS-säkerhet för utvecklare

En token är text med en signatur

Tre segment sammanfogade med punkter och märkta Header, Payload och Signature. Ett öppet hänglås sitter på payload-delen, och en klammer under de första två segmenten visar hur långt signaturen sträcker sig.

JWT: JSON Web Token

  • Claims: märkta påståenden om användaren
  • Kodad, inte krypterad
  • Vem som helst kan läsa den och vem som helst kan ändra den
Använda AWS-säkerhet för utvecklare

Verifiera innan du läser

Verifiering kommer först

  • JWKS: JSON Web Key Set, utfärdarens publika signeringsnycklar
  • Signaturen kontrolleras mot dessa nycklar

Ett vertikalt grinddiagram. En token anländer och passerar fyra bockade kontroller i ordning: signatur, utfärdare, mottagare och utgångstid. Utfärdarens publika nycklar matas in i signaturkontrollen från sidan, och först efter den fjärde kontrollen når vägen en grön ruta för att läsa claims.

Använda AWS-säkerhet för utvecklare

Verifiera innan du läser

Verifiering kommer först

  • JWKS: JSON Web Key Set, utfärdarens publika signeringsnycklar
  • Signaturen kontrolleras mot dessa nycklar

 

Sedan tre claims

  • iss: din user pool
  • aud i en ID-token, client_id i en access-token
  • exp: fortfarande giltig

Ett vertikalt grinddiagram. En token anländer och passerar fyra bockade kontroller i ordning: signatur, utfärdare, mottagare och utgångstid. Utfärdarens publika nycklar matas in i signaturkontrollen från sidan, och först efter den fjärde kontrollen når vägen en grön ruta för att läsa claims.

Använda AWS-säkerhet för utvecklare

En verifierad token kan ändå vara fel

Två matchande kort sida vid sida. ID-token-kortet är märkt som en identitetstoken, visar klient-ID:t som hålls i aud-claimet, och anger att det inte har något scope, ovanför en grå ruta för vem användaren är. Access-token-kortet är märkt som en åtkomsttoken, visar klient-ID:t i sitt eget client_id-claim, och anger att det har ett scope, ovanför en orange ruta för vad de får anropa. En streckad remsa under båda korten anger att Cognito-grupp-claimet finns i båda tokens.

Verifierad, men ändå fel token

Använda AWS-säkerhet för utvecklare

En verifierad token kan ändå vara fel

Två matchande kort sida vid sida. ID-token-kortet är märkt som en identitetstoken, visar klient-ID:t som hålls i aud-claimet, och anger att det inte har något scope, ovanför en grå ruta för vem användaren är. Access-token-kortet är märkt som en åtkomsttoken, visar klient-ID:t i sitt eget client_id-claim, och anger att det har ett scope, ovanför en orange ruta för vad de får anropa. En streckad remsa under båda korten anger att Cognito-grupp-claimet finns i båda tokens.

Verifierad, men ändå fel token

token_use anger vilken sort

  • cognito:groups finns i båda sorterna och är inte ett scope

  • scope: vad token får anropa

  • sub: vilken användare, och den ändras aldrig
  • Identitet är inte behörighet
Använda AWS-säkerhet för utvecklare

Nu kör vi en övning!

Använda AWS-säkerhet för utvecklare

Preparing Video For Download...