Не удается рассчитать код авторизации для AWS S3 с использованием кода Java? - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь вычислить код авторизации aws, используя код Java, но он не работает, выдавая ошибку:

String host = "bucketname" + ".s3-us-east-2.amazonaws.com";
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.HOUR_OF_DAY, 24);
        long expireTime = cal.getTimeInMillis() / 1000;

        String signString = "GET\n" +
            "\n" +
            "\n" +
            expireTime + "\n" +
            "/" + "testingsagar" + "location";

        SecretKeySpec signingKey = new SecretKeySpec(SECRET_KEY.getBytes(), HMAC_SHA1_ALGORITHM);
        Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
        mac.init(signingKey);
        String signature = URLEncoder.encode(new String(Base64.getEncoder().encode(mac.doFinal(signString.getBytes()))));

        System.out.println(signature);
        String fullPayload = "?AWSAccessKeyId=" + ACCESS_KEY +
            "&Expires=" + expireTime + 
            "&Signature=" + signature;

        System.out.println("http" + "://" + host + "" + fullPayload);

Может кто-нибудь предложить мне код Java, который я могу использовать для вычисления кода авторизации.Заранее спасибо

1 Ответ

0 голосов
/ 25 февраля 2019

В строке для подписи фактически отсутствует пара элементов, например, регион (см. https://docs.aws.amazon.com/general/latest/gr/sigv4_elements.html)

См. Пример кода Java здесь https://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-java

AWSSDK для Java имеет компонент Signer, который реализует это для вас - вам не нужно писать собственный код https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWS4Signer.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...