Я ищу простой способ проверки произвольную строку подключения Azure Table, которая использует SAS, такие как один ниже с помощью Java SDK в Azure Storage в:Проверка Azure Table SAS на основе учетных данных
https://example.table.core.windows.net/example?sig=aaabbbcccdddeeefffggghhh%3D&se=2020-01-01T00%3A00%3A00Z&sv=2015-04-05&tn=example&sp=raud
Я попробовал кучу разных методов, выставленных CloudTable api, но ни один из них не работает.
CloudTable.exists()
бросает StorageException, независимо от того, являются ли действительные учетные данныеgetName()
,getStorageUri()
,getUri()
и другие добытчики - все работают на местном уровне, независимо от полномочийgetServiceClient().downloadServiceProperties()
иgetServiceClient().getServiceStats()
также бросают различные исключения, аgetServiceClient().getEndpoint()
иgetServiceClient().getCredentials()
и другие всегда работают локально.Почему я не просто запрашиваю таблицу для строки или двух? Ну, во многих случаях мне нужно проверить SAS, который дает только сообщения для записи или обновления (без разрешений
delete
илиread
), и я не хочу выполнять инструкцию, которая что-то изменяет в таблице только для проверки учетных данных.
Спасибо. Вопрос не в том, почему какой-либо из этих вещей не работает, я просто упомянул некоторые вещи, которые я уже пробовал. Вопрос заключается в том, чтобы предложить рабочее решение. Решение 'Conflict' будет работать, но мне нужно выполнить вставку или узнать заранее, какой PartitionKey + RowKey уже существует в таблице. Etag - интересная идея, но я не мог заставить ее работать - мне удалось вставить фиктивные объекты с полностью случайными Etags, что снова требует вставки, чтобы проверить, действительно ли координаты и учетные данные действительны. Я что-то упускаю? – Malt
Теперь я смущен :). Таким образом, вы хотите проверить действительность токена SAS без каких-либо вставок или обновлений или, в этом случае, какой-либо сетевой операции. Правильно ли я понимаю? –
Я никогда не говорил «без какой-либо сетевой операции», что было бы явно невозможно. Я просто не хочу менять состояние таблицы каждый раз, когда я проверяю SAS. Я ищу операцию, которая ничего не меняет в таблице. Например, с Azure Queue, downloadAttributes() подходит для счета - нет изменения состояния, и он не работает, если SAS неверен. – Malt