Zwischenspeicherung von Token - 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.

Zwischenspeicherung von Token

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.

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.

  • Fordern Sie eine implizite Erteilung von Ihrer gehosteten Benutzeroberfläche an.

  • 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. Zur Sicherstellung der Leistung und Verfügbarkeit Ihrer App verwenden Sie Amazon-Cognito-Token, bis sie ablaufen, 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. OAuth-2.0-Endpunkte von Amazon Cognito umfassen den Tokenendpunkt, der Client-Anmeldeinformationen und Autorisierungscode-Anforderungen der gehosteten Benutzeroberfläche bereitstellt. 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 Zwischenspeichern von API-Gateway-Token kann Ihre App bei Ereignissen abskalieren, die das Standardkontingent für die Anforderungsrate von OAuth-Endpunkte von Amazon Cognito überschreiten.

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 während der Übertragung und optional im Ruhezustand verschlüsselt. Ein API-Gateway-Cache ist ideal für die Gewährung von OAuth 2.0-Client-Anmeldeinformationen, eine häufig umfangreiche Art der Gewährung, die Zugriffstoken für Autorisierungs- und Microservice-Sitzungen generiert. machine-to-machine 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.

In dieser Lösung definieren Sie einen Cache in Ihrer API, um ein separates Zugriffstoken für jede Kombination aus OAuth-Bereichen und App-Client zu speichern, die Sie in Ihrer App anfordern möchten. 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 der OAuth-Bereiche, die Sie im URL-Parameter scope und im Authorization-Header der Anfrage anfordern. 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 for Redis implementieren. ElastiCache 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.

    2. Wählen Sie unter Settings (Einstellungen) die Option Enable API cache (API-Cache aktivieren) aus.

    3. Wählen Sie einen Wert für Cache capacity (Cache-Kapazität) aus.

    4. Wählen Sie einen Cache time-to-live (TTL) von mindestens 3600 Sekunden.

    5. Deaktivieren Sie das Kontrollkästchen Autorisierung erforderlich.

  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.