Verwaltung des Ablaufs und der Zwischenspeicherung von Benutzerpool-Tokens - Amazon Cognito

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwaltung des Ablaufs und der Zwischenspeicherung von Benutzerpool-Tokens

Ihre App muss jedes Mal, wenn Sie ein neues JSON Web Token (JWT) abrufen möchten, eine der folgenden Anforderungen erfolgreich abschließen.

  • Fordern Sie Kundenanmeldeinformationen oder eine Autorisierungscode-Erteilung von Token-Endpunkt an.

  • Beantragen Sie auf Ihren verwalteten Anmeldeseiten eine implizite Gewährung.

  • Authentifizieren Sie einen lokalen Benutzer in einer Amazon Cognito Cognito-API-Anfrage wie. InitiateAuth

Sie können Ihren Benutzerpool so konfigurieren, dass Tokens in Minuten, Stunden oder Tagen ablaufen. Um die Leistung und Verfügbarkeit Ihrer App sicherzustellen, verwenden Sie Amazon Cognito Cognito-Token für etwa 75% der Token-Lebensdauer und rufen Sie erst dann neue Token ab. Eine Zwischenspeicherungslösung, die Sie für Ihre App erstellen, hält Token verfügbar und verhindert die Ablehnung von Anfragen durch Amazon Cognito, wenn Ihre Anforderungsrate zu hoch ist. Eine clientseitige App muss Token in einem Speichercache ablegen. Eine serverseitige App kann einen verschlüsselten Cache-Mechanismus zum Speichern von Token hinzufügen.

Wenn Ihr Benutzerpool ein hohes Volumen an Benutzern oder machine-to-machine Aktivitäten generiert, stoßen Sie möglicherweise auf die Beschränkungen, die Amazon Cognito für die Anzahl der Token-Anfragen festlegt, die Sie stellen können. Wenn Sie die Anzahl der Anfragen, die Sie an Amazon-Cognito-Endpunkte stellen, reduzieren möchten, können Sie Authentifizierungsdaten entweder sicher speichern und wiederverwenden oder exponentielle Backoffs und Wiederholungsversuche implementieren.

Authentifizierungsdaten stammen aus zwei Klassen von Endpunkten. Zu den Amazon Cognito OAuth2.0-Endpunkten gehört der Token-Endpunkt, der Kundenanmeldedaten und verwaltete Anfragen von Anmeldeautorisierungscodes bearbeitet. Service-Endpunkte beantworten Benutzerpool-API-Anfragen wie InitiateAuth und RespondToAuthChallenge. Jede Art von Anfrage hat eigene Grenzen. Weitere Informationen zu Limits finden Sie unter Kontingente in Amazon Cognito.

Zwischenspeichern von machine-to-machine Zugriffstoken mit Amazon API Gateway

Mit dem API-Gateway-Token-Caching kann Ihre App als Reaktion auf Ereignisse skaliert werden, die die standardmäßige Quote für die Anforderungsrate von Amazon Cognito OAuth Cognito-Endpunkten überschreiten.

Ein Diagramm eines API Gateway, das einen Cache mit Zugriffstoken für M2M verwaltet. Der API-Proxy verarbeitet die Token-Anfrage und gibt ein zwischengespeichertes Token zurück, falls eines bereits gültig ist.

Sie können die Zugriffstoken zwischenspeichern, sodass Ihre App nur dann ein neues Zugriffstoken anfordert, wenn ein zwischengespeichertes Token abgelaufen ist. Andernfalls gibt Ihr Caching-Endpunkt ein Token aus dem Cache zurück. Dadurch wird ein zusätzlicher Aufruf eines Amazon-Cognito-API-Endpunkts verhindert. Wenn Sie Amazon API Gateway als Proxy für Token-Endpunkt verwenden, reagiert Ihre API auf die meisten Anfragen, die andernfalls zu Ihrem Anforderungskontingent beitragen würden, und vermeidet erfolglose Anfragen aufgrund der Kontingentbegrenzung.

Die folgende API-Gateway-basierte Lösung bietet eine Low-Code-/No-Code-Implementierung von Token-Caching mit niedriger Latenz. API Gateway APIs werden bei der Übertragung und optional im Ruhezustand verschlüsselt. Ein API-Gateway-Cache eignet sich ideal für die Gewährung von OAuth 2.0-Client-Anmeldeinformationen. Dabei handelt es sich um einen häufig großvolumigen Grant-Typ, der Zugriffstoken für Autorisierungs machine-to-machine - und Microservice-Sitzungen generiert. In einem Fall wie einem Anstieg des Datenverkehrs, der dazu führt, dass Ihre Microservices horizontal skaliert werden, kann es passieren, dass viele Systeme dieselben Client-Anmeldeinformationen verwenden, und zwar in einem Umfang, der die AWS Anforderungsratenbegrenzung Ihres Benutzerpools oder App-Clients überschreitet. Zur Erhaltung der Verfügbarkeit von Apps und einer geringen Latenz hat sich eine Caching-Lösung in solchen Szenarien als Methode bewährt.

