【问题标题】:Play Scala WS Oauth 1.0 - How to set realm oauth parameter?Play Scala WS Oauth 1.0 - 如何设置领域 oauth 参数?
【发布时间】:2016-07-11 15:51:07
【问题描述】:

使用 play-ws 2.4.6 和 NingWSClient,是否可以在 Authentication 标头中设置领域?我正在尝试使用需要设置 OAuth 领域参数的 NetSuite 的 REST 1.0 API。

这是我目前正在使用的一些示例代码:

val requestToken = RequestToken("*****", "*****")
val consumerKey = ConsumerKey("*****", "*****")
val oauthCalc = OAuthCalculator(consumerKey, requestToken)

val request: WSRequest =  ws.url("https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=554&deploy=1")
  .withHeaders("Content-Type" -> "application/json").sign(oauthCalc)
request.get()

Netsuite 无法识别没有领域的 OAuth 请求,报告:USER_ERROR 标头不是 NLAuth 方案。使用 Postman rest 应用程序,当未提供领域时,我能够从 NetSuite 重现相同的错误。然后在邮递员中添加领域时,请求成功通过。

【问题讨论】:

  • Oauth 1 还是 2?另外,我认为您可以手动将领域设置为 Authorization 标头的一部分
  • Oauth 1.0。在 Authorization 标头中手动设置领域时,.sign 方法会覆盖 Authorization 标头并且不会附加到它。我可以通过自己创建 HMAC-SHA1 签名并手动构建 Authorization 标头而不是使用 .sign 方法来解决此问题。

标签: scala oauth playframework netsuite


【解决方案1】:

我能够通过自己创建 HMAC-SHA1 签名并手动构建 Authorization 标头而不是使用 .sign 方法来解决此问题。

【讨论】:

  • 我很好奇你是否知道如何让它在不手动构建标题的情况下添加领域?
  • 是的,我最终扩展了 OAuthCalculator 和 OAuthSignatureCalculator 类,以便可以将领域参数传递给它们。然后在 OAuthSignatureCalculator 中,您可以覆盖 calculateAndAddSignature 方法,以便您可以将领域标头附加到 headerValue 字符串。必须重写 OAuthSignatureCalculator 中的私有constructAuthHeader 方法,以便我可以在扩展的 OAuthSignatureCalculator 中使用它。
猜你喜欢
  • 2012-01-24
  • 2020-03-12
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2019-07-19
  • 2014-10-14
  • 1970-01-01
相关资源
最近更新 更多