Direkt zum Inhalt

Wie autorisiere ich den Zugriff auf API Gateway-APIs mithilfe benutzerdefinierter Bereiche in Amazon Cognito?

Lesedauer: 5 Minute
0

Ich möchte den Zugriff auf meine Amazon API Gateway-API-Ressourcen mithilfe benutzerdefinierter Bereiche in einem Amazon Cognito-Benutzerpool autorisieren.

Kurzbeschreibung

Definiere einen Ressourcenserver mit benutzerdefinierten Bereichen in deinem Amazon Cognito-Benutzerpool. Erstelle und konfiguriere dann einen Amazon Cognito-Autorisierer für deine API Gateway-API, um Anfragen an deine API-Ressourcen zu authentifizieren.

Wenn du über verschiedene App-Clients verfügst, die unterschiedliche Zugriffsebenen auf deine API-Ressourcen benötigen, kannst du unterschiedliche Zugriffsbereiche definieren. Berücksichtige, welche Niveaus von granularem Zugriff die verschiedenen App-Clients möglicherweise benötigen, und plane anschließend entsprechend.

Lösung

Sorge für die folgenden Voraussetzungen:

Deinem Benutzerpool einen Ressourcenserver mit benutzerdefinierten Bereichen hinzufügen

1.    Öffne die Amazon Cognito-Konsole.

2.    Definiere den Ressourcenserver und die benutzerdefinierten Bereiche.

3.    Nachdem du den Ressourcenserver erstellt hast, wähle die Registerkarte App-Integration aus.

4.    Wähle im Bereich App-Clients und Analysen deinen App-Client aus.

5.    Wähle im Bereich Gehostete Benutzeroberfläche die Option Bearbeiten aus. Führe danach die folgenden Schritte aus:
Wähle für die Dropdown-Liste OAuth 2.0-Gewährungs-Typen die Option Implizite Gewährung aus.
Wähle in der Dropdown-Liste Benutzerdefinierte Bereiche den benutzerdefinierten Bereich aus, den du definiert hast.
Hinweis: Das Format für einen benutzerdefinierten Bereich ist resourceServerIdentifier/scopeName. Wenn ein Client einen benutzerdefinierten Bereich in einem OAuth 2.0-Flow anfordert, muss die Anfrage die vollständige Kennung für den Bereich in diesem Format enthalten.

6.    Wähle Änderungen speichern aus.

Wenn deine mobilen Anwendungen über eine serverseitige Komponente verfügen, verwende den Autorisierungscode-Gewährungs-Flow und den Proof Key for Code Exchange (PKCE). Mit dem Autorisierungscode-Gewährungs-Flow sind die Tokens sicherer und werden niemals direkt einem Endbenutzer zugänglich gemacht.

Wenn dein Setup keine serverseitige Logik enthält, kannst du den impliziten Gewährungs-Flow verwenden. Die implizite Gewährung generiert keine Aktualisierungstoken. Hierdurch wird verhindert, dass Aktualisierungstoken dem Client zugänglich sind. Aktualisierungstoken haben eine längere Gültigkeit und rufen neuere ID- und Zugriffstoken ab.

Wichtig: Speichere die Aktualisierungstoken nicht in einer clientseitigen Umgebung.

Weitere Informationen findest du unter Terminologie zu App-Client-Einstellungen. Weitere Informationen zu OAuth 2.0-Gewährungen für Amazon Cognito-Benutzerpools findest du unter Grundlegendes zu OAuth 2.0-Gewährungen für Amazon Cognito-Benutzerpools.

Einen Autorisierer erstellen und in deine API integrieren

Um die folgenden Schritte abzuschließen, folge den Anweisungen zur Integration einer REST-API in einen Amazon Cognito-Benutzerpool.

