Вход пользователя AWS Cognito в IAM - PullRequest
0 голосов
/ 22 января 2019

Я хочу предоставить пользователям 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);
                },

});

...