Spring GCP Storage. Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой секрJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring GCP Storage. Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой секр

Сообщение Anonymous »

Я загружаю файл в Google Storage и пытаюсь создать общедоступную ссылку:

Код: Выделить всё

    Storage.BlobWriteOption precondition;
Blob blob = storage.get(bucketName, name);
if (blob == null) {
precondition = Storage.BlobWriteOption.doesNotExist();
} else {
precondition = Storage.BlobWriteOption.generationMatch(blob.getGeneration());
}

Blob rs = storage.createFrom(BlobInfo.newBuilder(BlobId.of(bucket.getName(), name)).setContentType("application/octet-stream").build(), inputStream, precondition)

BlobId blobId = rs.getBlobId();
URL url =
storage.signUrl(
BlobInfo.newBuilder(blobId).build(),
Duration.ofHours(1).toMillis() - 10000,
TimeUnit.MILLISECONDS,
Storage.SignUrlOption.httpMethod(HttpMethod.GET),
Storage.SignUrlOption.withExtHeaders(Map.of("Content-Type", "application/octet-stream")));

Я получил ссылку вида https://storage.googleapis.com/vocab-be-local/vocab.zip?GoogleAccessId=my-account@vocab-local.iam.gserviceaccount. com&Expires=1715751607&Signature=Vz2G8qr%2Fy%2BN8vR7yiPIQlnpzyaz2s5qGLcTL4nE7w3B6gXprtODGzz8Dk49v%2BMbrCg6IcHi1ZGN9ZNYVZyM7VW3RUZ6QOOIPbA62AEzM1T9UUYIax GYkE7xGCFC3a6LBv%2FCnN6F28eau3wdGpldwC5iwccrwSYIpozK43Whklk%2B%2BHekjq%2Bgn I%2F%2FnuqBWa1Z9P8RBejlz9ajnaxriaFOUyvlBLQBShnxM4q%2BdAJWeFlocMZIk7ZSiGuh1g Ti2HTecxzod9bIRu%2FmhecpMlmPP2PvQSW0dqxMuonfxxxj3Eby7hRXOy6wNKSWU4DqZkUJm29AHOyO1vqgc2KaQevbWdw%3D%3D
Когда я использую это ссылку через Postman или Curl, у меня получилось:


SignatureDoesNotMatch
Access denied.
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
GET

application/octet-stream
1715751607
/vocab-be-local/vocab.zip


Попробовал использовать Webflux WebClient, все равно возникла та же ошибка:
WebClient.create()
.get().uri(d.getImageUrl())
.header("Content-Type", "application/octet-stream")
.retrieve()
.toEntity(byte[].class)
.block()

Я прочитал много вопросов/ответов по этой проблеме. Они предполагают, что мне нужно добавить тип контента при загрузке/подписи. Я сделал это, но не повезло. Пожалуйста, помогите!
ОБНОВЛЕНИЕ:
Spring boot 3.2.0
Spring cloud 2023.0.1
Spring cloud GCP 5.1.2

Мой pom.xml:

org.springframework.boot
spring-boot-starter-webflux


com.google.cloud
spring-cloud-gcp-starter-storage


Мое приложение.yml:
spring:
cloud:
gcp:
credentials:
location: classpath:google/sa/vocab-storage-local.json
storage:
project-id: my-project

Моя учетная запись службы в формате JSON:
{
"type": "service_account",
"project_id": "my-project",
"private_key_id": "***********",
"private_key": "-----BEGIN PRIVATE KEY-----\n********\n-----END PRIVATE KEY-----\n",
"client_email": "******@******.iam.gserviceaccount.com",
"client_id": "*******************",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/********",
"universe_domain": "googleapis.com"
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... h-the-sign
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»