

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Étape 2 : Obtenir l’URL avec le code d’authentification en pièce jointe
<a name="embedded-analytics-dashboards-with-anonymous-users-get-step-2"></a>

**Important**  
Amazon Quick Sight propose de nouvelles API pour intégrer des analyses : `GenerateEmbedUrlForAnonymousUser` et`GenerateEmbedUrlForRegisteredUser`.  
Vous pouvez toujours utiliser les `GetSessionEmbedUrl` API `GetDashboardEmbedUrl` et pour intégrer des tableaux de bord et la console Amazon Quick Sight, mais elles ne contiennent pas les dernières fonctionnalités d'intégration. Pour bénéficier de l'expérience d'intégration la plus récente, consultez la section [Intégration des analyses Amazon Quick Sight dans vos applications](https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html).


|  | 
| --- |
|  S’applique à : édition Enterprise  | 


|  | 
| --- |
|    Public cible : développeurs Amazon Quick  | 

Dans la section suivante, vous découvrirez comment authentifier un visiteur anonyme et obtenir l’URL de tableau de bord intégrable sur votre serveur d’applications. 

Lorsqu’un utilisateur accède à votre application, l’application assume le rôle IAM pour le compte de l’utilisateur. Il ajoute ensuite l'utilisateur à Amazon Quick Sight, s'il n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique. 

Les exemples suivants effectuent l’authentification IAM pour le compte de l’utilisateur. Elle transmet un identifiant comme ID de session de rôle unique. Ce code s’exécute sur votre serveur d’applications.

------
#### [ Java ]

```
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.quicksight.AmazonQuickSight;
import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlRequest;
import com.amazonaws.services.quicksight.model.GetDashboardEmbedUrlResult;

/**
 * Class to call QuickSight AWS SDK to get url for dashboard embedding.
 */
public class GetQuicksightEmbedUrlNoAuth {

    private static String ANONYMOUS = "ANONYMOUS";

    private final AmazonQuickSight quickSightClient;

    public GetQuicksightEmbedUrlNoAuth() {
        this.quickSightClient = AmazonQuickSightClientBuilder
                .standard()
                .withRegion(Regions.US_EAST_1.getName())
                .withCredentials(new AWSCredentialsProvider() {
                                     @Override
                                     public AWSCredentials getCredentials() {
                                         // provide actual IAM access key and secret key here
                                         return new BasicAWSCredentials("access-key", "secret-key");
                                     }

                                     @Override
                                     public void refresh() {}
                                 }
                )
                .build();
    }

    public String getQuicksightEmbedUrl(
            final String accountId, // YOUR AWS ACCOUNT ID
            final String dashboardId, // YOUR DASHBOARD ID TO EMBED
            final String addtionalDashboardIds, // ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2
            final boolean resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
            final boolean undoRedoDisabled // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    ) throws Exception {
        GetDashboardEmbedUrlRequest getDashboardEmbedUrlRequest = new GetDashboardEmbedUrlRequest()
                .withDashboardId(dashboardId)
                .withAdditionalDashboardIds(addtionalDashboardIds)
                .withAwsAccountId(accountId)
                .withNamespace("default") // Anonymous embedding requires specifying a valid namespace for which you want the embedding url
                .withIdentityType(ANONYMOUS)
                .withResetDisabled(resetDisabled)
                .withUndoRedoDisabled(undoRedoDisabled);

        GetDashboardEmbedUrlResult dashboardEmbedUrl = quickSightClient.getDashboardEmbedUrl(getDashboardEmbedUrlRequest);

        return dashboardEmbedUrl.getEmbedUrl();
    }
}
```

