我们使用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。我们开发了一个系统,其中用户可以通过登录到...
如果您的容器是公共可访问的,您可能想要尝试创建没有证书的ContainerClient
实例: