Autenticación y control de acceso para aplicaciones de usuario - Amazon WorkDocs

Aviso: las suscripciones de nuevos clientes y las actualizaciones de cuentas ya no están disponibles para Amazon. WorkDocs Obtén más información sobre los pasos de migración aquí: Cómo migrar datos de Amazon WorkDocs.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autenticación y control de acceso para aplicaciones de usuario

Las aplicaciones de nivel de usuario de Amazon WorkDocs se registran y administran mediante la consola Amazon WorkDocs. Los desarrolladores deben registrar sus aplicaciones en la página My Applications de la consola Amazon WorkDocs que proporciona ID únicos para cada aplicación. Durante el registro, los desarrolladores deben especificar los URI de redirección en los que recibirán los tokens de acceso, así como el ámbito de la aplicación.

Actualmente, las aplicaciones solo pueden obtener acceso a los sitios de Amazon WorkDocs en la misma cuenta de AWS en la que se registran.

Concesión de permisos para llamar a las API de Amazon WorkDocs

Los usuarios de la interfaz de línea de comandos deben tener permisos completos para Amazon WorkDocs y AWS Directory Service. Sin los permisos, cualquier llamada a la API devuelve mensajes de excepción de UnauthorizedResourceAccessException no autorizados. La siguiente política concede permisos completos.

{ "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 quiere conceder permisos de solo lectura, utilice esta política.

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

En la política, la primera acción otorga acceso a todas las operaciones de Describe de Amazon WorkDocs. La acción DescribeDirectories obtiene información sobre sus directorios de AWS Directory Service. Las operaciones de Amazon EC2 habilitan Amazon WorkDocs para obtener una lista de las VPC y las subredes.

Uso de identificadores de carpeta en las llamadas a la API

Siempre que una llamada a la API acceda a una carpeta, debe usar el ID de la carpeta, no el nombre de la carpeta. Por ejemplo, si pasa client.get_folder(FolderId='MyDocs'), la llamada a la API devuelve un mensaje UnauthorizedResourceAccessException y el siguiente mensaje 404.

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.

Para evitarlo, use el ID de la URL de la carpeta.

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

Al pasar ese ID, se obtiene un resultado correcto.

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'}}

Cree una aplicación

Como administrador de Amazon WorkDocs, cree su aplicación mediante los siguientes pasos.

Para crear una aplicación
  1. Abra la consola Amazon WorkDocs en https://console.aws.amazon.com/zocalo/.

  2. Elija Mis aplicaciones, Crear una aplicación.

  3. Escriba los siguientes valores:

    Nombre de la aplicación

    Nombre de la aplicación.

    Correo electrónico

    Dirección de correo electrónico que se va a asociar a la aplicación.

    Descripción de la aplicación

    Descripción de la aplicación.

    URI de redirección

    La ubicación a la que quiera que Amazon WorkDocs redirija el tráfico.

    Ámbitos de la aplicación

    El ámbito (lectura o escritura) que desea que tenga la aplicación. Para obtener más información, consulte Ámbitos de la aplicación.

  4. Seleccione Create (Crear).

Ámbitos de la aplicación

Amazon WorkDocs admite los siguientes ámbitos de aplicación:

  • Lectura de contenido (workdocs.content.read), que proporciona a la aplicación acceso a las siguientes API de Amazon WorkDocs:

    • Get*

    • Describe*

  • Escritura de contenido (workdocs.content.write), que proporciona a la aplicación acceso a las siguientes API de Amazon WorkDocs:

    • Create*

    • Update*

    • Delete*

    • Initiate*

    • Abort*

    • Add*

    • Remove*

Autorización

Después de completar el registro de una aplicación, esta puede solicitar autorización en nombre de cualquier usuario de Amazon WorkDocs. Para ello, la aplicación debe visitar el punto de conexión OAuth de Amazon WorkDocs, https://auth.amazonworkdocs.com/oauth y proporcionar los siguientes parámetros de consulta:

  • [Obligatorio] app_id: el ID de la aplicación generado cuando se registra una aplicación.

  • [Obligatorio] auth_type: el tipo OAuth de la solicitud. El valor admitido es ImplicitGrant.

  • [Obligatorio] redirect_uri: el URI de redirección registrado para una aplicación para recibir un token de acceso.

  • [Opcional] scopes: una lista de ámbitos delimitada por comas. Si no se especifica, se usa la lista de ámbitos seleccionados durante el registro.

  • [Opcional] state: una cadena que se devuelve junto con un token de acceso.

nota

Si necesita módulos criptográficos validados FIPS 140-2 al acceder a AWS a través de una interfaz de línea de comandos o una API, utilice un punto de enlace de FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte Estándar de procesamiento de la información federal (FIPS) 140-2.

Una solicitud GET de ejemplo para iniciar el flujo de OAuth para obtener un token de acceso:

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

Estas son las operaciones que tienen lugar durante el flujo de autorización de OAuth:

  1. Se pide al usuario de la aplicación que escriba el nombre de sitio de Amazon WorkDocs.

  2. El usuario es redirigido a la página de autenticación de Amazon WorkDocs para escribir sus credenciales.

  3. Una vez realizada la autenticación, se le presenta al usuario la pantalla de consentimiento en la que puede conceder o denegar a la aplicación la autorización para obtener acceso a Amazon WorkDocs.

  4. Cuando el usuario elige Accept en la pantalla de consentimiento, el navegador se redirige a la URL de devolución de llamada de la aplicación con el token de acceso y la información de la región como parámetros de consulta.

Ejemplo de solicitud GET de Amazon WorkDocs:

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

Además del token de acceso, el servicio OAuth de Amazon WorkDocs devuelve también region como parámetro de consulta para el sitio de Amazon WorkDocs seleccionado. Las aplicaciones externas deben usar el parámetro region para determinar el punto de conexión del servicio de Amazon WorkDocs.

Si necesita módulos criptográficos validados FIPS 140-2 al acceder a AWS a través de una interfaz de línea de comandos o una API, utilice un punto de enlace de FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte Estándar de procesamiento de la información federal (FIPS) 140-2.

Invocar las API de Amazon WorkDocs

Después de obtener el token de acceso, la aplicación puede realizar llamadas a la API a servicios de Amazon WorkDocs.

importante

En este ejemplo, se muestra cómo utilizar una solicitud GET de curl para obtener los metadatos de un documento.

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

Una función JavaScript de ejemplo para describir las carpetas raíz del usuario:

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); }); }

A continuación se describe una invocación a una API basada en Java de ejemplo:

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()); }