------
#### [ JavaScript ]

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function getDashboardEmbedURL(
    accountId, // YOUR AWS ACCOUNT ID
    dashboardId, // YOUR DASHBOARD ID TO EMBED
    additionalDashboardIds, // ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2
    quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
    resetDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
    undoRedoDisabled, // OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
    getEmbedUrlCallback, // GETEMBEDURL SUCCESS CALLBACK METHOD
    errorCallback // GETEMBEDURL ERROR CALLBACK METHOD
    ) {
    const getDashboardParams = {
        AwsAccountId: accountId,
        DashboardId: dashboardId,
        AdditionalDashboardIds: additionalDashboardIds,
        Namespace: quicksightNamespace,
        IdentityType: 'ANONYMOUS',
        ResetDisabled: resetDisabled,
        SessionLifetimeInMinutes: 600,
        UndoRedoDisabled: undoRedoDisabled
    };

    const quicksightGetDashboard = new AWS.QuickSight({
        region: process.env.AWS_REGION,
    });

    quicksightGetDashboard.getDashboardEmbedUrl(getDashboardParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                    "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO GETEMBEDURL API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            getEmbedUrlCallback(result);
        }
    });
}
```

------
#### [ Python3 ]

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
qs = boto3.client('quicksight',region_name='us-east-1')
sts = boto3.client('sts')

# Function to generate embedded URL
# accountId: YOUR AWS ACCOUNT ID
# dashboardId: YOUR DASHBOARD ID TO EMBED
# additionalDashboardIds: ADDITIONAL DASHBOARD-1 ADDITIONAL DASHBOARD-2 WITHOUT COMMAS
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# resetDisabled: PARAMETER TO ENABLE DISABLE RESET BUTTON IN EMBEDDED DASHBAORD
# undoRedoDisabled: OPTIONAL PARAMETER TO ENABLE DISABLE UNDO REDO BUTTONS IN EMBEDDED DASHBAORD
def getDashboardURL(accountId, dashboardId, quicksightNamespace, resetDisabled, undoRedoDisabled):
    try:
        response = qs.get_dashboard_embed_url(
            AwsAccountId = accountId,
            DashboardId = dashboardId,
            AdditionalDashboardIds = additionalDashboardIds,
            Namespace = quicksightNamespace,
            IdentityType = 'ANONYMOUS',
            SessionLifetimeInMinutes = 600,
            UndoRedoDisabled = undoRedoDisabled,
            ResetDisabled = resetDisabled
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

------
#### [ Node.js ]

L'exemple suivant montre le JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications pour obtenir l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
const AWS = require('aws-sdk');
            const https = require('https');
            
            var quicksight = new AWS.Service({
                apiConfig: require('./quicksight-2018-04-01.min.json'),
                region: 'us-east-1',
            });
            
            quicksight.getDashboardEmbedUrl({
                'AwsAccountId': '111122223333',
                'DashboardId': '{{dashboard-id}}',
                'AdditionalDashboardIds': '{{added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3}}'
                'Namespace' : '{{default}}',
                'IdentityType': 'ANONYMOUS',
                'SessionLifetimeInMinutes': 100,
                'UndoRedoDisabled': false,
                'ResetDisabled': true
            
            }, function(err, data) {
                console.log('Errors: ');
                console.log(err);
                console.log('Response: ');
                console.log(data);
            });
```

**Example**  

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
            //readability and added ellipsis to indicate that it's incomplete.
                                { Status: 200,
              EmbedUrl: 'https://dashboards.example.com/embed/620bef10822743fab329fb3751187d2d…
              RequestId: '7bee030e-f191-45c4-97fe-d9faf0e03713' }
