Authentification et contrôle d'accès pour les applications utilisateur - Amazon WorkDocs

Remarque : les inscriptions de nouveaux clients et les mises à niveau de compte ne sont plus disponibles pour Amazon. WorkDocs Découvrez les étapes de migration ici : Comment migrer des données depuis WorkDocs.

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.

Authentification et contrôle d'accès pour les applications utilisateur

WorkDocs les applications de niveau utilisateur sont enregistrées et gérées via la WorkDocs console. Les développeurs doivent enregistrer leurs applications sur la My Applications page de la WorkDocs console qui fournira des informations uniques IDs pour chaque application. Lors de l'enregistrement, les développeurs doivent spécifier la redirection vers URIs laquelle ils recevront les jetons d'accès ainsi que les champs d'application.

À l'heure actuelle, les applications ne peuvent accéder qu'aux WorkDocs sites du même AWS compte sur lequel elles sont enregistrées.

Octroi d'autorisations pour appeler le WorkDocs APIs

Les utilisateurs de l'interface de ligne de commande doivent disposer d'autorisations complètes pour WorkDocs et Directory Service. Sans les autorisations, tous les appels d'API renvoient UnauthorizedResourceAccessExceptiondes messages. La politique suivante accorde des autorisations complètes.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "workdocs:*", "ds:*", "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:CreateNetworkInterface", "ec2:CreateTags", "ec2:CreateSecurityGroup", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAvailabilityZones", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:DeleteSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress" ], "Effect": "Allow", "Resource": "*" } ] }

Si vous souhaitez accorder des autorisations en lecture seule, utilisez cette politique.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "workdocs:Describe*", "ds:DescribeDirectories", "ec2:DescribeVpcs", "ec2:DescribeSubnets" ], "Effect": "Allow", "Resource": "*" } ] }

Dans la politique, la première action donne accès à toutes les WorkDocs Describe opérations. L'DescribeDirectories action permet d'obtenir des informations sur vos Directory Service annuaires. Les EC2 opérations Amazon permettent d' WorkDocs obtenir une liste de vos sous-réseaux VPCs et de vos sous-réseaux.

Utilisation d'un dossier IDs dans les appels d'API

Chaque fois qu'un appel d'API accède à un dossier, vous devez utiliser l'ID du dossier, et non le nom du dossier. Par exemple, si vous réussissezclient.get_folder(FolderId='MyDocs'), l'appel d'API renvoie un UnauthorizedResourceAccessExceptionmessage et le message 404 suivant.

client.get_folder(FolderId='MyDocs') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\user-name\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\client.py", line 253, in _api_call return self._make_api_call(operation_name, kwargs) File "C:\Users\user-name\AppData\Local\Programs\Python\Python36-32\lib\site-packages\botocore\client.py", line 557, in _make_api_call raise error_class(parsed_response, operation_name) botocore.errorfactory.UnauthorizedResourceAccessException: An error occurred (UnauthorizedResourceAccessException) when calling the GetFolder operation: Principal [arn:aws:iam::395162986870:user/Aman] is not allowed to execute [workdocs:GetFolder] on the resource.

Pour éviter cela, utilisez l'ID figurant dans l'URL du dossier.

site.workdocs/index.html#/folder/abc123def456ghi789jkl789mno4be7024df198736472dd50ca970eb22796082e3d489577.

La transmission de cet identifiant renvoie un résultat correct.

client.get_folder(FolderId='abc123def456ghi789jkl789mno4be7024df198736472dd50ca970eb22796082e3d489577') {'ResponseMetadata': {'RequestId': 'f8341d4e-4047-11e7-9e70-afa8d465756c', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'f234564e-1234-56e7-89e7-a10fa45t789c', 'cache-control': 'private, no-cache, no-store, max-age=0', 'content-type': 'application/json', 'content-length': '733', 'date': 'Wed, 24 May 2017 06:12:30 GMT'}, 'RetryAttempts': 0}, 'Metadata': {'Id': 'abc123def456ghi789jkl789mno4be7024df198736472dd50ca970eb22796082e3d489577', 'Name': 'sentences', 'CreatorId': 'S-1-5-21-2125721135-1643952666-3011040551-2105&d-906724f1ce', 'ParentFolderId': '0a811a922403ae8e1d3c180f4975f38f94372c3d6a2656c50851c7fb76677363', 'CreatedTimestamp': datetime.datetime(2017, 5, 23, 12, 59, 13, 8000, tzinfo=tzlocal()), 'ModifiedTimestamp': datetime.datetime(2017, 5, 23, 13, 13, 9, 565000, tzinfo=tzlocal()), 'ResourceState': 'ACTIVE', 'Signature': 'b7f54963d60ae1d6b9ded476f5d20511'}}

Création d’une application

En tant WorkDocs qu'administrateur, créez votre application en suivant les étapes ci-dessous.

