Java 无法使用最新的OpenStack获取身份验证Swift ContextBuilder

Java 无法使用最新的OpenStack获取身份验证Swift ContextBuilder,java,openstack-swift,jclouds,Java,Openstack Swift,Jclouds,我已经安装了最新的OpenStack,我正在使用Java和jclouds SDK与OpenStack Swift进行交互,在我使用的OpenStack环境中,identity API版本为/identity/v3/,Swift API版本为v1/,我的代码是: blobContext = ContextBuilder.newBuilder(PROVIDER) .credentials(username, apiKey) .endpoint(EndPoint)

我已经安装了最新的OpenStack,我正在使用Java和jclouds SDK与OpenStack Swift进行交互,在我使用的OpenStack环境中,identity 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();
因此,在行字符串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,重要的是我的标识服务是项目范围的,而不是域范围的 而swift API是:http://devstack..com:/v1/ 我正在使用最新的jcloudsapi

我相信这个问题会出现在所有的ContextBuilder中,那么我能解决这个问题吗


感谢

要在运行Keystone v3的新OpenStack环境中使用jclouds,您必须使用jclouds>=2.1.0,并使用适当的Keystone属性配置ContextBuilder,如下所述: