Closed gugia closed 8 years ago
Hey @gugia, What version of OpenStack4j are you using? When v3-authentication using the latest release (2.0.8) you will need to provide a project scope. In the future we'll be able to support full v3 authentication. We're already working on it.
This it how it works for now
with userName+password+domainId+projectScope
OSFactory.builderV3()
.endpoint(authUrl)
.credentials(userName, password, Identifier.byName(userDomainId))
.scopeToProject(Identifier.byId(projectId), Identifier.byId(projectDomainId))
.authenticate();
or with userId+password+projectScope
OSFactory.builderV3()
.endpoint(authUrl)
.credentials(userId, password)
.scopeToProject(Identifier.byId(projectId), Identifier.byId(projectDomainId))
.authenticate();
or with a token
OSFactory.builderV3()
.endpoint(authUrl))
.token(tokenId)
.scopeToProject(Identifier.byId(projectId), Identifier.byId(projectDomainId))
.authenticate());
Thanks. I will try again as soon as working on Monday.
/* ***** */
Cause I dont know what <projectDomainId>
it is, i use v2 instead of v3.
Now it goes well.
<Exception in thread "main" ConnectionException{message=Already connected, status=0} at org.openstack4j.connectors.jersey2.HttpExecutorServiceImpl.invoke(HttpExecutorServiceImpl.java:58) at org.openstack4j.connectors.jersey2.HttpExecutorServiceImpl.execute(HttpExecutorServiceImpl.java:33) at org.openstack4j.core.transport.internal.HttpExecutor.execute(HttpExecutor.java:51) at org.openstack4j.openstack.internal.OSAuthenticator.authenticateV2(OSAuthenticator.java:117) at org.openstack4j.openstack.internal.OSAuthenticator.invoke(OSAuthenticator.java:50) at org.openstack4j.openstack.client.OSClientBuilder$ClientV2.authenticate(OSClientBuilder.java:117) at org.openstack4j.openstack.client.OSClientBuilder$ClientV2.authenticate(OSClientBuilder.java:81) at com.xkt.cloudapp.xktcloudapp.App.auv2(App.java:50) at com.xkt.cloudapp.xktcloudapp.App.main(App.java:31) Caused by: javax.ws.rs.ProcessingException: Already connected at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:233) at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:656) at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:653) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:228) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424) at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:653) at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:413) at org.openstack4j.connectors.jersey2.HttpCommand.execute(HttpCommand.java:79) at org.openstack4j.connectors.jersey2.HttpExecutorServiceImpl.invokeRequest(HttpExecutorServiceImpl.java:65) at org.openstack4j.connectors.jersey2.HttpExecutorServiceImpl.invoke(HttpExecutorServiceImpl.java:56) ... 8 more Caused by: java.lang.IllegalStateException: Already connected at sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(HttpURLConnection.java:3014) at sun.net.www.protocol.https.HttpsURLConnectionImpl.setRequestProperty(HttpsURLConnectionImpl.java:316) at org.glassfish.jersey.client.HttpUrlConnector.setOutboundHeaders(HttpUrlConnector.java:348) at org.glassfish.jersey.client.HttpUrlConnector.access$100(HttpUrlConnector.java:87) at org.glassfish.jersey.client.HttpUrlConnector$3.getOutputStream(HttpUrlConnector.java:311) at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:200) at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:194) at org.glassfish.jersey.message.internal.CommittingOutputStream.commit(CommittingOutputStream.java:262) at org.glassfish.jersey.message.internal.OutboundMessageContext.commitStream(OutboundMessageContext.java:811) at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:543) at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:315) at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:227) at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:224) ... 19 more>
OSClient os = OSFactory.builder().endpoint("https://public.fuel.local:5000/v2.0/") .credentials("name", "password").tenantName("admin").authenticate();
The code above was working. But a problem("Already connected") came out after Openstack re-installation. Then I used REST to send request to authentication address. I cound not get normal response until the checkbox of following picture is checked.@auhlig
Hi @gugia, It's worth trying to apply configuration to the OSClient
.withConfig(Config.newConfig().withSSLContext(SSLContext sslContext))
as described here http://www.openstack4j.com/javadoc/org/openstack4j/core/transport/Config.html#withSSLContext .
I hope that helps you.
I also think we're digressing here. Maybe your question is something for stackoverflow?
Sorry, my bad.Thank you @auhlig .
Exception in thread "main" java.lang.NoSuchMethodError: javax.ws.rs.core.Response.close()V at org.openstack4j.connectors.resteasy.HttpResponseImpl.close(HttpResponseImpl.java:123) at org.openstack4j.core.transport.HttpEntityHandler.closeQuietly(HttpEntityHandler.java:118) at org.openstack4j.core.transport.HttpEntityHandler.handle(HttpEntityHandler.java:68) at org.openstack4j.connectors.resteasy.HttpResponseImpl.getEntity(HttpResponseImpl.java:64) at org.openstack4j.connectors.resteasy.HttpResponseImpl.getEntity(HttpResponseImpl.java:51) at org.openstack4j.openstack.internal.OSAuthenticator.authenticateV3(OSAuthenticator.java:196) at org.openstack4j.openstack.internal.OSAuthenticator.invoke(OSAuthenticator.java:74) at org.openstack4j.openstack.client.OSClientBuilder$ClientV3.authenticate(OSClientBuilder.java:172) at org.openstack4j.openstack.client.OSClientBuilder$ClientV3.authenticate(OSClientBuilder.java:129) at com.example.openstack.keystone.main(keystone.java:21)
i'm experiencing this error when i get my token..
Please help me to solve it..
Always return AuthenticationException{message=Unauthorized, status=401} my code: Identifier domainIdentifier = Identifier.byName("defalut"); OSClient os = OSFactory.builderV3().endpoint("http://10.3.30.145:35357/v3") .credentials("demo", "demo", domainIdentifier).authenticate(); OP Dashboard: