AWS Wizards,Google+ Auth in AWS Cognito und API-Gateway ist nicht autorisiert
ich ein POC Web-App erstellt habe AWS Cognito
und Federated Identities
für ein Projekt zu testen.
Ich erweiterte die POC mit Google+ authentication
. Wenn sich ein Nutzer über Google authentifiziert, steigt der Counter für Google Signin in "Federated Identities". Diese werden natürlich überprüft.
Jetzt versuche ich die Anmeldeinformationen mit einem gesicherten AWS API Gateway
Endpunkt ohne Glück zu verwenden. Der Benutzer bleibt gemäß dem Gateway unautorisiert. Ich habe versucht, die Test-Funktion in der API Gateway Authorizers-Konfiguration, wenn ich mit einem Cognito-Benutzer testen CognitoUserSession.idToken
der Test gibt die Ansprüche zurück.
Wenn ich denselben Test mit einem Google-Benutzer idToken
mache, ist es nicht authentifiziert. Nach einer erfolgreichen Google-Anmeldung wird im selben AWS JavaScript SDK-Code ausgeführt (als Cognito-Benutzeranmeldung). Die Berechtigungsnachweise werden mit einer Identitäts-ID und einem Sitzungstoken, aber ohne ID-Token aktualisiert.
Da ich insgesamt auf AWS noob bin, vermisse ich hier wohl etwas. Was muss ich tun, um einen gültigen idToken zu erhalten? Sollte es anders gemacht werden?
(GoogleLogin ist ein Reagieren Komponente)
render() {
return (
<GoogleLogin
clientId="44xxx11.apps.googleusercontent.com"
buttonText="Google Login"
onSuccess={this.responseGoogle}
onFailure={this.responseGoogle}
/>
)
}
responseGoogle(response) {
console.log(response.tokenId)
cognitoIdentityCredentials(response.tokenId)
}
cognitoIdentityCredentials(idToken) {
const loginsObj = {
['accounts.google.com']: idToken
}
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: IDENTITY_POOL_ID, // your identity pool id here
Logins: loginsObj
})
AWS.config.credentials.get(function(err) {
if (err) {
console.log(err);
} else {
console.log("---- AWS credentials ----")
console.log(AWS.config.credentials)
// Got credentials, but no valid idToken
}
})
}
dieser Code scheint in Ordnung, aber es gibt keinen Code, der Lambda aufruft ... und das Problem scheint dort zu sein ... – UXDart
Warum sollte ich ein Lambda auf der Clientseite aufrufen? – Sven
"Jetzt versuche ich, die Anmeldeinformationen mit einem sicheren AWS API Gateway-Endpunkt ohne Glück zu verwenden" ... – UXDart