//crypto-jsが必要です。 詳細はhttps://www.npmjs.com/package/crypto-jsを参照してください。
function generate_authorization_headers(access_key, secret_key, url, http_method) {
var today = new Date();
var xdate = today.toGMTString();
var reg = /.+?\:\/\/.+?(\/.+?)(?:#|\?|$)/;
var url_path = reg.exec(url)[1];
var signature = "x-date: " + xdate + "\n" + http_method + " " + url_path + " HTTP/1.1";
var hmac_signature = CryptoJS.HmacSHA256(signature, secret_key).toString(CryptoJS.enc.Base64);
var authorization = "hmac username=\"" + access_key + "\", algorithm=\"hmac-sha256\", headers=\"x-date request-line\", signature=\"" + hmac_signature + "\"";
return "-H 'x-date: " + xdate + "' -H 'Authorization: " + authorization + "'";
}
import java.text.SimpleDateFormat
import java.util.*
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
import java.net.URL
fun generate_authorization_headers(
access_key: String,
secret_key: String,
url: String,
http_method: String): Pair<String, String> {
val rfc7231 = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US).apply {
isLenient = false
timeZone = TimeZone.getTimeZone("UTC")
}
val xDate = rfc7231.format(Date())
val url_path = URL(url).getPath()
val encodeData = "x-date: $xDate\n$http_method $url_path HTTP/1.1"
val sha256Hmac = Mac.getInstance("HmacSHA256")
val secretKey = SecretKeySpec(secret_key.toByteArray(), "HmacSHA256")
sha256Hmac.init(secretKey)
val signature = Base64.getEncoder().encodeToString(sha256Hmac.doFinal(encodeData.toByteArray()))
val authorization = "hmac username=\"${access_key}\", algorithm=\"hmac-sha256\", headers=\"x-date request-line\", signature=\"${signature}\""
return Pair(xDate,authorization)
}
3.5 SwaggerHubで"Try it out"
SwaggerHubでは、「Try it out」ボタンを使用してブラウザーから直接API呼び出しをテストできるインタラクティブな方法を提供しています。Mercury Cloud Interactive APIドキュメントでは、この機能を使用する前に特別な認証を行うことが必要です。ここでは、Mercury Cloud InteractiveAPIドキュメントの「Try it out」機能を使用するための方法を解説します。