我正在尝试使用java代码计算aws授权码,但由于出现错误,这是不起作用的:
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代码,我可以用来计算授权码。提前感谢
发布于 2019-02-25 17:00:54
要签名的字符串实际上缺少几个元素,例如区域(参见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
AWS SDK for Java有一个签名者组件,可以为您实现这一点-无需编写您自己的代码https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWS4Signer.html
https://stackoverflow.com/questions/54862491
复制相似问题