Bei dieser Lösung definieren Sie einen Cache in Ihrer API, um für jede Kombination aus OAuth Bereichen und App-Client, die Sie in Ihrer App anfordern möchten, ein separates Zugriffstoken zu speichern. Wenn Ihre App eine Anfrage stellt, die mit dem Cache-Schlüssel übereinstimmt, antwortet Ihre API mit einem Zugriffstoken, das Amazon Cognito aufgrund der ersten Anfrage ausgegeben hat, die mit dem Cache-Schlüssel übereinstimmt. Wenn die Dauer Ihres Cache-Schlüssels abläuft, leitet Ihre API die Anforderung an Ihren Tokenendpunkt weiter und speichert ein neues Zugriffstoken im Cache.

Anmerkung

Die Dauer Ihres Cache-Schlüssels muss kürzer sein als die Zugriffstokendauer Ihres App-Clients.

Der Cache-Schlüssel ist eine Kombination aus den OAuth Bereichen, die Sie im scope Parameter im Anfragetext anfordern, und dem Authorization Header in der Anfrage. Der Authorization-Header enthält die App-Client-ID und den geheimen Client-Schlüssel. Sie müssen keine zusätzliche Logik in Ihrer App implementieren, um diese Lösung zu verwenden. Sie müssen Ihre Konfiguration nur aktualisieren, um den Pfad zu Ihrem Tokenendpunkt des Benutzerpools zu ändern.

Sie können Token-Caching auch mit ElastiCache (Redis OSS) implementieren. Für die differenzierte Steuerung mit AWS Identity and Access Management (IAM)-Richtlinien erwägen Sie die Verwendung eines Amazon-DynamoDB-Caches.

Anmerkung

Das Zwischenspeichern im API Gateway ist mit zusätzlichen Kosten verbunden. Weitere Informationen finden Sie unter Preise.

So richten Sie einen Caching-Proxy mit API Gateway ein

  1. Öffnen Sie die API-Gateway-Konsole und erstellen Sie eine REST-API.

  2. Erstellen Sie eine POST-Methode in Resources (Ressourcen).

    1. Wählen Sie HTTP als Integration type (Integrationstyp) aus.

    2. Wählen Sie Use HTTP proxy integration (HTTP-Proxy-Integration verwenden) aus.

    3. Geben Sie als Endpoint URL (Endpunkt-URL) https://<your user pool domain>/oauth2/token ein.

  3. Konfigurieren Sie den Cache-Schlüssel in Resources (Ressourcen).

    1. Bearbeiten Sie Method request (Methodenanforderung) Ihrer POST-Methode.

    2. Legen Sie den scope-Parameter und den Authorization-Header als Caching-Schlüssel fest.

      1. Fügen Sie unter URL query string parameters (URL-Abfragezeichenfolgenparameter) eine Abfragezeichenfolge hinzu und wählen Sie Caching (Zwischenspeichern) für die scope-Zeichenfolge aus.

      2. Fügen Sie unter HTTP request headers (HTTP-Anforderungsheader) einen Header hinzu und wählen Sie Caching für den Authorization-Header aus.

  4. Konfigurieren Sie das Caching unter Stages (Phasen).

    1. Wählen Sie die Phase aus, die Sie ändern möchten, und wählen Sie in den Stufendetails die Option Bearbeiten aus.

    2. Aktivieren Sie unter Zusätzliche Einstellungen, Cache-Einstellungen die Option API-Cache bereitstellen.

    3. Wählen Sie einen Wert für Cache capacity (Cache-Kapazität) aus. Eine höhere Cachekapazität verbessert die Leistung, ist jedoch mit zusätzlichen Kosten verbunden.

    4. Deaktivieren Sie das Kontrollkästchen Autorisierung erforderlich. Wählen Sie Weiter aus.

    5. API Gateway wendet Cache-Richtlinien nur auf GET-Methoden aus der Stufenebene an. Sie müssen eine Überschreibung der Cache-Richtlinie auf Ihre POST-Methode anwenden.

      Erweitern Sie die Phase, die Sie konfiguriert haben, und wählen Sie die POST Methode aus. Um Cache-Einstellungen für die Methode zu erstellen, wählen Sie Create Override aus.

    6. Aktivieren Sie die Option Methoden-Cache aktivieren.

    7. Geben Sie einen Cache time-to-live (TTL) von 3600 Sekunden ein. Wählen Sie Save (Speichern) aus.

  5. Notieren Sie sich unter Stages (Phasen) die Invoke URL (Aufruf-URL).

  6. Aktualisieren Sie Ihre App auf POST-Tokenanfragen an die Invoke URL (Aufruf-URL) Ihrer API anstatt an den /oauth2/token-Endpunkt Ihres Benutzerpools.