netsuite和java_java - 的OAuth 1.0身份验证的NetSuite - SO中文参考 - www.soinside.com

本文介绍了在使用Kotlin尝试为Oracle NetSuite实现OAuth 1.0认证时遇到的问题。代码中展示了设置认证头的过程,但签名生成错误。问题在于签名的计算,尽管遵循了HMAC-SHA1签名的步骤。
摘要由CSDN通过智能技术生成

在徒劳我试图得到的OAuth 1.0认证的Oracle NetSuite的合作。当我生成认证头与邮差它的工作原理,但我的代码,生成的签名错误,尽管我跟所有我能找到如何产生HMAC-SHA1签名的OAuth 1.0的步骤

源代码(科特林)

class NetsuiteAuthenticationScheme {

private val algorithm = "HmacSHA1"

private val charset = Charsets.UTF_8

fun setAuthenticationHeaders(headers: HttpHeaders, url: String?) {

val authentication = mutableMapOf(

"realm" to "REALM",

"oauth_consumer_key" to "CONSUMER_KEY",

"oauth_token" to "TOKEN",

"oauth_signature_method" to "HMAC-SHA1",

"oauth_version" to "1.0",

"oauth_timestamp" to "TIMESTAMP",

"oauth_nonce" to "NONCE"

)

val signatureUrl = listOf(

"POST",

URLEncoder.encode(url, charset.displayName()),

URLEncoder.encode(

URLEncodedUtils.format(

authentication

.toList()

.sortedBy { it.first }

.map { BasicNameValuePair(it.first, it.second) },

charset.displayName()

), charset.displayName()

)

).joinToString("&")

val signatureKey = listOf(

"CONSUMER_SECRET",

"TOKEN_SECRET"

).joinToString("&")

authentication["oauth_signature"] = computeSignature(signatureUrl, signatureKey)

val authenticationHeaderValue = authentication

.toList()

.joinToString { "${it.first}=\"${URLEncoder.encode(it.second, charset.displayName())}\"" }

headers.contentType = MediaType.APPLICATION_JSON

headers.add("Authorization", "OAuth $authenticationHeaderValue")

}

private fun computeSignature(data: String, key: String): String {

val mac = Mac.getInstance(algorithm)

mac.init(SecretKeySpec(key.toByteArray(charset), algorithm))

return Base64.encodeBytes(mac.doFinal(data.toByteArray(charset)))

}

}

我做错了什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值