Как получить идентификатор проекта при использовании проверки подлинности области проекта в openstack4j?

authentication openstack

453 просмотра

1 ответ

Я использую openstack4j для проверки подлинности на уровне проекта.

os = OSFactory.builderV3()
     .endpoint("http://controller:5000/v3")
     .scopeToProject(Identifier.byId("1435221d37fd41699101bd739fe4375b"))  
     .credentials("admin", "openstack", Identifier.byName("default"))
     .authenticate();

Это утверждение может быть выполнено правильно. Но моя проблема: перед аутентификацией, как я узнаю идентификатор проекта?

Поэтому я изменил другой способ решения этого вопроса. Сначала я удалил scopeToProjectметод из вышеприведенного кода и успешно прошел аутентификацию с незаданной областью.

os = OSFactory.builderV3()
     .endpoint("http://controller:5000/v3") 
     .credentials("admin", "openstack", Identifier.byName("default"))
     .authenticate();

Я могу получить userId = os.getToken().getUser().getId();. Но когда я выполняю os.identity().users().listUserProjects(userId)проекты, к которым принадлежит этот пользователь, выдается следующее исключение:

java.lang.NullPointerException
at org.openstack4j.openstack.identity.internal.DefaultEndpointURLResolver.resolveV3(DefaultEndpointURLResolver.java:120)
at org.openstack4j.openstack.identity.internal.DefaultEndpointURLResolver.findURLV3(DefaultEndpointURLResolver.java:70)
at org.openstack4j.openstack.internal.OSClientSession$OSClientSessionV3.getEndpoint(OSClientSession.java:388)
at org.openstack4j.core.transport.HttpRequest$RequestBuilder.build(HttpRequest.java:405)
at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:192)
at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:187)
at org.openstack4j.openstack.identity.v3.internal.UserServiceImpl.listUserProjects(UserServiceImpl.java:121)
...

Это исключение token.getCatalog(). Потому что результат getCatelog()равен нулю.

ПРИМЕЧАНИЕ . Я знаю, что на странице входа в панель инструментов openstack пользователю просто нужно ввести имя домена, имя пользователя, пароль, и после этого информация о проекте будет возвращена после аутентификации. Это именно то, что я хочу.

Автор: walsh Источник Размещён: 08.11.2019 11:25

Ответы (1)


0 плюса

Решение

Я назначил проект по умолчанию для пользователя, adminиспользующего панель инструментов openstack, и теперь он работает нормально.

Автор: walsh Размещён: 22.08.2016 08:35
Вопросы из категории :
32x32