【问题标题】:How can a RESTful API client save an oAuth token for future requests?RESTful API 客户端如何为将来的请求保存 oAuth 令牌?
【发布时间】:2016-07-09 08:16:17
【问题描述】:

RESTful API 服务需要随每个请求一起发送一个 oAuth 令牌。因此,基于 Java Apache 的客户端必须首先请求令牌......

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;

String loginUrl = "https://jerseyrules.com/api/login1?name=joe&cleartext=schmoe";
HttpMethod method = new GetMethod(loginUrl);
String responseCode = httpClient.executeMethod(method);
String token = method.getResponseBodyAsString();

只有现在客户端才能调用该 API 的实际服务方法,并且它必须将 oAuth 令牌作为每个服务的授权请求标头传递。

假设此客户端代码将在批处理模式下被多次调用,例如向收件人列表发送电子邮件。要发送实际的电子邮件,需要调用 RESTful API 服务。

客户端是否必须为每封电子邮件再次请求 oAuth 令牌?有没有一种方法可以让客户端获得一次 oAuth 令牌并将其保存在某个地方以用于后续调用?保存该 oAuth 令牌的最佳位置是什么?假设令牌将在 3600 秒后过期。

httpClient的cookies可以用来存储token吗..

httpClient.getState().getCookies()

【问题讨论】:

  • 您可以将令牌保存在任何您想要的存储位置。真正重要的是使用正确的机制将其发送到每个后续请求中。通常,令牌将作为自定义标头发送。
  • 谢谢,但是您对存储和重传机制有什么建议吗?
  • 您可以在此处查看示例:github.com/alainlompo/performance-hub/blob/master/gatling/…。如果没有帮助,请尝试分享更详细的来源

标签: java rest session authentication oauth


【解决方案1】:

试试这个:

method.getParams().setCookiePolicy(CookiePolicy.RFC_2109);

http://hc.apache.org/httpclient-3.x/cookies.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2018-06-15
    • 2021-12-08
    • 2012-03-23
    • 1970-01-01
    • 2017-06-11
    • 2019-10-27
    相关资源
    最近更新 更多