使用Python SDK调用时如何验证Microsoft Azure存储帐户的身份验证

时间:2018-11-12 08:29:07

标签: azure azure-storage azure-sdk azure-sdk-python

这是有效的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类。

1 个答案:

答案 0 :(得分:1)

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

以下代码是源代码的摘录。没有向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存储服务器并检查响应。如果您坚持这样做,我建议您可以编写一个测试方法以自己实现。