我正在嘗試使用 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 門戶,找到并選擇相關存儲帳戶,然后:
選擇訪問控制 (IAM)
轉到角色分配
單擊添加按鈕
從“角色”向下滾動到“存儲 Blob...”,然后選擇一種存儲 Blob 角色來滿足您的要求
在“選擇”文本框中,輸入您要通過 ADAL 獲取其令牌的主體名稱的一部分
單擊“保存”按鈕
完成后,嘗試再次運行您的應用程序。令牌可能需要刷新,因此請確保重新運行您的身份驗證和令牌檢索代碼。

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
我最終為 Azure 創建了一個服務請求票證,他們在此處回復了示例代碼,以便使用 golang 對 Azure 進行身份驗證:https: //github.com/google/go-cloud/blob/master/blob/azureblob/example_test。去#L111
- 1 回答
- 0 關注
- 197 瀏覽
添加回答
舉報
0/150
提交
取消