
Estoy intentando interactuar con un equilibrador de carga F5 utilizando la API REST. He verificado que iControl está habilitado; sin embargo, cuando intento ejecutar un comando, me dicen que no estoy autorizado.
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"]}
Mi usuario está autenticado en Active Directory.
¿Necesito otorgar explícitamente acceso al usuario para usar la API REST?
¿Necesito tener una cuenta local?
Actualizar
Aquí hay otro ejemplo
De hecho, el usuario "alguien" existe, ya que así es como inicio sesión en el portal web.
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"]}
Respuesta1
La interfaz restante no se autentica utilizando los métodos F5 normales que ha configurado. Si desea hacer esto, debe crear un servidor virtual con F5 como miembro del grupo, luego corregir algunas reglas para eliminar al resto de usuarios, pasar eso a su autenticación... mucho código más adelante... éxito.
Rest utiliza un usuario y un rol local para sus procesos en f5. Usted crea el usuario a través de tmos y luego lo asocia al rol iControl_REST_API_User a través de PATCH.
Respuesta2
Para obtener soporte de autenticación remota iControl REST, consulteeste artículo sobre DevCentral de F5.