User Pools, Identity Pools und JWTs

AWS-Sicherheit für Entwickler:innen nutzen

Rahul Singh

Technical Product Manager

Cognito: zwei Dienste unter einem Namen

Amazon Cognito

  • Verwaltete Identität für die Nutzer:innen deiner Anwendung
  • Ein Name, zwei getrennte Dienste

Zwei Fragen stehen über einer gestrichelten Umrandung mit der Beschriftung Amazon Cognito. Darin zwei blaue Panels nebeneinander: ein User Pool als dein Benutzerverzeichnis und ein Identity Pool als Berechtigungsbroker. Linien von beiden führen zu einer gestrichelten orangefarbenen Box unten: Viele Anwendungen nutzen beides.

AWS-Sicherheit für Entwickler:innen nutzen

Cognito: zwei Dienste unter einem Namen

Amazon Cognito

  • Verwaltete Identität für die Nutzer:innen deiner Anwendung
  • Ein Name, zwei getrennte Dienste

Welchen brauchst du?

  • Anmeldung und Profile: User Pool
  • Browser oder Mobilgerät ruft AWS direkt auf: Identity Pool

Zwei Fragen stehen über einer gestrichelten Umrandung mit der Beschriftung Amazon Cognito. Darin zwei blaue Panels nebeneinander: ein User Pool als dein Benutzerverzeichnis und ein Identity Pool als Berechtigungsbroker. Linien von beiden führen zu einer gestrichelten orangefarbenen Box unten: Viele Anwendungen nutzen beides.

AWS-Sicherheit für Entwickler:innen nutzen

Ein User Pool meldet Nutzer an

Ein verwaltetes Benutzerverzeichnis

  • Registrierung und Anmeldung
  • Passwortzurücksetzung
  • Multi-Faktor-Authentifizierung

Vertikaler Ablauf: Ein App-Nutzer meldet sich an einem User Pool an, der die Passwörter hält; der Pool gibt eine Box mit ID-Token, Access-Token und Refresh-Token zurück

AWS-Sicherheit für Entwickler:innen nutzen

Ein User Pool meldet Nutzer an

Ein verwaltetes Benutzerverzeichnis

  • Registrierung und Anmeldung
  • Passwortzurücksetzung
  • Multi-Faktor-Authentifizierung

 

Bei Erfolg: drei Tokens

Vertikaler Ablauf: Ein App-Nutzer meldet sich an einem User Pool an, der die Passwörter hält; der Pool gibt eine Box mit ID-Token, Access-Token und Refresh-Token zurück

AWS-Sicherheit für Entwickler:innen nutzen

Ein User Pool meldet Nutzer an

Ein verwaltetes Benutzerverzeichnis

  • Registrierung und Anmeldung
  • Passwortzurücksetzung
  • Multi-Faktor-Authentifizierung

 

Bei Erfolg: drei Tokens

  • ID-Token: wer der Nutzer ist
  • Access-Token: was er aufrufen darf
  • Refresh-Token: später neue holen

Vertikaler Ablauf: Ein App-Nutzer meldet sich an einem User Pool an, der die Passwörter hält; der Pool gibt eine Box mit ID-Token, Access-Token und Refresh-Token zurück

AWS-Sicherheit für Entwickler:innen nutzen

Ein Identity Pool stellt AWS-Zugangsdaten aus

Tokens sind keine Zugangsdaten

  • Identitätsnachweis für deine App
  • Keine Zugangsdaten für AWS-Dienste

 

Identity Pools: vertrauenswürdiges Token rein, Zugangsdaten raus

Vertikaler Ablauf mit derselben Geometrie wie beim User-Pool-Diagramm: Ein vertrauenswürdiges Token wird einem Identity Pool vorgelegt, der den Aussteller prüft und befristete AWS-Zugangsdaten für eine Rolle zurückgibt

AWS-Sicherheit für Entwickler:innen nutzen

Ein Identity Pool stellt AWS-Zugangsdaten aus

Tokens sind keine Zugangsdaten

  • Identitätsnachweis für deine App
  • Keine Zugangsdaten für AWS-Dienste

 

Identity Pools: vertrauenswürdiges Token rein, Zugangsdaten raus

  • Ein Build-Job tauschte ein OIDC-Token
  • Nachweis in der Hand, getauscht gegen eine Schlüsselkarte

Vertikaler Ablauf mit derselben Geometrie wie beim User-Pool-Diagramm: Ein vertrauenswürdiges Token wird einem Identity Pool vorgelegt, der den Aussteller prüft und befristete AWS-Zugangsdaten für eine Rolle zurückgibt

AWS-Sicherheit für Entwickler:innen nutzen

Eine App, beide Teile

Ein Browser nutzt beides

  1. Anmelden, Token erhalten
  2. Dieses Token an deine API senden

Bearer-Token: Wer es hat, kann es nutzen

Ein vertikaler Ablauf. Ein Browser meldet sich bei einem User Pool an und erhält ein Token. Dieses eine Token verzweigt nach links zu deiner API und nach rechts zu einem Identity Pool. Der Identity Pool gibt Zugangsdaten zurück, und mit diesen erreicht man S3.

AWS-Sicherheit für Entwickler:innen nutzen

Eine App, beide Teile

Ein Browser nutzt beides

  1. Anmelden, Token erhalten
  2. Dieses Token an deine API senden
  3. Dasselbe Token gegen Zugangsdaten tauschen

