无法使用最新的 OpenStack 验证 Swift ContextBuilder

Can't Get Authenticate Swift ContextBuilder with Latest OpenStack

我已经安装了最新的 OpenStack,我正在使用 Java 和 jclouds SDK 与 OpenStack 交互 Swift,在我使用的 OpenStack 环境中,身份 API版本是/identity/v3/,Swift API版本是v1/,我的代码是:

blobContext = ContextBuilder.newBuilder(PROVIDER)
        .credentials(username, apiKey)
        .endpoint(EndPoint)
        .overrides(multipartProperties)
        //.buildApi(RegionScopedBlobStoreContext.class);
        .buildView(RegionScopedBlobStoreContext.class);
String blobRegion = blobContext.getConfiguredRegions().iterator().next();

所以在行 String blobRegion = blobContext.getConfiguredRegions().iterator().next(); 我得到了异常:

request: POST http://devstack.####.com:#####/v1/tokens HTTP/1.1  [Sensitive data in payload, use jclouds.wire.log.sensitive override to enable logging this data.] failed with response: HTTP/1.1 401 Unauthorized

此代码过去曾有效,但过去我没有使用最新的 OpenStack,重要的是我的身份服务 Project-scoped 不是域范围(参考this link) swift API 是:http://devstack.####.com:#####/v1/ 我正在使用最新的 jclouds API

而且我相信这个问题会出现在所有的ContextBuilder中,所以我有没有办法解决这个问题?

谢谢

要针对新的 OpenStack 环境(运行 Keystone v3)使用 jclouds,您必须使用 jclouds >= 2.1.0 并使用适当的 Keystone 属性配置 ContextBuilder,如下所述: https://jclouds.apache.org/blog/2018/01/16/keystone-v3/