Как проверить аутентификацию учетных записей хранения Microsoft Azure при вызове с Python SDK - PullRequest
0 голосов
/ 12 ноября 2018

Вот рабочий код 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 голосов
/ 12 ноября 2018

Как вы упомянули, клиентский объект blobService не проверяет учетные данные учетной записи. Для получения дополнительной информации мы можем получить исходный код python от github.

Следующий код является фрагментом из исходного кода. Нет запроса на стороне сервера хранения 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 и проверить ответ. Если вы продолжаете делать это, я рекомендую вам написать тестовый метод, чтобы реализовать его самостоятельно.

...