gpt4 book ai didi

Azure Blob Go lib使用TokenCredential访问blob api总是返回错误

转载 作者:行者123 更新时间:2023-12-01 22:28:07 26 4
gpt4 key购买 nike

我正在尝试使用 azblob go libary 来使用服务主体访问 blob 存储,我发现了一个 API: https://godoc.org/github.com/Azure/azure-storage-blob-go/azblob#NewTokenCredential似乎它可以从 Adal lib 中获取 OAuthToken,但我总是收到此错误:AuthorizationPermissionMismatch

oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, tenantID)
spt, err := adal.NewServicePrincipalToken(*oauthConfig, clientID, clientSecret, "https://storage.azure.com/")
creds := azblob.NewTokenCredential(spt.OAuthToken(), nil)
blobPipeline := azblob.NewPipeline(creds, azblob.PipelineOptions{})
url := azblob.NewContainerURL(*URL, blobPipeline)
_, err := url.ListBlobsHierarchySegment(...)

如果我用 SharedKeyToken 替换 NewTokenCredential,那么代码可以正常运行,但我们不能在我们的环境中使用 SharedKeyToken。

最佳答案

好消息是身份验证似乎已成功进行,因此您对 ADAL 库的使用似乎没问题。

最可能的原因是,您用于向 Azure Active Directory 进行身份验证的主体没有访问存储帐户中的 blob 所需的权限。

您需要登录 Azure 门户,找到并选择相关存储帐户,然后:

  1. 选择访问控制 (IAM)
  2. 转到角色分配
  3. 点击添加按钮
  4. 角色向下滚动到存储 Blob...,然后选择一个存储 Blob 角色来满足您的要求
  5. 选择文本框中,输入您要通过 ADAL 获取其 token 的委托(delegate)人姓名的一部分
  6. 点击保存按钮

完成后,尝试再次运行您的应用。 token 可能需要刷新,因此请确保重新运行您的身份验证和 token 检索代码。

关于Azure Blob Go lib使用TokenCredential访问blob api总是返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58495087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com