2

Ich spiele mit Lambda herum und versuche, es zu benutzen, um eine Web-App zu authentifizieren. Ich benutze LambdAuth als Starter, um die Dinge in Gang zu bringen. https://github.com/danilop/LambdAuthAws Lambda/Api-Gateway/Cognito arbeitet zusammen

Ich möchte einen API-Gateway-Dienst haben, der zuerst ein Mitglied autorisiert und das Token von cognito zurückgibt. Alle nachfolgenden Dienste in api-gateway müssen dann irgendwie akzeptieren, was von cognito zurückgegeben wurde, um den Zugriff auf den Dienst zu ermöglichen und ohne es zu scheitern. Ich bin irgendwie verwirrt darüber, wie man Cognito benutzt. Ich nehme an, Sie beschränken Ihre API-Gateway-Dienste, indem Sie der Autorisierung Ihres Dienstes das AWS_IAM-Tag hinzufügen, aber ich weiß nicht, wie ich dann diesen Dienst aufrufen soll ...?

In der aktuellen Implementierung von LambdAuth, tut es all diese Client-Seite (im Browser), die lambdas direkt aufrufen. Er ruft AWS.config.credentials ab, fügt die IdentityId und Logins hinzu, die von cognito zurückkommen, und ruft dann die Lambda-Funktion auf, bei der Sie angemeldet sein müssen. Wie funktioniert das beim Aufruf von api-gateway anstelle von Lambda? Wie nehme ich an, was von cognito zurückgekommen ist, und füge es meinem Serviceaufruf hinzu, um diese AWS_IAM-Autorisierung zu übergeben?

Jede Hilfe wird geschätzt werden, oder wenn das Boot im vollständig das ist auch möglich, ...

Antwort

3

Für die Lambda-Funktionen Umgang mit Auth hinter API-Gateway, müßten Sie sie nicht autorisiert fehlen, da die Benutzer nicht haben eingeloggt

Damit die Lambda-Funktionen hinter dem API-Gateway autorisiert werden, müssen Sie die von Cognito erworbenen Anmeldeinformationen beim Instanziieren Ihres Clients eingeben.

Es sieht aus wie Sie Entwickler-Authentifizierung zu tun, so, wenn Sie einen Cognito Token von Ihrem Backend/Lambda-Funktionen zu erhalten, in der App müssen Sie noch Anmeldeinformationen erhalten:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'IDENTITY_POOL_ID', 
    IdentityId: 'IDENTITY_ID_RETURNED_FROM_YOUR_PROVIDER', 
    Logins: { 
     'cognito-identity.amazonaws.com': 'TOKEN_RETURNED_FROM_YOUR_API' 
    } 
}); 

Dann von Ihren Zugangsdaten Sie werden den Zugriffsschlüssel, geheimen Schlüssel, und Sitzungsschlüssel benötigen eine API Gateway Client zu instanziiert:

Instanziierungsanwendung API Gateway Client:

var client = apigClientFactory.newClient({ 
accessKey: ACCESS_KEY, 
secretKey: SECRET_KEY, 
sessionToken: SESSION_TOKEN }); 
+0

Dank Mark, im s Das wird helfen. Der Grund dafür ist, Api Gateway von JavaScript aus aufzurufen. Ich möchte nur einen normalen Rest Service-Aufruf machen ... Ich möchte nicht, dass meine Kunden AWS-Bibliotheken laden müssen. Also ich bin nicht sicher, ob diese access_key und secret_key als Header hinzugefügt wird oder wie es funktioniert ... Ich kann das wahrscheinlich irgendwo finden, sobald ich meine Schlüssel zurück bekomme, danke – 3uPh0riC

+0

Hallo @ 3uPh0riC Ich bin nach der gleichen Sache, wie hast du am Ende, es zu lösen? – hanbzu

Verwandte Themen