User pooly, identity pooly a JWT

Zabezpečení AWS pro vývojáře

Rahul Singh

Technical Product Manager

Cognito je dvě služby pod jedním názvem

Amazon Cognito

  • Spravovaná identita pro uživatele tvé aplikace
  • Jeden název, dvě oddělené služby

Nad přerušovaně ohraničenou oblastí s popiskem Amazon Cognito jsou dvě otázky. Uvnitř oblasti jsou vedle sebe dva modré panely: user pool popsaný jako tvůj adresář uživatelů a identity pool popsaný jako zprostředkovatel přihlašovacích údajů. Čáry z obou panelů se sbíhají do přerušovaně ohraničeného oranžového rámečku dole s poznámkou, že mnoho aplikací využívá obě služby.

Zabezpečení AWS pro vývojáře

Cognito je dvě služby pod jedním názvem

Amazon Cognito

  • Spravovaná identita pro uživatele tvé aplikace
  • Jeden název, dvě oddělené služby

Co z toho potřebuješ?

  • Přihlašování a uživatelské profily: user pool
  • Prohlížeč nebo mobil volající přímo AWS: identity pool

Nad přerušovaně ohraničenou oblastí s popiskem Amazon Cognito jsou dvě otázky. Uvnitř oblasti jsou vedle sebe dva modré panely: user pool popsaný jako tvůj adresář uživatelů a identity pool popsaný jako zprostředkovatel přihlašovacích údajů. Čáry z obou panelů se sbíhají do přerušovaně ohraničeného oranžového rámečku dole s poznámkou, že mnoho aplikací využívá obě služby.

Zabezpečení AWS pro vývojáře

User pool přihlašuje uživatele

Spravovaný adresář uživatelů

  • Registrace a přihlášení
  • Obnovení hesla
  • Vícefaktorové ověřování

Svislý tok: uživatel aplikace se přihlásí do user poolu, který ukládá hesla, a pool vrátí rámeček s ID tokenem, access tokenem a refresh tokenem

Zabezpečení AWS pro vývojáře

User pool přihlašuje uživatele

Spravovaný adresář uživatelů

  • Registrace a přihlášení
  • Obnovení hesla
  • Vícefaktorové ověřování

 

Po úspěchu tři tokeny

Svislý tok: uživatel aplikace se přihlásí do user poolu, který ukládá hesla, a pool vrátí rámeček s ID tokenem, access tokenem a refresh tokenem

Zabezpečení AWS pro vývojáře

User pool přihlašuje uživatele

Spravovaný adresář uživatelů

  • Registrace a přihlášení
  • Obnovení hesla
  • Vícefaktorové ověřování

 

Po úspěchu tři tokeny

  • ID token: kdo uživatel je
  • Access token: co smí volat
  • Refresh token: pro získání nových tokenů později

Svislý tok: uživatel aplikace se přihlásí do user poolu, který ukládá hesla, a pool vrátí rámeček s ID tokenem, access tokenem a refresh tokenem

Zabezpečení AWS pro vývojáře

Identity pool vydává přihlašovací údaje AWS

Tokeny nejsou přihlašovací údaje

  • Důkaz identity pro tvou aplikaci
  • Nejsou to přihlašovací údaje pro přístup ke službám AWS

 

Identity pool: důvěryhodný token dovnitř, přihlašovací údaje ven

Svislý tok se stejnou strukturou jako diagram user poolu: důvěryhodný token se předloží identity poolu, který ověří, kdo jej vydal, a vrátí AWS přihlašovací údaje omezené na jednu roli, jejichž platnost vyprší

Zabezpečení AWS pro vývojáře

Identity pool vydává přihlašovací údaje AWS

Tokeny nejsou přihlašovací údaje

  • Důkaz identity pro tvou aplikaci
  • Nejsou to přihlašovací údaje pro přístup ke službám AWS

 

Identity pool: důvěryhodný token dovnitř, přihlašovací údaje ven

  • Build job vyměnil OIDC token
  • Důkaz, který máš, vyměněný za klíčovou kartu

Svislý tok se stejnou strukturou jako diagram user poolu: důvěryhodný token se předloží identity poolu, který ověří, kdo jej vydal, a vrátí AWS přihlašovací údaje omezené na jednu roli, jejichž platnost vyprší

Zabezpečení AWS pro vývojáře

Jedna aplikace, obě části

Prohlížeč využívající obě služby

  1. Přihlásit se, získat token
  2. Poslat token svému API

Bearer token: kdo ho má, ten ho použije

Svislý tok. Prohlížeč se přihlásí u user poolu, který vrátí token. Tento jeden token se pak rozdělí dvěma směry: vlevo k tvému API a vpravo k identity poolu. Identity pool vrátí přihlašovací údaje a právě ty se dostanou až ke službě S3.

Zabezpečení AWS pro vývojáře

Jedna aplikace, obě části

