Azure Blob StorageでCRUD操作を行うことができるAngular 6アプリケーションを作成しています。ただし、アプリ内に実装してトークンをコピーして貼り付ける前に、郵便配達員を使用してリクエストをテストしていますそのリソースのAngularから取得します。
テスト目的でストレージ内にあるファイルを読み取ろうとすると、次のようになります:<Code>AuthorizationPermissionMismatch</Code> <Message>This request is not authorized to perform this operation using this permission.
2018-03-28
これは最新のものであり、ストレージアカウントを作成したばかりだからです。アプリとアカウントを所有者として追加するだけでは不十分であることがわかりました。ストレージアカウント> IAM>ロールを追加し、このタイプのリクエストに特別な権限を追加します。STORAGEBLOB DATA CONTRIBUTOR(PREVIEW)
サブスクリプションスコープで「STORAGE BLOB DATA XXXX」ロールを適用する場合、サブスクリプションにAzure DataBricks名前空間がある場合は機能しないことに注意してください。
サブスクリプションにAzure DataBricks名前空間が含まれている場合、サブスクリプションスコープで割り当てられたロールは、blobおよびキューデータへのアクセスを許可することからブロックされます。
GetAccessTokenAsyncメソッドで要求されたリソースを " https://storage.Azure.com "からこのスニペットのようにストレージBLOBのURLに変更することでこれを解決しました。
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;
}
azureStorageContainerUrlが https://xxxxxxxxx.blob.core.windows.net/ に設定されている場合