Я пытаюсь использовать MSI для доступа к контейнерам хранилища BLOB-объектов Azure для создания подписи общего доступа. Но каждый раз, когда я пытаюсь получить доступ, я получаю следующую ошибку:
`java.lang.IllegalArgumentException: Cannot create Shared Access Signature unless the Account Key credentials are used by the ServiceClient.`
Я не хочу получать доступ к контейнеру хранилища BLOB-объектов, используя учетные данные или AAD. Просто хочу использовать MSI, так как это уникальный режим, который мы хотим адаптировать в нашем приложении для доступа к ресурсам Azure. Чего мне не хватает. Я проверил в своих журналах Splunk, что токен MSI успешно генерируется. Ниже показано, как я создаю CloudBlobClient для доступа к контейнеру Blob:
public CloudBlobClient cloudBlobClient() throws URISyntaxException {
String storageAccountName = propertyUtil.getStorageAccountName();
// Implemented some logic in AzureStorageMSICredential class to fetch access
// token, and its working correctly
String msiToken = azureStorageMSICredentials.getToken();
LOG.info("Initiating CloudBlobClient.... msitoken = " + msiToken);
StorageCredentials storageCredentials =
new StorageCredentialsToken(storageAccountName, msiToken);
URI storageAccountURI = URIUtils.getStorageAccountURI(storageAccountName);
CloudBlobClient cloudBlobClient = new CloudBlobClient(storageAccountURI,
storageCredentials);
return cloudBlobClient;
}
Я просмотрел много потоков в stackoverflow, которые кажутся дубликатами этого, но на самом деле это не так. Некоторые из них 2017 года.