it-swarm.com.de

Fehlendes Authentifizierungs-Token beim Zugriff auf das API-Gateway?

Ich versuche, eine Lambda-Funktion über AWS API Gateway aufzurufen. Wenn ich den Authentifizierungstyp NONE erwähne, funktioniert es einwandfrei, aber die API wird öffentlich, und jeder, der über eine URL verfügt, kann auf meine API zugreifen. Um die API aufzurufen, verwende ich den Authentifizierungstyp AWS_IAM und .__ Benutzer, aber diesen Fehler erhalten:

{message: "Fehlendes Authentifizierungs-Token"}

Ich weiß nicht was ich hier vermisse.

21
Umer

Ich denke, Sie versuchen direkt, auf die API-Verknüpfung zuzugreifen. Dies funktioniert nicht, da die API mit der IAM-Rolle gesichert ist und Sie die AWS-Authentifizierung, d. H. Den Zugriffsschlüssel und den Geheimschlüssel, bereitstellen müssen.

Testen Sie Ihre API mit der Postman Chrome-Erweiterung: http://docs.aws.Amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html

12
saddam

Ich habe einige Zeit aus einem dummen Grund verloren:

Wenn Sie eine Bühne erstellen, enthält der angezeigte Link nicht den Ressourcenteil der URL:

API-URL:https://1111.execute-api.us-east-1.amazonaws.com/dev

API + Ressource URLhttps://1111.execute-api.us-east-1.amazonaws.com/dev/get-list

Die / get-list fehlte

Und natürlich müssen Sie überprüfen, ob die Methodenkonfiguration folgendermaßen aussieht:

 enter image description here

Ich hatte gerade das gleiche Problem und es scheint, dass auch diese Nachricht angezeigt wird, wenn die Ressource nicht gefunden werden kann.

In meinem Fall hatte ich die API aktualisiert, aber die erneute Bereitstellung vergessen. Das Problem wurde behoben, nachdem die aktualisierte API auf meiner Bühne bereitgestellt wurde.

4
Nicholas

(Stand: April 2019) AWS API Gateway löst diese Ausnahme aus einer Reihe von Gründen aus - vor allem, wenn Sie einen Endpunkt erreichen, den API Gateway nicht erreichen kann, weil er nicht bereitgestellt wird, oder auch in Fällen, in denen dieser bestimmte Endpunkt nicht bereitgestellt wird HTTP-Methode wird nicht unterstützt.

Ich wünschte, das Gateway sendet passendere Fehlercodes wie die nicht unterstützte HTTP 405-Methode oder die nicht gefundene HTTP 404-Methode anstelle eines generischen HTTP 403 Forbidden.

4
TechiRik

Stellen Sie sicher, dass Sie eine Ressource erstellen und anschließend eine darin enthaltene Methode erstellen. Das war das Problem für mich. Vielen Dank

enter image description here

4

Fand das in den Dokumenten: 

Bei Verwendung der AWS_IAM-Autorisierung würden Sie die Anforderung mit den Signature Version 4-Protokollen signieren. 

Signaturanforderung mit Signaturversion 4


Sie können auch ein SDK für Ihre API erstellen. 

So generieren Sie ein SDK für eine API in API Gateway

Nachdem Sie das SDK für die Plattform Ihrer Wahl erstellt haben, wird in Schritt 6 erwähnt, dass bei Verwendung von AWS-Anmeldeinformationen die Anforderung an die API signiert wird:

  1. Verwenden Sie zum Initialisieren des vom API-Gateway generierten SDK mit AWS-Berechtigungsnachweisen Code, der dem folgenden ähnelt. Wenn Sie AWS-Berechtigungsnachweise verwenden, werden alle Anforderungen an die API signiert. Das bedeutet, dass Sie für jede Anfrage die entsprechenden CORS Accept-Header festlegen müssen:

    var apigClient = apigClientFactory.newClient({
      accessKey: 'ACCESS_KEY',
      secretKey: 'SECRET_KEY',
    });
    
4
theJasonHall

Wenn Sie die AWS_IAM-Authentifizierung aktivieren, müssen Sie Ihre Anforderung mit AWS-Anmeldeinformationen mit AWS Signature Version 4 signieren. 

Note: Durch das Anmelden bei der AWS-Konsole werden die Anforderungen Ihres Browsers nicht automatisch an Ihre API signiert.

3
Bob Kinney

Prüfen Sie zunächst, ob die in der Lamda-Funktion erstellte API in Ihrem AWS-Projekt registriert ist oder nicht. Wechseln Sie dazu zum API-Gateway in Ihrer AWS-Konsole. Wenn es nicht registriert ist, registrieren Sie es. Dies ist die Hauptursache für dieses Problem. 

Sie können sogar in Ihrer Datei aws.export.js sehen, dass es Pfade gibt, die Ihrer API ['/items'] entsprechen. 

Ihre API muss dort vorhanden sein, andernfalls wird das Sicherheitstoken nicht an Anforderungen angehängt. Registrieren Sie es einfach in Ihrer Projekt-Cloud-Logik in Ihrer Konsole.

Wenn dies der Fall ist, verwenden Sie die oben genannte Lösung
http://docs.aws.Amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html

0

manchmal wird diese Meldung angezeigt, wenn Sie eine falsche API aufrufen

überprüfen Sie Ihren API-Endpunkt

0
HeshamSalama