Я хочу предоставить пользователям Cognito доступ к пользовательскому интерфейсу AWS Resources, например, к IAM или QuickSight.
Я создал пользователя Cognito и соответствующий пул удостоверений.Я могу авторизоваться и авторизоваться.Но когда я делаю программный вход в AWS, имя пользователя отображается как / CognitoCredentials @ AccountNumber
[1]: https://i.stack.imgur.com/mldKm.png
Я хочу специально разрешитьконкретного пользователя Cognito для AWS и см. имя пользователя, вошедшего в систему.
Любые предложения приветствуются.
Я выполняю федеративный вход и перенаправляем на консоль AWS IAM.
======================================= var poolData = {UserPoolId: '', // ваш идентификатор пула пользователей здесь ClientId:'' // идентификатор клиента вашего приложения здесь};var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool (poolData);var userData = {Имя пользователя: 'qsuser', // ваше имя пользователя здесь Pool: userPool};var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser (userData);
var authenticationData = {
Username : 'qsuser',
Password : 'XXXX',
};
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result)
{
console.log("Cognito Sign in successful!");
var accessToken = result.getAccessToken().getJwtToken();
// Use the idToken for Logins Map when Federating User Pools with identity pools or when passing through an Authorization Header to an API Gateway Authorizer
var idToken = result.idToken.jwtToken;
let id_token = idToken;
let cognitoParams = {
AccountId: "XXXX",
IdentityPoolId: identityPool,
Logins: {}
};
cognitoParams.Logins["cognito-idp."+region+".amazonaws.com/"+poolId] = id_token;
AWS.config.credentials = new AWS.CognitoIdentityCredentials(cognitoParams);
AWS.config.credentials.get(function(err){
if (err) {
alert(err);
}
else
{
let req = new XMLHttpRequest();
let creds = {
"sessionId":AWS.config.credentials.accessKeyId,
"sessionKey":AWS.config.credentials.secretAccessKey,
"sessionToken":AWS.config.credentials.sessionToken
}
let credsEncoded = encodeURIComponent(JSON.stringify(creds));
console.log(credsEncoded);
let uri = "https://signin.aws.amazon.com/federation?Action=getSigninToken&SessionDuration=43200&Session="+credsEncoded;
console.log(uri);
$.ajax({
type : 'POST',
url : "getSignInToken",
headers : {
'Authorization' : id_token,
"cache-control" : "no-cache"
},
data :"_url=" + uri,
success : function(response)
{
let jsonObject = JSON.parse(response);
console.log("response headerL: "+jsonObject.SigninToken);
let quickSightSSO = "https://signin.aws.amazon.com/federation?Action=login&Issuer="+thisUrlEncoded+"&Destination="+quicksightUrlEncoded+"&SigninToken="+jsonObject.SigninToken;
console.log("AWS Console Sign In URL: "+quickSightSSO);
window.open(quickSightSSO, '_blank');
},
error : function(xhr, status, error)
{
}
});
}
});
},
onFailure: function(err) {
alert(err);
},
});