Nano Hash - криптовалюты, майнинг, программирование

Ошибка (используйте AWS4-HMAC-SHA256) при загрузке файла на сервер s3

Сообщение об ошибке: Предоставленный вами механизм авторизации не поддерживается. Пожалуйста, используйте AWS4-HMAC-SHA256.

Почтовый запрос Angular js http

 url: 'https://abc.s3.amazonaws.com/', //webAPI exposed to upload the file
       method: 'POST',
           data: {
              key: file.name,
              AWSAccessKeyId: '*****',
              acl: 'private',
              Policy: $scope.policy,
              Signature: $scope.signature,
             "Content-Type": file.type != '' ? file.type : 'application/octet-stream', // content type of the file (NotEmpty)
              file: file

Nodejs (подпись и политика отправляются в переменную области видимости в angular js)

var secretKey = '*******';
var s3Policy = {
    "expiration": "2018-12-01T12:00:00.000Z", // hard coded for testing
    "conditions": [
        { "bucket": "*****" },
        ["starts-with", "$key", ""],
        { "acl": "private" },
        ["starts-with", "$Content-Type", ""],
        {'x-amz-meta-uuid': '14365123651274'},
        {'x-amz-credential': '****/20181212/eu-west-3/s3/aws4_request'},
        {"x-amz-algorithm" : "AWS4-HMAC-SHA256"},
        ["content-length-range", 0, 524288000]
    ],
};
var stringPolicy = JSON.stringify(s3Policy);
var base64Policy = Buffer(stringPolicy, "utf-8").toString("base64");
var signature = crypto.createHmac("sha256", secretKey)
    .update(new Buffer(base64Policy, "utf-8")).digest("base64");
var s3Credentials = {
    s3Policy: base64Policy,
    s3Signature: signature
};

Как можно решить этот вопрос? Я пробовал все возможные методы, но это не работает.


  • Кто-нибудь в это? 10.07.2018

Ответы:


1

Вы смешиваете и сочетаете элементы из Signature V4 и Signature V2. Это несовместимые алгоритмы.

Ваша политика выглядит как версия 4, но ваша подпись и форма, которую вы публикуете, относятся к версии 2. AWS4-SHA256-HMAC — это Signature V4, и сообщение об ошибке указывает, что ваш сегмент находится в регионе, который поддерживает только V4... поэтому весь ваш код должен использовать логику V4.

Просмотрите https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html

10.07.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..