F5 позволяет пользователю получить доступ к iControl RESTful API

F5 позволяет пользователю получить доступ к iControl RESTful API

Я пытаюсь взаимодействовать с балансировщиком нагрузки F5 с помощью REST API. Я проверил, что iControl включен, однако, когда я пытаюсь выполнить команду, мне говорят, что я не авторизован.

curl -k -u someone -H "Content-Type: application/json" -X GET https://f5.example.com/mgmt/
Enter host password for user 'someone':
{"code":404,"message":"http://localhost:8100/mgmt/","restOperationId":202459,"errorStack":["com.f5.rest.common.RestWorkerUriNotFoundException: http://localhost:8100/mgmt/","at com.f5.rest.common.RestServer.trySendInProcess(RestServer.java:231)","at com.f5.rest.common.RestRequestReceiver.dispatchToService(RestRequestReceiver.java:93)","at com.f5.rest.common.RestRequestReceiver.processNext(RestRequestReceiver.java:57)","at com.f5.rest.common.RestHelper$2.run(RestHelper.java:1910)","at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)","at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)","at java.lang.Thread.run(Thread.java:722)\n"]}

Мой пользователь аутентифицирован с помощью Active Directory.

Нужно ли мне явно предоставлять пользователю доступ для использования REST API?
Нужно ли мне иметь локальную учетную запись?

Обновлять

Вот еще один пример

Пользователь «someone» на самом деле существует, поскольку именно под этим именем я вхожу на веб-портал.

curl -k -u someone -H "Content-Type: application/json" -X GET https://f5.example.com/mgmt/tm/sys
Enter host password for user 'someone':
{"code":401,"message":"Authorization failed: no user named someone found. Uri:http://localhost:8100/mgmt/tm/sys Referer:null","restOperationId":869853,"errorStack":["java.lang.SecurityException: Authorization failed: no user named someone found. Uri:http://localhost:8100/mgmt/tm/sys Referer:null","at com.f5.rest.workers.ForwarderWorker.evaluatePermission(ForwarderWorker.java:411)","at com.f5.rest.workers.ForwarderPassThroughWorker.onForward(ForwarderPassThroughWorker.java:191)","at com.f5.rest.workers.ForwarderPassThroughWorker.onGet(ForwarderPassThroughWorker.java:321)","at com.f5.rest.common.RestWorker.callDerivedRestMethod(RestWorker.java:735)","at com.f5.rest.common.RestWorker.callRestMethodHandler(RestWorker.java:702)","at com.f5.rest.common.RestServer.processQueuedRequests(RestServer.java:1092)","at com.f5.rest.common.RestServer.access$000(RestServer.java:45)","at com.f5.rest.common.RestServer$1.run(RestServer.java:136)","at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)","at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)","at java.lang.Thread.run(Thread.java:722)\n"]}

решение1

Интерфейс rest не аутентифицируется с использованием обычных методов F5, которые вы настроили. Если вы хотите сделать это, вам нужно создать виртуальный сервер с F5 в качестве члена пула, затем исправить некоторые правила, чтобы убрать пользователя rest, передать это вашей аутентификации... много кода позже... успех.

Rest использует пользователя и роль, локальные для его процессов на f5. Вы создаете пользователя через tmos, затем связываете его с ролью iControl_REST_API_User через PATCH.

решение2

Информацию о поддержке удаленной аутентификации iControl REST см.эта статья на DevCentral F5.

Связанный контент