无法使用 InteractiveBrowserCredential 连接到 Azure Blob 存储

Posted

技术标签:

【中文标题】无法使用 InteractiveBrowserCredential 连接到 Azure Blob 存储【英文标题】:Unable to connect to azure blob storage using InteractiveBrowserCredential 【发布时间】:2020-05-28 04:09:27 【问题描述】:

这段代码运行良好:

from azure.storage.blob import BlobServiceClient
from azure.identity import InteractiveBrowserCredential, DeviceCodeCredential, ClientSecretCredential

credential = DeviceCodeCredential(authority="login.microsoftonline.com", tenant_id="***", client_id="***")

blobber = BlobServiceClient(account_url="https://***.blob.core.windows.net", credential=credential)

blobs = blobber.list_containers()
for b in blobs:
    print(b)

我运行它,浏览到 url,填写我发出的代码,随后连接成功并返回容器列表。

但是,当我尝试切换到 InteractiveBrowserCredential 时:

credential = InteractiveBrowserCredential(authority="login.microsoftonline.com", tenant_id="***", client_id="***")

blobber = BlobServiceClient(account_url="https://***.blob.core.windows.net", credential=credential)

blobs = blobber.list_containers()
for b in blobs:
    print(b)

浏览器确实打开了,我得到了令牌,但身份验证失败并出现以下错误:

azure.core.exceptions.ClientAuthenticationError: Authentication failed: AADSTS7000218: The request body must contain the following parameter: 'client_assertion' or 'client_secret'.

网上看类似问题,根本原因通常是应用没有在Azure AD中注册为PublicClient。但是 - 这不是这里的情况。我确保该应用程序已注册为公共客户端。事实上 - 第一个样本完美地证明了这一点。

我在这里敲我的头。还有其他建议吗?

【问题讨论】:

【参考方案1】:

要使用InteractiveBrowserCredential,您需要在移动和桌面应用程序平台而不是web平台下添加重定向网址。如果你在web平台下添加redirect url,你会遇到这个问题。

您的代码运行良好。

【讨论】:

非常感谢!完成了这项工作。我真的很绝望:-)

以上是关于无法使用 InteractiveBrowserCredential 连接到 Azure Blob 存储的主要内容,如果未能解决你的问题,请参考以下文章

无法访问您试图使用的功能所在的网络位置

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别