Pour créer une application
  1. Ouvrez la WorkDocs console à l'adresse https://console.aws.amazon.com/zocalo/.

  2. Choisissez My Applications (Mes applications), Create application (Créer une application).

  3. Entrez les valeurs suivantes :

    Nom de l'application

    Nom de l'application.

    E-mail

    Adresse e-mail à associer à l'application.

    Description de l'application

    Description de l'application.

    Rediriger URIs

    Emplacement vers lequel vous WorkDocs souhaitez rediriger le trafic.

    Application Scopes (Périmètres d'application)

    Le périmètre, en lecture ou écriture, que votre application doit avoir. Pour en savoir plus, consultez Périmètres d'application.

  4. Choisissez Créer.

Périmètres d'application

WorkDocs prend en charge les domaines d'application suivants :

  • Content Read (workdocs.content.read), qui permet à votre application d'accéder aux éléments suivants WorkDocs APIs :

    • Faites*

    • Describe*

  • Content Write (workdocs.content.write), qui permet à votre application d'accéder aux éléments suivants WorkDocs APIs :

    • Créer*

    • Mise à jour*

    • Supprimer*

    • Initiate*

    • Abort*

    • Addition*

    • Supprimez*

Autorisation

Une fois l'enregistrement de la demande terminé, une application peut demander une autorisation au nom de n'importe quel WorkDocs utilisateur. Pour ce faire, l'application doit visiter le WorkDocs OAuth point de terminaison et fournir les paramètres de requête suivants : https://auth.amazonworkdocs.com/oauth

  • [Obligatoire] app_id —ID d'application généré lors de l'enregistrement d'une application.

  • [auth_typeObligatoire] : OAuth type de demande. La valeur prise en charge est ImplicitGrant.

  • [Obligatoire] redirect_uri : l'URI de redirection est enregistrée pour qu'une application reçoive un jeton d'accès.

  • [Facultatif] scopes : liste de portées séparées par des virgules. En l'absence de spécification, la liste des paramètres sélectionnés pendant l'inscription sera utilisée.

  • [stateFacultatif] : chaîne renvoyée avec un jeton d'accès.

Note

Si vous avez besoin de modules cryptographiques validés FIPS 140-2 lorsque vous accédez à AWS via une interface de ligne de commande ou une API, utilisez un point de terminaison FIPS. Pour plus d’informations sur les points de terminaison FIPS (Federal Information Processing Standard) disponibles, consultez Federal Information Processing Standard (FIPS) 140-2 (Normes de traitement de l’information fédérale).

Exemple de requête GET pour lancer le OAuth flux afin d'obtenir un jeton d'accès :

GET https://auth.amazonworkdocs.com/oauth?app_id=my-app-id&auth_type=ImplicitGrant&redirect_uri=https://myapp.com/callback&scopes=workdocs.content.read&state=xyz

Les événements suivants se produisent au cours du flux OAuth d'autorisation :

  1. L'utilisateur de l'application est invité à saisir le nom du WorkDocs site.

  2. L'utilisateur est redirigé vers la page WorkDocs d'authentification pour saisir ses informations d'identification.

  3. Après une authentification réussie, un écran de consentement s'affiche, qui permet à l'utilisateur d'accorder à l'application ou de lui refuser l'autorisation d'accéder à WorkDocs.

  4. Une fois que l'utilisateur choisitr Accept sur l'écran de consentement, son navigateur est redirigé vers l'URL de rappel de l'application avec le jeton d'accès et les informations de région comme paramètres de la requête.

Exemple de requête GET provenant de WorkDocs :

GET https://myapp.com/callback?acessToken=accesstoken&region=us-east-1&state=xyz

Outre le jeton d'accès, le WorkDocs OAuth service renvoie region également un paramètre de requête pour le WorkDocs site sélectionné. Les applications externes doivent utiliser le region paramètre pour déterminer le point de terminaison du WorkDocs service.

Si vous avez besoin de modules cryptographiques validés FIPS 140-2 lorsque vous accédez à AWS via une interface de ligne de commande ou une API, utilisez un point de terminaison FIPS. Pour plus d’informations sur les points de terminaison FIPS (Federal Information Processing Standard) disponibles, consultez Federal Information Processing Standard (FIPS) 140-2 (Normes de traitement de l’information fédérale).

Invoquer WorkDocs APIs

Une fois qu'elle a obtenu le jeton d'accès, votre application peut faire des appels d'API en direction des services WorkDocs.

Important

Cet exemple montre comment utiliser une requête CURL GET pour obtenir les métadonnées d'un document.

Curl "https://workdocs.us-east-1.amazonaws.com/api/v1/documents/{document-id}" -H "Accept: application/json" -H "Authentication: Bearer accesstoken"

Exemple de JavaScript fonction pour décrire les dossiers racines d'un utilisateur :

function printRootFolders(accessToken, siteRegion) { var workdocs = new AWS.WorkDocs({region: siteRegion}); workdocs.makeUnauthenticatedRequest("describeRootFolders", {AuthenticationToken: accessToken}, function (err, folders) { if (err) console.log(err); else console.log(folders); }); }

Un exemple d'appel d'API basé sur Java est décrit ci-après :

AWSCredentialsProvider credentialsProvider = new AWSCredentialsProvider() { @Override public void refresh() {} @Override public AWSCredentials getCredentials() { new AnonymousAWSCredentials(); } }; // Set the correct region obtained during OAuth flow. workDocs = AmazonWorkDocsClient.builder().withCredentials(credentialsProvider) .withRegion(Regions.US_EAST_1).build(); DescribeRootFoldersRequest request = new DescribeRootFoldersRequest(); request.setAuthenticationToken("access-token-obtained-through-workdocs-oauth"); DescribeRootFoldersResult result = workDocs.describeRootFolders(request); for (FolderMetadata folder : result.getFolders()) { System.out.printf("Folder name=%s, Id=%s \n", folder.getName(), folder.getId()); }