为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
紫衣仙女 2023-07-31 15:38:52
我正在尝试使用 azblob go libary 使用服务主体访问 blob 存储,我找到了一个 API: https: //godoc.org/github.com/Azure/azure-storage-blob-go/azblob#NewTokenCredential 似乎它可以从 Adal lib 中获取 OAuthToken,但我总是收到此错误:AuthorizationPermissionMismatchoauthConfig, 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(...)如果我将 NewTokenCredential 与 SharedKeyToken 进行交换,那么代码可以正常运行,但我们不能在我们的环境中使用 SharedKeyToken。
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

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

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

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

  1. 选择访问控制 (IAM)

  2. 转到角色分配

  3. 单击添加按钮

  4. 从“角色”向下滚动到“存储 Blob...”,然后选择一种存储 Blob 角色来满足您的要求

  5. “选择”文本框中,输入您要通过 ADAL 获取其令牌的主体名称的一部分

  6. 单击“保存”按钮

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


查看完整回答
反对 回复 2023-07-31
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

我最终为 Azure 创建了一个服务请求票证,他们在此处回复了示例代码,以便使用 golang 对 Azure 进行身份验证:https: //github.com/google/go-cloud/blob/master/blob/azureblob/example_test。去#L111


查看完整回答
反对 回复 2023-07-31
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信