QuickSight Session Token

55 Views Asked by At

I am trying to embed a QuickSight console for a registered user in an iframe. Currently, I am stuck on this error

Embedding failed because of invalid URL or authorization code. Both of these must be valid and the authorization code must not be expired for embedding to work.

I have the sample code from AWS but can’t seem to get it running. I have everything for this code

var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);

except for the Session Token which needs a string and not

AWS_STS = new AmazonSecurityTokenServiceClient(access_key, secret_key);
token = AWS_STS.GetSessionTokenAsync();

as I tried. What is this session token and is it mandatory for QuickSight embedded? AWS has other QuickSight Client constructors like

public AmazonQuickSightClient(AWSCredentials credentials);

public AmazonQuickSightClient(AWSCredentials credentials, RegionEndpoint region);

public AmazonQuickSightClient(string awsAccessKeyId, string awsSecretAccessKey);

which avoid the session token. When I tried using them I still got the same error.

This is the example class from AWS.

using System;
using Amazon.QuickSight.Model;
using Amazon.QuickSight;
using System.Collections.Generic;
namespace QuickSight
{
    public class GenerateDashboardEmbedUrl
    {
        public string doAll() {
            
            var amazonBase = new AmazonBase();
        var quicksightClient = new AmazonQuickSightClient(
                amazonBase.getAccessKey(),
                amazonBase.getSecretKey(),
               // SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                RegisteredUserQuickSightConsoleEmbeddingConfiguration registeredUserQuickSightConsoleEmbeddingConfiguration
                    = new RegisteredUserQuickSightConsoleEmbeddingConfiguration
                    {
                        InitialPath = "/start"
                    };
        RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration
            = new RegisteredUserEmbeddingExperienceConfiguration
            {
                QuickSightConsole = registeredUserQuickSightConsoleEmbeddingConfiguration
            };

         return 
            quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest
                    {
                        AwsAccountId = amazonBase.getAccountId(),
                        ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration,
                        UserArn = MyArn,
                        //AllowedDomains = null,
                        SessionLifetimeInMinutes = 100
                    }).Result.EmbedUrl;
            } catch (Exception ex)
{
    Console.WriteLine(ex.Message);
                return ex.Message;
}
        }
    }
}

I also gave permissions in IAM for QuickSight with

        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "quicksight:*",
            "Resource": "*"
        }

Thanks!

0

There are 0 best solutions below