F5를 사용하면 사용자가 iControl RESTful API에 액세스할 수 있습니다.

F5를 사용하면 사용자가 iControl RESTful API에 액세스할 수 있습니다.

REST API를 사용하여 F5 로드 밸런서와 상호 작용하려고 합니다. 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를 사용하려면 사용자 액세스 권한을 명시적으로 부여해야 합니까?
로컬 계정이 필요합니까?

업데이트

여기 또 다른 예가 있습니다

웹 포털에 로그인하는 방법이므로 '누군가'라는 사용자가 실제로 존재합니다.

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

나머지 인터페이스는 구성한 일반적인 F5 방법을 사용하여 인증하지 않습니다. 이를 수행하려면 F5를 풀 멤버로 사용하여 가상 서버를 생성한 다음 일부 irule을 수정하여 나머지 사용자를 제거하고 이를 인증에 전달해야 합니다. 나중에 많은 코드가 필요합니다. 성공합니다.

Rest는 f5의 프로세스에 로컬인 사용자 및 역할을 사용합니다. tmos를 통해 사용자를 생성한 다음 PATCH를 통해 iControl_REST_API_User 역할에 연결합니다.

답변2

iControl REST 원격 인증 지원에 대해서는 다음을 참조하세요.F5의 DevCentral에 대한 이 기사.

관련 정보