首页 > 解决方案 > 使用 Python SDK 调用时如何验证 Microsoft Azure 存储帐户的身份验证

问题描述

这是一个有效的 Python 代码。

from azure.storage.blob import BlockBlobService
accountName, key='stagingData', 'vZfqyMyHT3A=='
blobService=BlockBlobService(account_name=accountName, account_key=key)

即使我传递了错误的帐户凭据,似乎也会创建 blobService 客户端对象。它未经授权,并且仅在我尝试访问某些数据(可能来自其他文件,甚至当不同的用户尝试使用它时)时才会出现错误。有没有办法assert在现场纠正是否提供了正确的凭据,如果没有则停止执行?作为参考,我试过dir(blobService)了,它显示了 121 个方法和属性。从名称上看起来很合理的那些,无论帐户是否实际经过身份验证,都会显示类似的结果。

几乎所有使用访问令牌的其他 API 调用都会通过引发一些异常让您当场知道令牌是否无效。所以我希望也有办法检查 BlockBlobService 类。

标签: azureazure-storageazure-sdkazure-sdk-python

解决方案


正如您提到的,blobService 客户端对象不会验证帐户凭据。有关更多信息,我们可以从 github获取python 源代码。

以下代码是源代码的片段。没有对 Azure 存储服务器端的请求。所以它确实验证了帐户凭据。

def create_block_blob_service(self):
        '''
        Creates a BlockBlobService object with the settings specified in the 
        CloudStorageAccount.
        :return: A service object.
        :rtype: :class:`~azure.storage.blob.blockblobservice.BlockBlobService`
        '''
        try:
            from azure.storage.blob.blockblobservice import BlockBlobService
            return BlockBlobService(self.account_name, self.account_key,
                                    sas_token=self.sas_token,
                                    is_emulated=self.is_emulated,
                                    endpoint_suffix=self.endpoint_suffix)
        except ImportError:
            raise Exception('The package azure-storage-blob is required. '
                            + 'Please install it using "pip install azure-storage-blob"')

如果我们要验证帐户凭据。我们需要将请求发送到 Azure 存储服务器并检查响应。如果你坚持这样做,我建议你可以编写一个测试方法来自己实现它。


推荐阅读