Ich versuche authentifizierte API-Gateway-Endpunkt von Rest-Client zu testen. Wie generiere/setze ich die Autorisierungsheader "AWS_IAM", wenn ich die Anfrage mache?API-Gateway, wie AWS-IAM-Autorisierung von Rest-Client übergeben wird
Antwort
Sie müssten API Gateway
AWS v4 request signature
Logik replizieren, um das zu können. Im Idealfall sollten Sie sich das generierte Javascript/Java-SDK für Ihre API ansehen, um eine Vorstellung davon zu bekommen, wie diese Anforderungssignaturen berechnet werden. Ich schlage vor, dass Sie die Authentifizierung für Ihre Testanforderungen deaktivieren.
können Sie Cognito verwenden, um mit einem „öffentlichen“ Pool-ID, dann Rolle der ID Cognito Pool anhängen, die Rolle
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'REGION:YOUR_POOL_ID',
});
Verwenden AWS STS Zugriff auf Ihre API-Gateway sie nur für Berechtigungsnachweise mit eingeschränkten Rechten zu erhalten. Danach können Sie API-Gateway mit AWS_IAM Authentifizierung
Das erzeugte SDK akzeptiert AMI Anmeldeinformationen verwenden, müssen Sie den Client mit den man von STS bekam zu initiieren:
var apigClient = apigClientFactory.newClient({
accessKey: 'ACCESS_KEY',
secretKey: 'SECRET_KEY',
sessionToken: 'SESSION_TOKEN', //OPTIONAL: If you are using temporary credentials you must include the session token
region: 'eu-west-1' // OPTIONAL: The region where the API is deployed, by default this parameter is set to us-east-1
});
NB: auf Ihrem Put streng Mindest Rollen pool, das ist eine öffentlich verfügbare ID, die von jedem Körper verwendet werden kann, um eine temporäre oder eine fixe (um Benutzer über Geräte hinweg zu verfolgen) user_/app_ id zu erhalten.
Update April 2016: Für Christine Kommentare: Documentation zur Verwendung von STS.
TL; DR: Grundsätzlich nach dem Identity-Provider Sie zurück (Google, in meinem Fall) nennt, werden Sie einen Token (OpenID, in meinem Fall) haben, füttern sie nur STS:
AWS.config.credentials = new AWS.WebIdentityCredentials({
RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google
WebIdentityToken: ACCESS_TOKEN
});
Kann Sie geben ein Beispiel, wie Sie "AWS STS verwenden, um temporäre Anmeldeinformationen mit eingeschränkten Berechtigungen zu erhalten". im Browser JavaScript. Ich kann mir nicht vorstellen, wie das alles mit Cognito Identities funktioniert. Vielen Dank. – Christine
@Christine siehe das Update. –