Authentifizierung und Zugriffskontrolle für Benutzeranwendungen - Amazon WorkDocs

Hinweis: Neukundenanmeldungen und Kontoerweiterungen sind für Amazon WorkDocs nicht mehr verfügbar. Informationen zu den Migrationsschritten finden Sie hier: So migrieren Sie Daten von WorkDocs.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizierung und Zugriffskontrolle für Benutzeranwendungen

WorkDocs Anwendungen auf Benutzerebene werden über die WorkDocs Konsole registriert und verwaltet. Entwickler sollten ihre Anwendungen auf der My Applications Seite in der WorkDocs Konsole registrieren, die IDs für jede Anwendung eindeutig ist. Bei der Registrierung sollten Entwickler die Weiterleitung angeben, URIs an die sie Zugriffstoken sowie die Anwendungsbereiche erhalten sollen.

Derzeit können Anwendungen nur auf WorkDocs Websites innerhalb desselben AWS Kontos zugreifen, in dem sie registriert sind.

Erteilung von Berechtigungen zum Aufrufen von WorkDocs APIs

Benutzer der Befehlszeilenschnittstelle müssen über vollständige Berechtigungen für WorkDocs und verfügen AWS Directory Service. Ohne die Berechtigungen geben alle API-Aufrufe UnauthorizedResourceAccessExceptionNachrichten zurück. Die folgende Richtlinie gewährt volle Berechtigungen.

{ "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": "*" } ] }

Verwenden Sie diese Richtlinie, wenn Sie nur Leseberechtigungen gewähren möchten.

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

In der Richtlinie gewährt die erste Aktion Zugriff auf alle Operationen. WorkDocs Describe Die DescribeDirectories Aktion ruft Informationen über Ihre AWS Directory Service Verzeichnisse ab. Die EC2 Amazon-Operationen WorkDocs ermöglichen es, eine Liste Ihrer VPCs und Subnetze zu erhalten.

Ordner IDs in API-Aufrufen verwenden

Immer wenn ein API-Aufruf auf einen Ordner zugreift, müssen Sie die Ordner-ID verwenden, nicht den Ordnernamen. Wenn Sie den Vorgang beispielsweise bestehenclient.get_folder(FolderId='MyDocs'), gibt der API-Aufruf eine UnauthorizedResourceAccessExceptionNachricht und die folgende 404-Nachricht zurück.

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.

Um dies zu vermeiden, verwenden Sie die ID in der URL des Ordners.

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

Wenn Sie diese ID übergeben, wird ein korrektes Ergebnis zurückgegeben.

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

Erstellen einer Anwendung

Als WorkDocs Administrator erstellen Sie Ihre Anwendung mithilfe der folgenden Schritte.

So erstellen Sie eine Anwendung
  1. Öffnen Sie die WorkDocs Konsole unter https://console.aws.amazon.com/zocalo/.

  2. Wählen Sie Meine Anwendungen, Eine Anwendung erstellen.

  3. Geben Sie die folgenden Werte ein:

    Anwendungsname

    Name für die Anwendung.

    E-Mail

    Die der Anwendung zuzuordnende E-Mail-Adresse.

    Anwendungsbeschreibung

    Beschreibung für die Anwendung.

    Umleiten URIs

    Der Standort, an den Sie WorkDocs den Verkehr umleiten möchten.

    Anwendungsbereiche

    Der für Ihre Anwendung gewünschte Bereich, entweder Lese- oder Schreibzugriff. Weitere Details finden Sie unter Anwendungsbereiche.

  4. Wählen Sie Erstellen aus.

Anwendungsbereiche

WorkDocs unterstützt die folgenden Anwendungsbereiche:

  • Content Read (workdocs.content.read), wodurch Ihre Anwendung auf Folgendes WorkDocs APIs zugreifen kann:

    • Get*

    • Describe*

  • Content Write (workdocs.content.write), wodurch Ihre Anwendung auf Folgendes zugreifen kann WorkDocs APIs:

    • Geben Sie einen Namen für den Benutzer ein und klicken Sie dann auf*

    • Update*

    • Delete*

    • Initiate*

    • Abort*

    • Add*

    • Remove*

