0

Ich habe es schwer, diesen hier zum Laufen zu bringen, und ich frage mich, ob jemand ein funktionsfähiges Codebeispiel haben könnte, das ich überlesen kann. Hier ist meine Anforderung:AWS API Gateway mit STS und Custom Authenticator - jeder mit Beispiel mit Browser-Client?

  • Eine AWS Lambda-Funktion (wir nennen es BizFunction), von AWS API Gateway konfrontiert, und mit benutzerdefinierten Autorisierung konfiguriert.
  • Eine weitere AWS Lambda-Funktion (wir nennen es LoginFunction), auch ohne Genehmigung von AWS API Frontend. Während des Anmeldevorgangs authentifiziert LoginFunction die Eingabe der Anmeldeinformationen des Benutzers für die Benutzerdatenbank und erstellt, falls verifiziert, eine Cognito-Identität mit STS. Der Berechtigungsnachweis, das Sitzungs-Token usw. wird dann anschließend an den Browser des Benutzers zurückgegeben.
  • Was ich nicht herausfinden kann, ist, wie man den Code schreibt, um BizFunction aufzurufen. Ich benutze das generierte Client-SDK, wie es von AWS API Gateway bereitgestellt wird, und mein benutzerdefinierter Autorizer ruft die gesamte Autorisierungszeichenfolge "AWS4-HMAC-SHA256 Credential = ..../2016 ..../eu-west-2/execute" ab -api/aws4_request, SignedHeaders = accept; host; x-amz-Datum; x-api-key, Signatur = ..... ". Aber wie konvertiere ich das in eine Cognito-Identität und identifiziere anschließend den Benutzer?

    Mein Client ist ein Browser und die meisten Beispiele, die ich gefunden habe, sind mobilbasiert. Hat jemand ein Arbeitsbeispiel oder einen Zeiger darauf, wie ich vorgehen kann?

    Vielen Dank im Voraus!

    Antwort

    1

    Sie können keine benutzerdefinierten Berechtigungen mit Anforderungen verwenden, die mit AWS-Anmeldeinformationen signiert sind. Wenn Sie die Anforderung mithilfe der Sitzungsanmeldeinformationen an API Gateway signieren, aktivieren Sie einfach die Authentifizierung "AWS_IAM". Wenn Sie die Identität sehen möchten, sind diese als Teil der $context.identity variables verfügbar.

    +0

    Danke Bob! Ich bin immer noch ziemlich neu in AWS, daher habe ich deine Antwort bestenfalls teilweise verstanden. –

    +0

    Zu diesem Zeitpunkt bin ich in der Lage, Dinge (mehr oder weniger) mit benutzerdefinierten Autorisierung zu arbeiten, indem Sie die Identität ID (Hashed) über HTTP-Header. Um das zu tun, was Sie bereits erwähnt haben, nämlich das Signieren einer Anfrage mit AWS-Anmeldeinformationen, gibt es dazu eine detaillierte Dokumentation? Ich habe viele Sachen auf docs.aws.amazon.com gelesen, aber keine bietet genügend Details für mich. –

    +0

    Aber der gleiche Client-Code (abzüglich der Rücksendung von Identitätscode) funktioniert mit benutzerdefinierten Autorisierung. Nochmals vielen Dank für das Lesen und jede Hilfe, die Sie anbieten können. –