wake-up-neo.com

Azure Blob Storage-Fehler "Autorisierungsberechtigung stimmt nicht überein" für Abrufanforderung mit AD-Token

Ich erstelle eine Angular 6-Anwendung, mit der der CRUD-Vorgang für Azure Blob Storage ausgeführt werden kann. Ich verwende jedoch Postman, um Anforderungen zu testen, bevor ich sie in die App implementiere und das Token kopiere das bekomme ich von Angular für diese Ressource.

Beim Versuch, eine Datei zu Testzwecken zu lesen, die sich im Speicher befindet, wird Folgendes angezeigt: <Code>AuthorizationPermissionMismatch</Code> <Message>This request is not authorized to perform this operation using this permission.

  • Alles in Produktionsumgebung (obwohl in Entwicklung)
  • Token, der speziell für Speicherressourcen über Oauth erworben wurde
  • Briefträger hat die Token-Strategie als "Träger"
  • Für die Anwendung wurden delegierte Berechtigungen für "Azure Storage" erteilt.
  • Sowohl die App als auch das Konto, von dem ich das Token erhalte, werden in Azure Access Control IAM als "Eigentümer" hinzugefügt
  • Meine IP wird zu den CORS-Einstellungen im Blob-Speicher hinzugefügt.
  • StorageV2 (Allzweck v2) - Standard - Hot
  • der verwendete x-ms-Versionsheader ist: 2018-03-28 weil das das neueste ist, was ich finden konnte und ich gerade das Speicherkonto erstellt habe.
6
MichaelB

Ich habe festgestellt, dass es nicht ausreicht, die App und das Konto als Eigentümer hinzuzufügen. Ich gehe zu Ihrem Speicherkonto> IAM> Rolle hinzufügen und füge die spezielle Berechtigung für diese Art von Anforderung hinzu, STORAGE BLOB DATA CONTRIBUTOR (VORSCHAU).

10
jager1000

Beachten Sie, dass das Anwenden der Rolle "STORAGE BLOB DATA XXXX" im Abonnementbereich nicht möglich ist, wenn Ihr Abonnement über Azure DataBricks-Namespaces verfügt:

Wenn Ihr Abonnement einen Azure DataBricks-Namespace enthält, werden Rollen, die im Abonnementbereich zugewiesen sind, daran gehindert, Zugriff auf Blob- und Warteschlangendaten zu gewähren.

Quelle: https://docs.Microsoft.com/en-us/Azure/storage/common/storage-auth-aad-rbac-portal#determine-resource-scope

1
sylr

Ich habe das gerade gelöst, indem ich die in der GetAccessTokenAsync-Methode angeforderte Ressource von " https://storage.Azure.com " in die URL meines Speicher-Blobs geändert habe, wie in diesem Snippet:

    public async Task<StorageCredentials> CreateStorageCredentialsAsync()
    {
        var provider = new AzureServiceTokenProvider();
        var token = await provider.GetAccessTokenAsync(AzureStorageContainerUrl);
        var tokenCredential = new TokenCredential(token);
        var storageCredentials = new StorageCredentials(tokenCredential);
        return storageCredentials;
    }

wobei AzureStorageContainerUrl auf https://xxxxxxxxx.blob.core.windows.net/ festgelegt ist

0
Liam