F5 ermöglicht dem Benutzer den Zugriff auf die iControl RESTful API

F5 ermöglicht dem Benutzer den Zugriff auf die iControl RESTful API

Ich versuche, über die REST-API mit einem F5-Load Balancer zu interagieren. Ich habe überprüft, ob iControl aktiviert ist. Wenn ich jedoch versuche, einen Befehl auszuführen, wird mir mitgeteilt, dass ich nicht autorisiert bin.

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"]}

Mein Benutzer wird gegenüber Active Directory authentifiziert.

Muss ich den Benutzerzugriff für die Verwendung der REST-API explizit gewähren?
Benötige ich ein lokales Konto?

Aktualisieren

Hier ist ein weiteres Beispiel

Der Benutzer „jemand“ existiert tatsächlich, da ich mich mit diesem beim Webportal anmelde.

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"]}

Antwort1

Die Restschnittstelle authentifiziert nicht mit den normalen F5-Methoden, die Sie konfiguriert haben. Wenn Sie dies tun möchten, müssen Sie einen virtuellen Server mit F5 als Poolmitglied erstellen, dann einige Regeln schreiben, um den Restbenutzer zu entfernen, und diese an Ihre Authentifizierung übergeben... viel Code später... Erfolg.

Rest verwendet einen lokalen Benutzer und eine lokale Rolle für seine Prozesse auf dem f5. Sie erstellen den Benutzer über tmos und verknüpfen ihn dann über PATCH mit der Rolle iControl_REST_API_User.

Antwort2

Informationen zur Unterstützung der iControl REST-Remote-Authentifizierung finden Sie unterdieser Artikel auf F5s DevCentral.

verwandte Informationen