Ich habe ähnliche Probleme untersucht, konnte aber mein Problem nicht lösen. Ich entwickle eine Webanwendung, bei der sich der Benutzer mithilfe der Authentifizierung von AWS Cognito authentifizieren wird. Der Anmeldevorgang ist in Ordnung, aber wenn ich versuche, mich anzumelden, erhalte ich die Ausnahme "nicht autorisiert". Ich habe bereits versucht, benutzerdefinierte Richtlinien meiner IAM Rolle zu befestigen (sts Ermächtigung: AssumeRoleWithWebIdentity), aber hat nicht funktioniert .. Hier ist, wie der Code jetzt geschrieben:AccessDenied: Nicht autorisiert, M zu erfüllen: AssumeRoleWithIdentity
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
var sts = new AWS.STS({apiVersion: '2011-06-15'});
var params = {
RoleArn: 'arn:aws:iam::981601120657:role/Cognito_AliceAuth_Role', /* required */
RoleSessionName: 'AliceUserSession',
WebIdentityToken: result.getIdToken().getJwtToken(),
Policy: '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRoleWithWebIdentity", "Resource": "*" } ] }'
};
sts.assumeRoleWithWebIdentity(params, function (err, data) {
if (err)
console.log(err, err.stack); // ** <-- ERROR HERE
else
console.log(data); // successful response
});
//document.getElementById('authForm').submit();
},
onFailure: function (err) {
alert(err);
}
});
Wie Sie sehen können, habe ich Ich habe die Richtlinie auch im Code angegeben, aber ich erhalte immer noch den Fehler "AccessDenied: Nicht berechtigt, sts: AssumeRoleWithIdentity durchzuführen". Bitte helfen Sie mir:/
EDIT:
Im Inneren des "Cognito_AliceAuth_Role" Ich habe die Rolle Politik erstellt haben: AssumeRoleWithWebIdentityPolicy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRoleWithWebIdentity",
"Resource": "*"
}
]
}
und: GetFederationTokenPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "*"
}
]
}
Das Vertrauen Beziehung:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"cognito-identity.amazonaws.com:aud": "us-east-1:e4c1833d-a62b-402a-b995-1b2513b04c02"
},
"ForAnyValue:StringLike": {
"cognito-identity.amazonaws.com:amr": "authenticated"
}
}
}
]
}
Wie hat das Anfügen der Richtlinie, damit Ihr IAM-Benutzer sts verwenden kann: AssumeRoleWithIdentity funktioniert nicht? –
Ich weiß es wirklich nicht ... :(Ich habe die Frage aktualisiert und weitere Informationen hinzugefügt. –
Wenn Sie versuchen, sich mit temporären Zugangsdaten zu authentifizieren, welche Informationen bieten Sie an? –