在公共容器上获取 “ AuthorizationPermissionMismatch”

问题描述 投票:1回答:1

我们使用NodeJS @@ azure / storage-blob SDK访问我们组织中的存储容器/ blob。我们开发了一个系统,其中用户可以通过登录到我们的服务器来访问私有容器,并通过我们的管理员将其帐户添加到某些IAM角色(向他们提供对blob的读取/写入/删除访问权限)。

现在,我们希望默认情况下允许一些新用户访问公共容器/ blob。我们已经公开了一个容器,并且可以通过URL访问到这些存储容器/ blob的公共链接,但是当尝试通过NodeJS API访问它们时,会出现“ AuthorizationPermissionMismatch”错误。

我们使用的代码如下:

function getBlobDirectories(result) {
   console.log(result);
}

function errorinlisting(err) {
   console.log(err);
}

const containerClient = global.getBlobService(this.storageAccount,req.user).getContainerClient(this.containerName);
let blobDirIterator = containerClient.listBlobsByHierarchy('/');
blobDirIterator.next().then(getBlobDirectories).catch(errorinlisting);

函数getBlobService看起来像这样:

exports.getBlobService = (storageAcc, user)=> {
    const account = storageAcc;
    const accountKey = storageaccountkeys[storageAcc]

    let blobServiceClient;

    const simpleTokenCredential = new SimpleTokenCredential(user.azureToken);
        blobServiceClient = new BlobServiceClient(
            `https://${account}.blob.core.windows.net`,
            simpleTokenCredential
        );
    return blobServiceClient;
}

调用listBlobsByHierarchy,以错误结束,最终以“ AuthorizationPermissionMismatch”错误调用上面的errorinlisting函数。

可能是什么问题?这是NodeJS API中的错误吗?

任何帮助都是无价的。

我们使用NodeJS @ azure / storage-blob SDK来访问我们组织中的存储容器/ blob。我们开发了一个系统,其中用户可以通过登录到...

azure azure-active-directory azure-storage azure-storage-blobs
1个回答
0
投票

如果您的容器是公共可访问的,您可能想要尝试创建没有证书的ContainerClient实例:

© www.soinside.com 2019 - 2024. All rights reserved.