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

Definieren Sie einen Ressourcenserver mit benutzerdefinierten Bereichen in Ihrem Amazon Cognito-Benutzerpool. Erstellen und konfigurieren Sie dann einen Amazon Cognito-Autorisierer für Ihre API Gateway-API, um Anfragen an Ihre API-Ressourcen zu authentifizieren.

Wenn Sie über verschiedene App-Clients verfügen, die unterschiedliche Zugriffsebenen auf Ihre API-Ressourcen benötigen, können Sie unterschiedliche Zugriffsbereiche definieren. Berücksichtigen Sie, welche Niveaus von granularem Zugriff die verschiedenen App-Clients möglicherweise benötigen, und planen Sie anschließend entsprechend.

Lösung

Sorgen Sie für die folgenden Voraussetzungen:

Ihrem Benutzerpool einen Ressourcenserver mit benutzerdefinierten Bereichen hinzufügen

1.Öffnen Sie die Amazon Cognito-Konsole.

2.Definieren Sie den Ressourcenserver und die benutzerdefinierten Bereiche.

3.Nachdem Sie den Ressourcenserver erstellt haben, wählen Sie die Registerkarte App-Integration aus.

4.Wählen Sie im Bereich App-Clients und Analysen Ihren App-Client aus.

5.Wählen Sie im Bereich Gehostete Benutzeroberfläche die Option Bearbeiten aus. Führen Sie die folgenden Schritte aus:
Wählen Sie für die Dropdown-Liste OAuth 2.0-Gewährungs-Typen die Option Implizite Gewährung aus.
Wählen Sie in der Dropdown-Liste Benutzerdefinierte Bereiche den benutzerdefinierten Bereich aus, den Sie definiert haben.
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ählen Sie Änderungen speichern aus.

Wenn Ihre mobilen Anwendungen über eine serverseitige Komponente verfügen, verwenden Sie 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 Ihr Setup keine serverseitige Logik enthält, können Sie 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: Speichern Sie die Aktualisierungstoken nicht in einer clientseitigen Umgebung.

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

Einen Autorisierer erstellen und in Ihre API integrieren

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

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

2.Um den Autorisierer in Ihre API zu integrieren, folgen Sie den Anweisungen unter So konfigurieren Sie einen COGNITO_USER_POOLS-Autorisierer für Methoden.
Hinweis: Geben Sie für OAuth-Bereiche die vollständige Kennung für einen benutzerdefinierten Bereich im Format resourceServerIdentifier/scopeName ein.

3.Stellen Sie Ihre API bereit.

Ein Zugriffstoken für den Benutzerpool zum Testen abrufen

Verwenden Sie die gehostete Web-Benutzeroberfläche für Ihren Benutzerpool, um sich anzumelden und ein Zugriffstoken vom Amazon Cognito-Autorisierungsserver abzurufen. Verwenden Sie 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. Achten Sie beim Entwerfen Ihres App-Clients darauf, dass der Client die vorgesehenen Bereiche in die Anfrage einbezieht, um zu vermeiden, dass unnötige Berechtigungen erteilt werden.

1.Geben Sie die folgende URL in Ihren Webbrowser ein:
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
**Hinweis:**Ersetzen Sie yourDomainPrefix und region durch die Werte für Ihren Benutzerpool. Sie finden diese in der Amazon Cognito-Konsole auf der Registerkarte Domainnamen für Ihren Benutzerpool.
Ersetzen Sie yourClientId durch die ID Ihres App-Clients und redirectUrl durch die Callback-URL Ihres App-Clients. Sie finden diese in der Konsole auf der Registerkarte App-Client-Einstellungen für Ihren Benutzerpool. Weitere Informationen finden Sie unter Anmeldungs-Endpunkt.

2.Melden Sie sich mit dem Benutzer, den Sie erstellt haben, in Ihrem Benutzerpool an.

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

Ihre API als Test aufrufen

Verwenden Sie testweise das Zugriffstoken als Wert des Autorisierungsheaders, um Ihre API mithilfe des Zugriffstokens aufzurufen. Sie können die Postman-App (auf der Postman-Website) oder den Befehl curl über eine Befehlszeilenschnittstelle verwenden. Weitere Informationen zu curl finden Sie auf der Website des Curl-Projekts.

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

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

Hinweis: Ersetzen Sie restApiId durch die API-ID. Ersetzen Sie die region durch die AWS-Region Ihrer API. Ersetzen Sie stageName durch den Namen der Phase, in der Ihre API bereitgestellt wird. Ersetzen Sie resourceName durch den Namen der API-Ressource. Ersetzen Sie accessToken durch das Token, das Sie kopiert haben. Weitere Informationen finden Sie unter Aufrufen einer REST-API in Amazon API Gateway.

Wenn Sie alles richtig konfiguriert haben, erhalten Sie einen 200 OK-Antwortcode.

Verwandte Informationen

Konfiguration eines Benutzerpool-App-Clients

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr