Проблема с загрузкой из Azure с ClientID, TennantID и ClientSecret. ⇐ JAVA
Проблема с загрузкой из Azure с ClientID, TennantID и ClientSecret.
Я пытаюсь загрузить большой двоичный объект из хранилища Azure из кода Java m с помощью ClientID, TennantID и ClientSecret
Вот код для получения клиента:
private BlobContainerClient getContainerClient_SP(StringContainerName) { ClientSecretCredential clientSecretCredential = новый ClientSecretCredentialBuilder() .tenantId(идентификатор арендатора) .clientId(clientId) .clientSecret(клиентсекрет) .строить(); Конечная точка строки = String.format(Locale.ROOT, "https://%s.blob.core.windows.net/%s", accountName,ContainerName); BlobContainerClientContainerClient = новый BlobContainerClientBuilder() .конечная точка(конечная точка) .credential(clientSecretCredential) .buildClient(); вернуть контейнерКлиент; } Вот фрагмент кода для скачивания:
попробуй { BlobContainerClientContainerClient = getContainerClient_SP(имяконтейнера); BlobClient blobClient =ContainerClient.getBlobClient(blobName); String DestinationPath = "C:\\MyFolder\\MyFileName"; blobClient.downloadToFile(destinationPath, true); // Здесь выброшено исключение System.out.println("Загрузка ОК"); } поймать (Исключение ex) { System.out.println("Исключение приложения: "+ex.getMessage()); бросить бывшего; } Исключение:
Исключение в потоке «main» com.azure.storage.blob.models.BlobStorageException: если вы используете StorageSharedKeyCredential, а сервер вернул сообщение об ошибке «Подпись не соответствует», вы можете сравнить строку для подписи со строкой, созданной SDK. Чтобы зарегистрировать строку для подписи, передайте пару значений контекстного ключа «Azure-Storage-Log-String-To-Sign»: true для соответствующего вызова метода. Если вы используете токен SAS и сервер вернул сообщение об ошибке «Подпись не соответствует», вы можете сравнить строку для подписи со строкой, созданной SDK. Чтобы зарегистрировать строку для подписи, передайте пару значений контекстного ключа «Azure-Storage-Log-String-To-Sign»: true в соответствующий вызов методаgenerSas. Не забудьте отключить Azure-Storage-Log-String-To-Sign перед запуском в рабочую среду, поскольку эта строка потенциально может содержать персональные данные. Код состояния 403, "AuthorizationPermissionMismatchЭтому запросу не разрешено выполнять эту операцию с использованием этого разрешения. Идентификатор запроса: 57625f26-801e-0036-206a-ec1d2e000000 Время:2023-09-21T09:07:08.3082584Z" в java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) в com.azure.core.implementation.http.rest.ResponseExceptionConstructorCache.invoke(ResponseExceptionConstructorCache.java:56) Вопрос: что-то отсутствует/неправильно в коде или это ТОЛЬКО проблема с разрешением? Заранее спасибо
Я пытаюсь загрузить большой двоичный объект из хранилища Azure из кода Java m с помощью ClientID, TennantID и ClientSecret
Вот код для получения клиента:
private BlobContainerClient getContainerClient_SP(StringContainerName) { ClientSecretCredential clientSecretCredential = новый ClientSecretCredentialBuilder() .tenantId(идентификатор арендатора) .clientId(clientId) .clientSecret(клиентсекрет) .строить(); Конечная точка строки = String.format(Locale.ROOT, "https://%s.blob.core.windows.net/%s", accountName,ContainerName); BlobContainerClientContainerClient = новый BlobContainerClientBuilder() .конечная точка(конечная точка) .credential(clientSecretCredential) .buildClient(); вернуть контейнерКлиент; } Вот фрагмент кода для скачивания:
попробуй { BlobContainerClientContainerClient = getContainerClient_SP(имяконтейнера); BlobClient blobClient =ContainerClient.getBlobClient(blobName); String DestinationPath = "C:\\MyFolder\\MyFileName"; blobClient.downloadToFile(destinationPath, true); // Здесь выброшено исключение System.out.println("Загрузка ОК"); } поймать (Исключение ex) { System.out.println("Исключение приложения: "+ex.getMessage()); бросить бывшего; } Исключение:
Исключение в потоке «main» com.azure.storage.blob.models.BlobStorageException: если вы используете StorageSharedKeyCredential, а сервер вернул сообщение об ошибке «Подпись не соответствует», вы можете сравнить строку для подписи со строкой, созданной SDK. Чтобы зарегистрировать строку для подписи, передайте пару значений контекстного ключа «Azure-Storage-Log-String-To-Sign»: true для соответствующего вызова метода. Если вы используете токен SAS и сервер вернул сообщение об ошибке «Подпись не соответствует», вы можете сравнить строку для подписи со строкой, созданной SDK. Чтобы зарегистрировать строку для подписи, передайте пару значений контекстного ключа «Azure-Storage-Log-String-To-Sign»: true в соответствующий вызов методаgenerSas. Не забудьте отключить Azure-Storage-Log-String-To-Sign перед запуском в рабочую среду, поскольку эта строка потенциально может содержать персональные данные. Код состояния 403, "AuthorizationPermissionMismatchЭтому запросу не разрешено выполнять эту операцию с использованием этого разрешения. Идентификатор запроса: 57625f26-801e-0036-206a-ec1d2e000000 Время:2023-09-21T09:07:08.3082584Z" в java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) в com.azure.core.implementation.http.rest.ResponseExceptionConstructorCache.invoke(ResponseExceptionConstructorCache.java:56) Вопрос: что-то отсутствует/неправильно в коде или это ТОЛЬКО проблема с разрешением? Заранее спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение