azure - 使用 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 类。
解决方案
正如您提到的,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 存储服务器并检查响应。如果你坚持这样做,我建议你可以编写一个测试方法来自己实现它。
推荐阅读
- r - 如何计算 lapply 中向量的序列号?
- java - 如何使用扫描仪 hasNext() 循环遍历一行键盘文本并验证用户输入的整数和字符串
- angular - “typeof Observable”类型上不存在属性“forkJoin”。角 8
- php - Laravel 6 寻找有关如何解决表单开关问题的提示
- javascript - Typescript 中的 NgIf 和 NgSwitch 而不是 Html 可能吗?
- python - 在python中将字符串拆分为两个变量时出错
- vue.js - Quasar Axios 请求错误的 URL(双 URL)
- css - 如何在样式化组件的 props 函数中访问 CSS 变量?
- javascript - React Context 不渲染组件
- php - 在 laravel 中设置自定义验证消息而不创建请求类的智能方法