```

------
#### [ .NET/C\# ]

L'exemple suivant montre le. NET/C\# code que vous pouvez utiliser sur le serveur d'applications pour obtenir l'URL du tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord. 

**Example**  

```
            var client = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                sessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                Console.WriteLine(
                    client.GetDashboardEmbedUrlAsync(new GetDashboardEmbedUrlRequest
                    {
                        AwsAccountId = “{{111122223333}}”,
                        DashboardId = {{"dashboard-id"}},
                        AdditionalDashboardIds = {{"added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3"}},
                        Namespace = {{default}},
                        IdentityType = IdentityType.ANONYMOUS,
                        SessionLifetimeInMinutes = 600,
                        UndoRedoDisabled = false,
                        ResetDisabled = true
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
```

------
#### [ AWS CLI ]

Pour assumer ce rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)— Utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)— Utilisez cette opération lorsque vous utilisez un fournisseur d'identité Web pour authentifier votre utilisateur. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— Utilisez cette opération lorsque vous utilisez le langage SAML (Security Assertion Markup Language) pour authentifier vos utilisateurs.

L’exemple suivant illustre la commande de l’interface de ligne de commande pour définir le rôle IAM. Les autorisations doivent être activées pour `quicksight:GetDashboardEmbedURL`. 

```
aws sts assume-role \
     --role-arn "{{arn:aws:iam::{{11112222333}}:role/{{QuickSightEmbeddingAnonymousPolicy}}}}" \
     --role-session-name {{anonymous caller}}
```

L’opération `assume-role` renvoie trois paramètres de sortie : la clé d’accès, la clé secrète et le jeton de session. 

**Note**  
Si vous obtenez une erreur `ExpiredToken` lorsque vous appelez l’opération `AssumeRole`, ceci est probablement dû au fait que le précédent `SESSION TOKEN` est encore dans les variables de l’environnement. Pour l’effacer, définissez les variables suivantes :  
*AWS\_ACCESS\_KEY\_ID* 
*AWS\_SECRET\_ACCESS\_KEY* 
*AWS\_SESSION\_TOKEN* 

L’exemple suivant montre comment définir ces trois paramètres dans l’interface de ligne de commande. Si vous utilisez une machine Microsoft Windows, utilisez `set` au lieu de `export`.

```
export AWS_ACCESS_KEY_ID     = "{{access_key_from_assume_role}}"
export AWS_SECRET_ACCESS_KEY = "{{secret_key_from_assume_role}}"
export AWS_SESSION_TOKEN     = "{{session_token_from_assume_role}}"
```

L’exécution de ces commandes définit l’ID de session de rôle de l’utilisateur visitant votre site web sur `embedding_quicksight_dashboard_role/QuickSightEmbeddingAnonymousPolicy`. L’ID de session de rôle se compose du nom de rôle issu du `role-arn` et de la valeur `role-session-name`. L’utilisation de l’ID de session de rôle unique pour chaque utilisateur garantit que les autorisations appropriées sont définies pour chaque visiteur. Cela permet également de garder chaque session séparée et distincte. Si vous utilisez un ensemble de serveurs web, par exemple pour l’équilibrage de charge, et qu’une session est reconnectée à un autre serveur, une nouvelle session démarre.

Pour obtenir une URL signée pour le tableau de bord, appelez `get-dashboard-embed-url` à partir du serveur d’applications. Ceci renvoie l’URL du tableau de bord intégrable. L’exemple suivant montre comment obtenir l’URL d’un tableau de bord intégré à l’aide d’un appel côté serveur pour les utilisateurs qui effectuent des visites anonymes sur votre portail web ou votre application.

```
aws quicksight get-dashboard-embed-url \
     --aws-account-id {{111122223333}} \
     --dashboard-id {{dashboard-id}} \
     --additional-dashboard-ids {{added-dashboard-id-1 added-dashboard-id-2 added-dashboard-id-3}}
     --namespace {{default-or-something-else}} \
     --identity-type {{ANONYMOUS}} \
     --session-lifetime-in-minutes {{30}} \
     --undo-redo-disabled {{true}} \
     --reset-disabled {{true}} \
     --user-arn arn:aws:quicksight:{{us-east-1}}:{{111122223333}}:user/default/{{QuickSightEmbeddingAnonymousPolicy}}/embeddingsession
```

Pour de plus amples informations sur l’utilisation de cette opération, veuillez consulter [https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html). Vous pouvez utiliser cette opération et d’autres opérations d’API dans votre propre code. 

------