0

我是 OAuth 2.0 的新手,对用户案例的最佳方法有点不清楚,如下所述。

我有一个 Web 服务,我们用它来从 box.com 中提取数据。它是多线程服务,可以同时从 box.com 拉出多个线程。另外,我们有多个 Web 服务实例,它们将从 box.com 中提取文件。他们确实以某种方式进行协作,这样同一个文件就不会被不同的服务实例拉取两次。如果 Web 服务的一个实例关闭,则工作负载将迁移到其他可用实例。

所以这里有一个问题列表?

  1. box.com java api v2线程提供的BoxClient是否安全?
  2. 如果 BoxClient 不是线程安全的,在实例化新客户端时,我是否需要请求文件夹的用户/所有者批准我对新访问代码的请求?对于文件夹的用户/所有者来说,这似乎是一个相当大的负担。
  3. 如果我保留刷新令牌的副本,我可以创建一个新的 BoxClient 而无需再次经历 oauth 2.0 的舞蹈吗?任何示例代码?
4

2 回答 2

0

github 上提供的 Java SDK 与 Box 用于为 Box 的一些多线程和多服务器进程提供支持的 Java SDK 相同。

至于“保留刷新令牌的副本”一些建议。

  1. 它们只能用于很短的时间窗口。不要打算持有一个刷新令牌并使用它几个月。尽管它可以使用 60 天,但也只能在使用前使用。
  2. 当您使用刷新令牌时,Box 已尝试通过允许您在较短的窗口内多次使用它来使其具有容错性、多服务器和多线程兼容。这样,如果出现网络中断,您可以重试并成功。或者,如果您有多个节点尝试进行刷新,它们都会获得相同的新 AT/RT 对,只要您不开始使用新 AT(这基本上会向 Box 发出信号,表明您确实拥有新的一对,你就可以使用它了)。

希望有帮助。让好问题不断涌现。

于 2014-07-08T23:49:42.990 回答
0

在阅读了一些关于 sdk 的源代码之后,这是我用来获取带有刷新令牌的盒子客户端的代码:

public BoxClient getAuthenticatedClient(String refreshToken, String apiKey, String apiSecret)  {
    BoxResourceHub hub = new BoxResourceHub();
    BoxJSONParser parser = new BoxJSONParser(hub);
    IBoxConfig config = (new BoxConfigBuilder()).build();
    BoxClient client = new BoxClient(apiKey, apiSecret, hub, parser, config);
    Map<String, Object> map = new HashMap<String, Object>();
    map.put(BoxOAuthToken.FIELD_REFRESH_TOKEN, refreshToken);
    BoxOAuthToken bt = new BoxOAuthToken(map);
    client.authenticate(bt);
    return client;
}
于 2014-07-10T16:24:59.937 回答