1.    Um den Autorisierer zu erstellen, folge den Anweisungen unter So erstellst du einen COGNITO_USER_POOLS-Autorisierer mithilfe der API-Gateway-Konsole.
Hinweis: Nach der Erstellung erscheint in der Konsole eine Option zum Testen deines Autorisierers. Dies erfordert ein Identitätstoken. Informationen zur Verwendung eines Zugriffstokens, um dein Setup außerhalb der Konsole zu testen, findest du im Abschnitt Ein Zugriffstoken für einen Benutzerpool zum Testen abrufen dieses Artikels.

2.    Um den Autorisierer in deine API zu integrieren, folge den Anweisungen unter So konfigurierst du einen COGNITO_USER_POOLS-Autorisierer für Methoden.
Hinweis: Gib für OAuth-Bereiche die vollständige Kennung für einen benutzerdefinierten Bereich im Format resourceServerIdentifier/scopeName ein.

3.    Stelle deine API bereit.

Ein Zugriffstoken für den Benutzerpool zum Testen abrufen

Verwende die gehostete Web-Benutzeroberfläche für deinen Benutzerpool, um dich anzumelden und ein Zugriffstoken vom Amazon Cognito-Autorisierungsserver abzurufen. Verwende alternativ die OAuth 2.0-Endpunktimplementierungen, die in den AWS-SDKs für Mobilgeräte und das Web zur Verfügung stehen, um ein Zugriffstoken abzurufen.

Hinweis: Wenn ein App-Client eine Authentifizierung über die gehostete Web-Benutzeroberfläche anfordert, kann die Anforderung eine beliebige Kombination von vom System reservierten Bereichen oder benutzerdefinierten Bereichen umfassen. Wenn der Client keine Bereiche anfordert, gibt der Authentifizierungsserver ein Zugriffstoken zurück, das alle Bereiche enthält, die dem Client zugeordnet sind. Achte beim Entwerfen deines App-Clients darauf, dass der Client die vorgesehenen Bereiche in die Anfrage einbezieht, um zu vermeiden, dass unnötige Berechtigungen erteilt werden.

1.    Gib die folgende URL in deinen Webbrowser ein:
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
Hinweis: Ersetze yourDomainPrefix und Region durch die Werte für den Benutzerpool. Du findest diese in der Amazon Cognito-Konsole auf der Registerkarte Domain-Name für deinen Benutzerpool.
Ersetze yourClientId durch die ID des App-Clients und redirectUrl durch die Callback-URL des App-Clients. Du findest diese in der Konsole auf der Registerkarte App-Client-Einstellungen für deinen Benutzerpool. Weitere Informationen findest du unter Anmeldungs-Endpunkt.

2.    Melde dich mit dem Benutzer, den du erstellt hast, in deinem Benutzerpool an.

3.    Kopiere das Zugriffstoken von der URL in der Adressleiste. Das Token ist eine lange Zeichenfolge, die auf access_token= folgt.

Deine API als Test aufrufen

Verwende testweise das Zugriffstoken als Wert des Autorisierungsheaders, um deine API mithilfe des Zugriffstokens aufzurufen. Du kannst die Postman-App (auf der Postman-Website) oder den Befehl curl über eine Befehlszeilenschnittstelle verwenden. Weitere Informationen zu curl findest du auf der Website des Curl-Projekts.

Führe den folgenden Befehl aus, um curl zu verwenden:

curl https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName -H "Authorization: accessToken"

Hinweis: Ersetze restApiId durch die API-ID. Ersetze region durch die AWS-Region deiner API. Ersetze stageName durch den Namen der Phase, in der deine API bereitgestellt wird. Ersetze resourceName durch den Namen der API-Ressource. Ersetze accessToken durch das Token, das du kopiert hast. Weitere Informationen findest du unter Aufrufen einer REST-API in Amazon API Gateway.

Wenn du alles richtig konfiguriert hast, erhältst du einen 200 OK-Antwortcode.

Verwandte Informationen

Konfiguration eines Benutzerpool-App-Clients

Gültigkeitsbereich des Zugriffstokens (Das OAuth 2.0-Autorisierungsframework)

AWS OFFICIALAktualisiert vor 3 Jahren