Autorisierung

Nachdem die Registrierung der Anwendung abgeschlossen ist, kann eine Anwendung im Namen eines beliebigen WorkDocs Benutzers eine Autorisierung beantragen. Zu diesem Zweck sollte die Anwendung den WorkDocs OAuth Endpunkt aufrufen https://auth.amazonworkdocs.com/oauth und die folgenden Abfrageparameter bereitstellen:

  • [Erforderlich] app_id — Anwendungs-ID, die generiert wird, wenn eine Anwendung registriert wird.

  • [Erforderlich] auth_type — Der OAuth Typ für die Anforderung. Der unterstützte Wert ist ImplicitGrant.

  • [Erforderlich] redirect_uri — Die Umleitungs-URI, die für eine Anwendung registriert wurde, um ein Zugriffstoken zu erhalten.

  • [Optional] scopes — Eine durch Kommas getrennte Liste von Bereichen. Wenn keine Angabe gemacht wird, wird die während der Registrierung ausgewählte Liste von Bereichen verwendet.

  • [Optional] state — Eine Zeichenfolge, die zusammen mit einem Zugriffstoken zurückgegeben wird.

Anmerkung

Wenn Sie für den Zugriff auf AWS über eine Befehlszeilenschnittstelle oder eine API FIPS 140-2-validierte kryptografische Module benötigen, verwenden Sie einen FIPS-Endpunkt. Weitere Informationen über verfügbare FIPS-Endpunkte finden Sie unter Federal Information Processing Standard (FIPS) 140-2.

Ein Beispiel für eine GET-Anfrage zur Initiierung des OAuth Flows zum Abrufen eines Zugriffstokens:

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

Während des OAuth Autorisierungsablaufs findet Folgendes statt:

  1. Der Anwendungsbenutzer wird aufgefordert, den Namen der WorkDocs Site einzugeben.

  2. Der Benutzer wird zur WorkDocs Authentifizierungsseite weitergeleitet, um seine Anmeldeinformationen einzugeben.

  3. Nach einer erfolgreichen Authentifizierung wird dem Benutzer der Zustimmungsbildschirm angezeigt. Hier kann der Benutzer der Anwendung die Autorisierung zum Zugriff auf WorkDocs entweder gewähren oder verweigern.

  4. Nachdem der Benutzer auf dem Zustimmungsbildschirm auf Accept klickt, wird sein Browser zusammen mit dem Zugriffstoken und den Regionsangaben als Abfrageparameter zur Rückruf-URL der Anwendung umgeleitet.

Ein Beispiel für eine GET-Anfrage von WorkDocs:

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

Zusätzlich zum Zugriffstoken gibt der WorkDocs OAuth Dienst auch region als Abfrageparameter für die ausgewählte WorkDocs Site zurück. Externe Anwendungen sollten den region Parameter verwenden, um den WorkDocs Dienstendpunkt zu bestimmen.

Wenn Sie für den Zugriff auf AWS über eine Befehlszeilenschnittstelle oder eine API FIPS 140-2-validierte kryptografische Module benötigen, verwenden Sie einen FIPS-Endpunkt. Weitere Informationen über verfügbare FIPS-Endpunkte finden Sie unter Federal Information Processing Standard (FIPS) 140-2.

Aufrufen WorkDocs APIs

Nachdem das Zugriffstoken empfangen wurde, kann Ihre Anwendung API-Aufrufe an WorkDocs-Services vornehmen.

Wichtig

Dieses Beispiel zeigt, wie eine curl-GET-Anfrage verwendet wird, um die Metadaten eines Dokuments abzurufen.

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

Eine JavaScript Beispielfunktion zur Beschreibung der Stammordner eines Benutzers:

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

Ein Java-basierter API-Beispielaufruf wird nachstehend beschrieben:

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