Ein vertikaler Ablauf. Ein Browser meldet sich bei einem User Pool an und erhält ein Token. Dieses eine Token verzweigt nach links zu deiner API und nach rechts zu einem Identity Pool. Der Identity Pool gibt Zugangsdaten zurück, und mit diesen erreicht man S3.

AWS-Sicherheit für Entwickler:innen nutzen

Eine App, beide Teile

Ein Browser nutzt beides

  1. Anmelden, Token erhalten
  2. Dieses Token an deine API senden
  3. Dasselbe Token gegen Zugangsdaten tauschen
  4. Mit diesen Zugangsdaten S3 erreichen

Tokens an deinen Code, Zugangsdaten an AWS

Ein vertikaler Ablauf. Ein Browser meldet sich bei einem User Pool an und erhält ein Token. Dieses eine Token verzweigt nach links zu deiner API und nach rechts zu einem Identity Pool. Der Identity Pool gibt Zugangsdaten zurück, und mit diesen erreicht man S3.

AWS-Sicherheit für Entwickler:innen nutzen

Ein Token ist Text mit Signatur

Drei Segmente, durch Punkte verbunden, beschriftet mit Header, Payload und Signature. Ein offenes Vorhängeschloss liegt auf der Payload, und eine Klammer unter den ersten beiden Segmenten zeigt die Reichweite der Signatur.

JWT: JSON Web Token

  • Claims: beschriftete Aussagen über den Nutzer
AWS-Sicherheit für Entwickler:innen nutzen

Ein Token ist Text mit Signatur

Drei Segmente, durch Punkte verbunden, beschriftet mit Header, Payload und Signature. Ein offenes Vorhängeschloss liegt auf der Payload, und eine Klammer unter den ersten beiden Segmenten zeigt die Reichweite der Signatur.

JWT: JSON Web Token

  • Claims: beschriftete Aussagen über den Nutzer
  • Kodiert, nicht verschlüsselt
  • Jede:r kann es lesen und jede:r kann es ändern
AWS-Sicherheit für Entwickler:innen nutzen

Verifiziere, bevor du liest

Erst verifizieren

  • JWKS: JSON Web Key Set, öffentliche Signaturschlüssel des Ausstellers
  • Signatur gegen diese Schlüssel geprüft

Ein vertikales Tor-Diagramm. Ein Token kommt an und passiert vier Häkchen-Prüfungen in Reihenfolge: Signatur, Aussteller, Audience und Ablauf. Die öffentlichen Schlüssel des Ausstellers speisen die Signaturprüfung seitlich. Erst nach der vierten Prüfung geht der Pfad zu einer grünen Box zum Lesen der Claims.

AWS-Sicherheit für Entwickler:innen nutzen

Verifiziere, bevor du liest

Erst verifizieren

  • JWKS: JSON Web Key Set, öffentliche Signaturschlüssel des Ausstellers
  • Signatur gegen diese Schlüssel geprüft

 

Dann drei Claims

  • iss: dein User Pool
  • aud bei ID-Token, client_id bei Access-Token
  • exp: noch gültig

Ein vertikales Tor-Diagramm. Ein Token kommt an und passiert vier Häkchen-Prüfungen in Reihenfolge: Signatur, Aussteller, Audience und Ablauf. Die öffentlichen Schlüssel des Ausstellers speisen die Signaturprüfung seitlich. Erst nach der vierten Prüfung geht der Pfad zu einer grünen Box zum Lesen der Claims.

AWS-Sicherheit für Entwickler:innen nutzen

Ein verifiziertes Token kann trotzdem falsch sein

Zwei passende Karten nebeneinander. Die ID-Token-Karte ist als Identitätstoken markiert, zeigt die Client-ID im Audience-Claim und vermerkt, dass sie keinen Scope trägt, über einer grauen Box „wer der Nutzer ist". Die Access-Token-Karte ist als Zugriffstoken markiert, zeigt die Client-ID in ihrem eigenen Bezeichner-Claim und vermerkt, dass sie einen Scope trägt, über einer orangefarbenen Box „was er aufrufen darf". Ein gestrichelter Streifen darunter weist darauf hin, dass der Cognito-Gruppen-Claim in beiden Tokens erscheint.

Verifiziert und trotzdem das falsche Token

AWS-Sicherheit für Entwickler:innen nutzen

Ein verifiziertes Token kann trotzdem falsch sein

Zwei passende Karten nebeneinander. Die ID-Token-Karte ist als Identitätstoken markiert, zeigt die Client-ID im Audience-Claim und vermerkt, dass sie keinen Scope trägt, über einer grauen Box „wer der Nutzer ist". Die Access-Token-Karte ist als Zugriffstoken markiert, zeigt die Client-ID in ihrem eigenen Bezeichner-Claim und vermerkt, dass sie einen Scope trägt, über einer orangefarbenen Box „was er aufrufen darf". Ein gestrichelter Streifen darunter weist darauf hin, dass der Cognito-Gruppen-Claim in beiden Tokens erscheint.

Verifiziert und trotzdem das falsche Token

token_use sagt, welcher Typ

  • cognito:groups steckt in beiden Typen und ist kein Scope

  • scope: was das Token aufrufen darf

  • sub: welcher Nutzer, und es ändert sich nie
  • Identität ist keine Berechtigung
AWS-Sicherheit für Entwickler:innen nutzen

Lass uns üben!

AWS-Sicherheit für Entwickler:innen nutzen

Preparing Video For Download...