使用交互式身份验证的控制台应用程序中的 Azure tableclient

Azure tableclient in console app using interactive authentication

我正在尝试使用 TableClient class 访问 Azure Table 存储,但我想通过浏览器弹出窗口使用 AzureAD 凭据进行身份验证。

我已经尝试了 2 种方法并且确信我在 Azure 中配置正确,但我只是不断得到

This request is not authorized to perform this operation using this permission.

这里是使用MSAL

的测试代码1
let app = PublicClientApplicationBuilder.Create("---registered app ID---")
             .WithAuthority(AzureCloudInstance.AzurePublic, "---tennant id----" )
             .WithDefaultRedirectUri()
             .Build()
let! ar = app.AcquireTokenInteractive(["https://storage.azure.com/user_impersonation"]).ExecuteAsync()
let tokenCredential = { new TokenCredential() with
              member x.GetTokenAsync(_,_) = task {return AccessToken(ar.AccessToken, ar.ExpiresOn)} |> ValueTask<AccessToken>
              member x.GetToken(_,_) = AccessToken(ar.AccessToken, ar.ExpiresOn)}
let tc = new TableClient(Uri("https://--endpoint---.table.core.windows.net/"), "--Table--",  tokenCredential)

并使用 Azure.Identity

测试 2
let io = new InteractiveBrowserCredentialOptions(ClientId = "---registered app ID---", RedirectUri = Uri("https://login.microsoftonline.com/common/oauth2/nativeclient"))
let tc = new TableClient(Uri("https://--endpoint---.table.core.windows.net/"), "--Table--", new InteractiveBrowserCredential(io))

我已在 Azure 中注册该应用程序,并且已在管理员同意的情况下为 Azure 存储添加 api 权限。我的帐户是租户的服务管理员,因此我可以完全访问存储帐户。我已经搜索了所有文档,但就是看不到我遗漏了什么。

要使用您的 Azure AD 凭据访问 table 数据,您的用户帐户应分配 Storage Table Data Contributor or Storage Table Data Reader 角色。

请将这些角色之一分配给您的用户帐户和 re-acquire 令牌。你不应该得到你得到的错误。