Prohlížeč využívající obě služby

  1. Přihlásit se, získat token
  2. Poslat token svému API
  3. Vyměnit stejný token za přihlašovací údaje

Svislý tok. Prohlížeč se přihlásí u user poolu, který vrátí token. Tento jeden token se pak rozdělí dvěma směry: vlevo k tvému API a vpravo k identity poolu. Identity pool vrátí přihlašovací údaje a právě ty se dostanou až ke službě S3.

Zabezpečení AWS pro vývojáře

Jedna aplikace, obě části

Prohlížeč využívající obě služby

  1. Přihlásit se, získat token
  2. Poslat token svému API
  3. Vyměnit stejný token za přihlašovací údaje
  4. Získat přístup k S3 pomocí těchto údajů

Tokeny pro tvůj kód, přihlašovací údaje pro AWS

Svislý tok. Prohlížeč se přihlásí u user poolu, který vrátí token. Tento jeden token se pak rozdělí dvěma směry: vlevo k tvému API a vpravo k identity poolu. Identity pool vrátí přihlašovací údaje a právě ty se dostanou až ke službě S3.

Zabezpečení AWS pro vývojáře

Token je text s podpisem

Tři části spojené tečkami a označené Header, Payload a Signature. Na payloadu je otevřený zámek a závorka pod prvními dvěma částmi ukazuje, kam až sahá podpis.

JWT: JSON Web Token

  • Claims: označená tvrzení o uživateli
Zabezpečení AWS pro vývojáře

Token je text s podpisem

Tři části spojené tečkami a označené Header, Payload a Signature. Na payloadu je otevřený zámek a závorka pod prvními dvěma částmi ukazuje, kam až sahá podpis.

JWT: JSON Web Token

  • Claims: označená tvrzení o uživateli
  • Zakódovaný, nikoli zašifrovaný
  • Kdokoli si ho může přečíst a kdokoli ho může změnit
Zabezpečení AWS pro vývojáře

Nejdřív ověř, pak čti

Nejprve ověření

  • JWKS: JSON Web Key Set, veřejné podpisové klíče vydavatele
  • Podpis se ověřuje oproti těmto klíčům

Svislý diagram brány. Token projde postupně čtyřmi zaškrtnutými kontrolami: podpis, vydavatel, příjemce a platnost. Veřejné klíče vydavatele vstupují do kontroly podpisu ze strany a teprve za čtvrtou kontrolou se cesta dostane k zelenému rámečku pro čtení claimů.

Zabezpečení AWS pro vývojáře

Nejdřív ověř, pak čti

Nejprve ověření

  • JWKS: JSON Web Key Set, veřejné podpisové klíče vydavatele
  • Podpis se ověřuje oproti těmto klíčům

 

Pak tři claimy

  • iss: tvůj user pool
  • aud u ID tokenu, client_id u access tokenu
  • exp: platnost stále trvá

Svislý diagram brány. Token projde postupně čtyřmi zaškrtnutými kontrolami: podpis, vydavatel, příjemce a platnost. Veřejné klíče vydavatele vstupují do kontroly podpisu ze strany a teprve za čtvrtou kontrolou se cesta dostane k zelenému rámečku pro čtení claimů.

Zabezpečení AWS pro vývojáře

Ověřený token může být přesto špatný

Dvě shodně uspořádané karty vedle sebe. Karta ID tokenu je označená jako identity token, ukazuje client ID uložené v claimu audience a poznámku, že nemá žádný scope, nad šedým rámečkem pro to, kdo uživatel je. Karta access tokenu je označená jako access token, ukazuje client ID uložené ve vlastním claimu client identifier a poznámku, že má scope, nad oranžovým rámečkem pro to, co smí volat. Přerušovaný pruh pod oběma kartami uvádí, že claim Cognito groups se objevuje v obou tokenech.

Ověřený, a přesto špatný token

Zabezpečení AWS pro vývojáře

Ověřený token může být přesto špatný

Dvě shodně uspořádané karty vedle sebe. Karta ID tokenu je označená jako identity token, ukazuje client ID uložené v claimu audience a poznámku, že nemá žádný scope, nad šedým rámečkem pro to, kdo uživatel je. Karta access tokenu je označená jako access token, ukazuje client ID uložené ve vlastním claimu client identifier a poznámku, že má scope, nad oranžovým rámečkem pro to, co smí volat. Přerušovaný pruh pod oběma kartami uvádí, že claim Cognito groups se objevuje v obou tokenech.

Ověřený, a přesto špatný token

token_use určuje typ

  • cognito:groups se objevuje u obou typů a není to scope

  • scope: co token smí volat

  • sub: který uživatel, a nikdy se nemění
  • Identita není oprávnění
Zabezpečení AWS pro vývojáře

Pojďme cvičit!

Zabezpečení AWS pro vývojáře

Preparing Video For Download...