2016-04-15 15 views
2

Ich überlege, einen Dienst als eine Reihe von REST-Endpunkten auf AWS Lambda und möglicherweise AWS API Gateway zu implementieren. Das Frontend wäre ein JS-Browser-Client, der diese Endpunkte direkt aufruft und somit keine mittlere Stufe benötigt.AWS Lambda, AWS-API-Gateway und Sichern von REST-Endpunkten

In meiner Recherche, was ich nicht finden kann ist, wie sichere ich Zugang zu den Anrufen für Leute, die sozusagen "eingeloggt" sind? Ich sehe, dass Lambda-Anrufe statuslos sind, also keine Sitzungsdaten. Ich brauche keine Sitzungsdaten, außer zu wissen, dass sie authentifiziert sind und in denselben Fällen berechtigt sind, auf einen bestimmten Endpunkt zuzugreifen. Es wird eine Datenbank geben (DynamoDB oder RDS). Wenn ich also Sitzungsdaten brauche, kann ich sie erstellen.

Gibt es eine Möglichkeit, dies zu tun? Mir ist klar, dass ich bei jedem API-Aufruf ihren Benutzernamen und ihr Passwort weitergeben kann, aber es scheint, dass es einen besseren Weg geben muss.

Auch dies würde wahrscheinlich in Java implementiert werden. Kann ich Spring Security verwenden?

Antwort

2

Ich glaube nicht, dass Sie Spring Security in einer Lambda-Funktion verwenden möchten. Ich kann mir nicht vorstellen, dass das sehr gut funktioniert, und ich bezweifle, dass es überhaupt funktionieren würde. Selbst wenn es auf Lambda laufen könnte, würde es definitiv mehr zur kalten Startzeit Ihrer Funktion hinzufügen, als Sie damit beschäftigen wollen.

Die empfohlene Möglichkeit zur Bereitstellung der Benutzerauthentifizierung für zustandslose Dienste besteht in der Verwendung von JWT (JSON Web Tokens). Auth0 bietet einen guten allgemeinen Artikel über JWT here, sowie ein Tutorial zur Verwendung von Auth0 mit API Gateway und Lambda here. Auch wenn Sie nicht Auth0 verwenden, ist das zweite Tutorial hilfreich, um zu verstehen, wie Sie die Benutzerauthentifizierung bei API Gateway und Lambda durchführen.

Sie können auch API Gateway Custom Authorization Funktionen verwenden, mit denen Sie Ihren gesamten Authentifizierungscode in einer Lambda-Funktion kapseln können, die sich wie ein "Gatekeeper" für Ihre API-Endpunkte verhält. Ich würde empfehlen, eine Custom Authorization Lambda-Funktion zu verwenden, um die JSON-Web-Token zu validieren, die an Ihre API gesendet wurden.

+0

Vielen Dank Mark, das sieht hilfreich aus. Kann AWS Cognito zur Authentifizierung verwendet werden? Ich bin weniger besorgt über die Autorisierung. –

+0

Ja Cognito kann in Verbindung mit API Gateway IAM-Authentifizierung verwendet werden. –